| Index: chrome/common/extensions/docs/server2/handler.py
|
| diff --git a/chrome/common/extensions/docs/server2/handler.py b/chrome/common/extensions/docs/server2/handler.py
|
| index 4f4f9de7e68122109841c36d7d2bf25b61913b0f..3db64ef4ea73dba14691d8f1baf32330c70a02a1 100644
|
| --- a/chrome/common/extensions/docs/server2/handler.py
|
| +++ b/chrome/common/extensions/docs/server2/handler.py
|
| @@ -39,7 +39,7 @@ OMAHA_PROXY_URL = 'http://omahaproxy.appspot.com/json'
|
| BRANCH_UTILITY_MEMCACHE = AppEngineMemcache('branch_utility')
|
| BRANCH_UTILITY = BranchUtility(OMAHA_PROXY_URL,
|
| DEFAULT_BRANCH,
|
| - AppEngineUrlFetcher(''),
|
| + AppEngineUrlFetcher(None),
|
| BRANCH_UTILITY_MEMCACHE)
|
|
|
| STATIC_DIR_PREFIX = 'docs/server2'
|
| @@ -56,7 +56,8 @@ FULL_EXAMPLES_PATH = DOCS_PATH + '/' + EXAMPLES_PATH
|
| # Global cache of instances because Handler is recreated for every request.
|
| SERVER_INSTANCES = {}
|
|
|
| -def _GetInstanceForBranch(branch, local_path):
|
| +def _GetInstanceForBranch(channel_name, local_path):
|
| + branch = BRANCH_UTILITY.GetBranchNumberForChannelName(channel_name)
|
| if branch in SERVER_INSTANCES:
|
| return SERVER_INSTANCES[branch]
|
| if branch == 'local':
|
| @@ -82,7 +83,7 @@ def _GetInstanceForBranch(branch, local_path):
|
| API_PATH,
|
| samples_data_source_factory)
|
| template_data_source_factory = TemplateDataSource.Factory(
|
| - branch,
|
| + channel_name,
|
| api_data_source_factory,
|
| api_list_data_source,
|
| intro_data_source,
|
| @@ -105,6 +106,12 @@ def _GetURLFromBranch(branch):
|
| return TRUNK_URL + '/src'
|
| return BRANCH_URL + '/' + branch + '/src'
|
|
|
| +def _CleanBranches():
|
| + numbers = BRANCH_UTILITY.GetAllBranchNumbers()
|
| + for key in SERVER_INSTANCES.keys():
|
| + if key not in numbers:
|
| + SERVER_INSTANCES.pop(key)
|
| +
|
| class Handler(webapp.RequestHandler):
|
| def __init__(self, request, response, local_path=EXTENSIONS_PATH):
|
| self._local_path = local_path
|
| @@ -112,23 +119,21 @@ class Handler(webapp.RequestHandler):
|
|
|
| def _NavigateToPath(self, path):
|
| channel_name, real_path = BRANCH_UTILITY.SplitChannelNameFromPath(path)
|
| - branch = BRANCH_UTILITY.GetBranchNumberForChannelName(channel_name)
|
| # TODO: Detect that these are directories and serve index.html out of them.
|
| if real_path.strip('/') == 'apps':
|
| real_path = 'apps/index.html'
|
| if real_path.strip('/') == 'extensions':
|
| real_path = 'extensions/index.html'
|
| - # TODO: This leaks Server instances when branch bumps.
|
| - _GetInstanceForBranch(branch, self._local_path).Get(real_path,
|
| - self.request,
|
| - self.response)
|
| + _CleanBranches()
|
| + _GetInstanceForBranch(channel_name, self._local_path).Get(real_path,
|
| + self.request,
|
| + self.response)
|
|
|
| def get(self):
|
| path = self.request.path
|
| if '_ah/warmup' in path:
|
| logging.info('Warmup request.')
|
| - if DEFAULT_BRANCH != 'local':
|
| - self._NavigateToPath('trunk/extensions/samples.html')
|
| + self._NavigateToPath('trunk/extensions/samples.html')
|
| self._NavigateToPath('dev/extensions/samples.html')
|
| self._NavigateToPath('beta/extensions/samples.html')
|
| self._NavigateToPath('stable/extensions/samples.html')
|
|
|