1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-23 07:12:41 +01:00

When building a config stack, stop SiteSource objects from poisoning the cache

Summary:
Ref T13168. I'm not sure how this worked before, but I ran into this issue on my new laptop.

SiteSource accesses `PhabrictatorEnv::getEnvConfig('phabricator.base-uri')` when local, which may poison the cache and lock the value since we don't later discard the cache.

Specifically, when I access `http://locala.phacility.com`, I was getting an error like "You made a request for locala.phacility.com, but no configured site can serve this request.". This was because the base-uri was being incorrectly frozen as "local.phacility.com". The expectation is that it will match, so the standard PlatformSite will serve the request.

Test Plan:
  - Before change: "no configured site" error.
  - After change: local instance works properly.

Reviewers: amckinley

Reviewed By: amckinley

Maniphest Tasks: T13168

Differential Revision: https://secure.phabricator.com/D19526
This commit is contained in:
epriestley 2018-07-20 14:36:07 -07:00
parent eb80a5ede1
commit 96a8b89fa8

View file

@ -221,6 +221,10 @@ final class PhabricatorEnv extends Phobject {
foreach ($site_sources as $site_source) { foreach ($site_sources as $site_source) {
$stack->pushSource($site_source); $stack->pushSource($site_source);
// If the site source did anything which reads config, throw it away
// to make sure any additional site sources get clean reads.
self::dropConfigCache();
} }
$masters = PhabricatorDatabaseRef::getMasterDatabaseRefs(); $masters = PhabricatorDatabaseRef::getMasterDatabaseRefs();
@ -259,6 +263,10 @@ final class PhabricatorEnv extends Phobject {
throw $ex; throw $ex;
} }
} }
// Drop the config cache one final time to make sure we're getting clean
// reads now that we've finished building the stack.
self::dropConfigCache();
} }
public static function repairConfig($key, $value) { public static function repairConfig($key, $value) {