Releases: neighborhoods/kojo
Releases · neighborhoods/kojo
Fix reschedule crashed Jobs race condition
- Tolerating the exception and release the lock for the time being until the
Models
behavior can be redesigned.
Kill parent and shutdown on Redis \Throwable
Kill the parent Worker (Job) Process when the Redis Watchdog Process encounters a Redis \Throwable and shutdown the Redis Watchdog process.
In the future it would be good to send a SIGUSR to the parent Worker Process to indicate that the Redis Watchdog Process was registered and it was safe for the Worker Process to proceed using the distributed mutex subsystem.
Remove remaining kojospace notices
Leverage ErrorException to add fork failure context
- whitespace
- try/catch fork syscall
- attach ErrorException to Forked Exception
- update runtime exception interface
- Exit Server Process if a Root Process cannot be added as a child.
- Remove Server Alarm Process Type.
- Remove Server Fill Process Type.
- Add inspection suppression - the error handler throws this.
- Add Process exit debug log event.
Fixes to signal handling, updates to logging, add error handler, handle fork fault (OOM), disable signal buffering for non-reactive Procs
- cleanup bin/kojo
- create and use an aggressive error handler for kojo space
- restore to VM error handler for user space
- update kojo container builder to comply with symfony deprecations
- make Mucha happy with newlines and some whitespace updates
- remove wait counting
- remove block and unblock
- update many log levels from info to debug
- remove pcntl_sigwaitinfo
- expose toggling signal buffering on and off
- catch and gracefully handle fork faults
- add a Forked Exception
- disable signal buffer for non-reactive processes
- catch a signal processor throwable
Fix DB schema commands
Improve Throwable Logging
- Catch
\Throwable
s instead of Exceptions. - Use the
\Throwable
message as the logged message. - Use the
\Throwable
__toString
method as the logged context. - Deprecate
Logger\FormatterInterface::getFormattedThrowableMessage
.
Gracefully handle existing RDBMS custom types during kōjō setup and teardown
(custom types means user-defined enums, domains, etc)
JSON Serialized Log Context
$this->getApiV1WorkerService()->getLogger()->notice('MESSAGE', ['w00t!', 'p00t'=>'!']);
produces
{
"time": "Fri, 21 Dec 18 22:13:17.905085 UTC",
"level": "notice",
"process_id": "793",
"process_path": "\/server[781]\/root[785]\/job[793]",
"message": "MESSAGE",
"context": {
"0": "w00t!",
"p00t": "!"
},
"context_json_last_error": 0
}
whilst
$this->getApiV1WorkerService()->getLogger()->notice('MESSAGE', [NAN]);
produces
{
"time": "Fri, 21 Dec 18 21:45:26.754997 UTC",
"level": "notice",
"process_id": "742",
"process_path": "\/server[734]\/root[738]\/job[742]",
"message": "MESSAGE",
"context": [
],
"context_json_last_error": 7
}
Optimized server and worker process pool strategies
- Optimized server and worker process pool strategies.