@@ -8,23 +8,18 @@ Throttle provides semaphores as a service via an http interface. As the name ind
88
99Throttle aims to be easy to operate, well-behaved in edge cases and works without a persistence backend.
1010
11- ## Warning
12-
13- Work in progress.
14-
15- * Not yet optimized
16- * Unstable interfaces
17-
1811## Features
1912
20- * Server builds and runs on Windows, Linux, and OS-X
21- * Python Client available
22- * Locks expire to prevent leaking semaphore count due to Network errors or client crashes
23- * Locks can be kept indefinetly by sending heartbeats of the server.
24- * Fairness
25- * Locks with a large count wont get starved by locks with a small count.
26- * No persistence backend required
27- * Server recovers state from heartbeats in case of reboot
13+ * Server builds and runs on Windows, Linux, and OS-X.
14+ * Python Client is available.
15+ * Fairness (longer waiting peers have priority)
16+ * Peers acquiring locks with a large count, won't be starved by lots of others with a small one.
17+ * Locks expire to prevent leaking semaphore count due to Network errors or client crashes.
18+ * Locks can be prolonged indefinetly by sending heartbeats of the server.
19+ * No persistence backend is required.
20+ * Server recovers state from heartbeats in case of reboot.
21+
22+ * Work in progress, interfaces are still unstable.*
2823
2924## Usage
3025
@@ -101,6 +96,9 @@ throttle_count{semaphore="A"} 0
10196# HELP throttle_full_count New leases which would increase the count beyond this limit are pending.
10297# TYPE throttle_full_count gauge
10398throttle_full_count{semaphore="A"} 42
99+ # HELP throttle_longest_pending_sec Time the longest pending peer is waiting until now, to acquire a lock to a semaphore.
100+ # TYPE throttle_longest_pending_sec gauge
101+ throttle_longest_pending_sec{semaphore="A"} 0
104102# HELP throttle_num_404 Number of Get requests to unknown resource.
105103# TYPE throttle_num_404 counter
106104throttle_num_404 0
0 commit comments