mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-15 10:00:55 +01:00
(stable) Disconnect rate limits in the PhabricatorStartup shutdown handler
This makes counts more accurate, particularly for connection limits.
This commit is contained in:
parent
9365c6c999
commit
e21d603356
1 changed files with 9 additions and 0 deletions
|
@ -150,6 +150,11 @@ final class PhabricatorStartup {
|
||||||
* @task hook
|
* @task hook
|
||||||
*/
|
*/
|
||||||
public static function didShutdown() {
|
public static function didShutdown() {
|
||||||
|
// Disconnect any active rate limits before we shut down. If we don't do
|
||||||
|
// this, requests which exit early will lock a slot in any active
|
||||||
|
// connection limits, and won't count for rate limits.
|
||||||
|
self::disconnectRateLimits(array());
|
||||||
|
|
||||||
$event = error_get_last();
|
$event = error_get_last();
|
||||||
|
|
||||||
if (!$event) {
|
if (!$event) {
|
||||||
|
@ -730,6 +735,10 @@ final class PhabricatorStartup {
|
||||||
public static function disconnectRateLimits(array $request_state) {
|
public static function disconnectRateLimits(array $request_state) {
|
||||||
$limits = self::$limits;
|
$limits = self::$limits;
|
||||||
|
|
||||||
|
// Remove all limits before disconnecting them so this works properly if
|
||||||
|
// it runs twice. (We run this automatically as a shutdown handler.)
|
||||||
|
self::$limits = array();
|
||||||
|
|
||||||
foreach ($limits as $limit) {
|
foreach ($limits as $limit) {
|
||||||
$limit->didDisconnect($request_state);
|
$limit->didDisconnect($request_state);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue