Releases: lucasnetau/php-ec
Shutdown Order
Improve shutdown handling when actions exit on their own before input processes have exited
BugFixes
Management Server
Implement a basic HTTP management server to view into the state of a running Scheduler
Update TimeBucket dependancies
Remove TimeBucket dependancy as it is not a hard requirement for PHP-EC
Bug Fix
Fix instances that may have the old PHP7.4+ serialisation format from v0.2.10-v0.2.12
Custom Object Serialisation support
Implement support for PHP7.4+ custom object serialisation https://wiki.php.net/rfc/custom_object_serialization. This introduces a new format for the save file, the older serialize/unserialize methods are left to support restoring previous version state files. This fixes deprecation messages from PHP8.1 which has deprecated the Serializable Interface.
More pedantic validation when restoring state and early failure and exit if we cannot load from saved state.
Improved Error Handling
Improve our error handling for source and action processes. Setup sensible ini params and error handlers when requested to ensure we don't leak warnings/errors etc down the interprocess pipes.
Error Handling
-
Add unhandled exception handling to the ActionHelper class
-
Support millisecond granularity of events
Infinite Loop
Fix an Infinite Recursion Loop bug that could be triggered by a timed out Rule that emits an event and does not set a flag prior to that to ensure it doesn't continue to emit the same event. The Scheduler will continue to process the event and give it to the Correlation Engine, which then checks timeouts creating the loop.
Small fix to shutdown process when all input processes exit unexpectedly
Input/Action logging with levels
Add JsonRPC method of log to the scheduler to allow input and action processes to send log messages along with a logLevel through to the scheduler to be added to the PSR3 log. This allows a log level to be recorded instead of being logged as an error coming via the STDERR pipe.
Improved Shutdown
Improve the shutdown process, extending to Rules and Actions
Change CorrelationEngine initialisation in the Scheduler to allow access to set the engine to live timing in subclasses