Sergeant

Latest version: v0.27.0

Safety actively analyzes 723177 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 3 of 6

0.20.2

- Fix some `slave` edge cases where throwing exception propagated to the supervisor and caused it to exit abnormally

0.20.1

- Remove tests and cache from the source distribution
- Mypy fixes

0.20.0

<h1>Changelist</h1>

- We've been experiencing production issues for a while regarding stalled workers. After a rigorous investigation, we saw there were background threads that kept running. The issue with such threads is that sometimes they were non-daemonic threads, meaning that the Python's interpreter will not exit unless these threads will finish their execution. These threads were stuck in a deadlock and would have never been finished. We've added a background threads protection at the end of the Slave's execution. The protection consists of two phases. The first tries to stop the threads mildly by raising a SystemExit exception in the threads using an internal Python API, then joining the threads for 2 seconds waiting for the thread to finish. If there are unkillable threads left, and slave would kill itself with a SIGKILL resulting in a non-interruptable exit.
- Tests coverage has increased
- Slave logic has been refactored resulting in a clearer more debuggable version
- Supervisor code changes to reflect the Slave's logic change

0.19.0

- Fix stop logic to stop workers in progress while one of the slaves asked to stop
- Improved code coverage and added more tests
- Removed unnecessary exception catching to propagate exceptions while they happen
- Worker now has a logger once it gets created.

0.18.4

- Once one of the slaves asks to stop, all the others would not be respawned by the supervisor.

0.18.3

<h1>Changelist:</h1>

- added killer shutdown call on worker's exit to make sure the worker is able to shutdown properly, and if not, it will get killed by the killer
- replace printing a stacktrace when logstash is not responding with just a one line error message
- call init_logger before calling init_broker to allow logging the failure of initializing the broker

<h1>Breaking Changes:</h1>

- Replace emitter["filename"] with emitter["pathname"]. logstash handler now sends a different key name, pathname instead of filename.

Page 3 of 6

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.