- Updated dependencies
- Release to crates.io
- Fix: Reintroduce shutdown with Ctrl+C
- Updated Readme
- Litter collection, which is responsible for removing peers and freeing their leases, if they did timeout no longer checks in regulare intervals for expired peers. Instead any expiration is acted upon immediatly at the earliest possible point in time. This makes throttles behaviour in these kind of edge cases more deterministic. The
litter_collection_interval
configuration option no longer holds any meaning. remove_expired_peers
function has been removed from both the Rust and the Python Client. It is now impossible for expired peers to still be tracked and to hold pending locks. Therfore the post condition of the function is always satisfied.
- Identical to
0.4.6
. Fixes bug in wheel release process
- Identical to
0.4.6
. Fixes bug in wheel release process
- Updated dependencies
- Fix docker build
- Migrated throttle server from actix to axum
- Updated dependencies
- Updated dependencies
- Release binaries for linux and OS-X
- Updated dependencies
- Updated dependencies
- Dropped support for logging to graylog.
- Updated dependencies
- Fix: Fixed an issue with Semaphore names containing slashes or ampersands would not always be correctly percent decoded if passed in URL paths.
- Updated dependencies
- Updated dependencies
- Deployed
throttle
image to dockerhub
- Updated dependencies
- Updated dependencies
- Test release process, no changes.
- Add Rust client http layer
- Statically link C runtime for windows.
- Updated dependencies
- Publish server wheels to pypi
- Test release - no changes
- Lock hierachies are enforced.
- High level python interface entry points are now
Peer
andLock
rather thanClient
andLock
. - Removed HTTP route
/freeze
. - Recover from unknown peer is now handled on the client side.
- Uses new route
/restore
.
- Uses new route
- Removed
Peer.has_pending()
. - Acquiring locks is now idempotent
- One peer can now hold multiple locks
- Log level to stderr can now be configured in
throttle.toml
.
- Fix: Pending leases are now acquired immediatly. Previously their acquiration could have been delayed if the peer holding the lock previously did expire, rather than release its lock.
- New route
is_acquired
tells if all the locks of a peer could be acquired.
- Fix: Releasing locks, did fail to stop other locks from pending if a higher priority lock had already been acquired.
- Favicon route is now
favicon.ico
instead offavicon
. - Add route
version
to display current version number.
- Fix: 0.1.6 introduced a behaviour, there acquiring a lock would always fail initialy, for all but the first peer.
- Fairness
- Large semaphores don't starve
- Python Client:
Client
can now be pickeled again.
- Python Client: Use tenacity for all requests
- Python Client:
lock
will no longer throw in case of a timeout during the release of the semaphore.
Fix: pip installing python client now also installs requests
dependencies, which has been missing from install_requires
.
Fixes a type error in the python client occuring then checking the timeout for a pending lock if the timeout is set to None
.
Initial Release