1
0
Fork 0
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:
epriestley 2017-10-14 07:14:31 -07:00
parent 9365c6c999
commit e21d603356

View file

@ -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);
} }