Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1936)

Unified Diff: chrome/common/extensions/docs/server2/refresh_servlet.py

Issue 1151283007: Docserver overhaul: Gitiles away from me. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove inform_users template to fix presubmit failure (it's now a redirect) Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/common/extensions/docs/server2/refresh_servlet.py
diff --git a/chrome/common/extensions/docs/server2/refresh_servlet.py b/chrome/common/extensions/docs/server2/refresh_servlet.py
deleted file mode 100644
index 3c8d4e3390aa064dd17692f06aa4775eda44ac8c..0000000000000000000000000000000000000000
--- a/chrome/common/extensions/docs/server2/refresh_servlet.py
+++ /dev/null
@@ -1,163 +0,0 @@
-# Copyright 2014 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import traceback
-
-from app_yaml_helper import AppYamlHelper
-from appengine_wrappers import IsDeadlineExceededError, logservice, taskqueue
-from branch_utility import BranchUtility
-from commit_tracker import CommitTracker
-from compiled_file_system import CompiledFileSystem
-from custom_logger import CustomLogger
-from data_source_registry import CreateDataSource
-from environment import GetAppVersion
-from file_system import IsFileSystemThrottledError
-from future import Future
-from gcs_file_system_provider import CloudStorageFileSystemProvider
-from github_file_system_provider import GithubFileSystemProvider
-from host_file_system_provider import HostFileSystemProvider
-from object_store_creator import ObjectStoreCreator
-from refresh_tracker import RefreshTracker
-from server_instance import ServerInstance
-from servlet import Servlet, Request, Response
-from timer import Timer, TimerClosure
-
-
-_log = CustomLogger('refresh')
-
-
-class RefreshServlet(Servlet):
- '''Servlet which refreshes a single data source.
- '''
- def __init__(self, request, delegate_for_test=None):
- Servlet.__init__(self, request)
- self._delegate = delegate_for_test or RefreshServlet.Delegate()
-
- class Delegate(object):
- '''RefreshServlet's runtime dependencies. Override for testing.
- '''
- def CreateBranchUtility(self, object_store_creator):
- return BranchUtility.Create(object_store_creator)
-
- def CreateHostFileSystemProvider(self,
- object_store_creator,
- pinned_commit=None):
- return HostFileSystemProvider(object_store_creator,
- pinned_commit=pinned_commit)
-
- def CreateGithubFileSystemProvider(self, object_store_creator):
- return GithubFileSystemProvider(object_store_creator)
-
- def CreateGCSFileSystemProvider(self, object_store_creator):
- return CloudStorageFileSystemProvider(object_store_creator)
-
- def GetAppVersion(self):
- return GetAppVersion()
-
- def Get(self):
- # Manually flush logs at the end of the run. However, sometimes
- # even that isn't enough, which is why in this file we use the
- # custom logger and make it flush the log every time its used.
- logservice.AUTOFLUSH_ENABLED = False
- try:
- return self._GetImpl()
- except BaseException:
- _log.error('Caught top-level exception! %s', traceback.format_exc())
- finally:
- logservice.flush()
-
- def _GetImpl(self):
- path = self._request.path.strip('/')
- parts = self._request.path.split('/', 1)
- source_name = parts[0]
- if len(parts) == 2:
- source_path = parts[1]
- else:
- source_path = None
-
- _log.info('starting refresh of %s DataSource %s' %
- (source_name, '' if source_path is None else '[%s]' % source_path))
-
- if 'commit' in self._request.arguments:
- commit = self._request.arguments['commit']
- else:
- _log.warning('No commit given; refreshing from master. '
- 'This is probably NOT what you want.')
- commit = None
-
- server_instance = self._CreateServerInstance(commit)
- commit_tracker = CommitTracker(server_instance.object_store_creator)
- refresh_tracker = RefreshTracker(server_instance.object_store_creator)
-
- # If no commit was given, use the ID of the last cached master commit.
- # This allows sources external to the chromium repository to be updated
- # independently from individual refresh cycles.
- if commit is None:
- commit = commit_tracker.Get('master').Get()
-
- success = True
- try:
- if source_name == 'platform_bundle':
- data_source = server_instance.platform_bundle
- elif source_name == 'content_providers':
- data_source = server_instance.content_providers
- else:
- data_source = CreateDataSource(source_name, server_instance)
-
- class_name = data_source.__class__.__name__
- refresh_future = data_source.Refresh(source_path)
- assert isinstance(refresh_future, Future), (
- '%s.Refresh() did not return a Future' % class_name)
- timer = Timer()
- try:
- refresh_future.Get()
-
- # Mark this (commit, task) pair as completed and then see if this
- # concludes the full cache refresh. The list of tasks required to
- # complete a cache refresh is registered (and keyed on commit ID) by the
- # CronServlet before kicking off all the refresh tasks.
- (refresh_tracker.MarkTaskComplete(commit, path)
- .Then(lambda _: refresh_tracker.GetRefreshComplete(commit))
- .Then(lambda is_complete:
- commit_tracker.Set('master', commit) if is_complete else None)
- .Get())
- except Exception as e:
- _log.error('%s: error %s' % (class_name, traceback.format_exc()))
- success = False
- if IsFileSystemThrottledError(e):
- return Response.ThrottledError('Throttled')
- raise
- finally:
- _log.info('Refreshing %s took %s' %
- (class_name, timer.Stop().FormatElapsed()))
-
- except:
- success = False
- # This should never actually happen.
- _log.error('uncaught error: %s' % traceback.format_exc())
- raise
- finally:
- _log.info('finished (%s)', 'success' if success else 'FAILED')
- return (Response.Ok('Success') if success else
- Response.InternalError('Failure'))
-
- def _CreateServerInstance(self, commit):
- '''Creates a ServerInstance pinned to |commit|, or HEAD if None.
- NOTE: If passed None it's likely that during the cron run patches will be
- submitted at HEAD, which may change data underneath the cron run.
- '''
- object_store_creator = ObjectStoreCreator(start_empty=True)
- branch_utility = self._delegate.CreateBranchUtility(object_store_creator)
- host_file_system_provider = self._delegate.CreateHostFileSystemProvider(
- object_store_creator, pinned_commit=commit)
- github_file_system_provider = self._delegate.CreateGithubFileSystemProvider(
- object_store_creator)
- gcs_file_system_provider = self._delegate.CreateGCSFileSystemProvider(
- object_store_creator)
- return ServerInstance(object_store_creator,
- CompiledFileSystem.Factory(object_store_creator),
- branch_utility,
- host_file_system_provider,
- github_file_system_provider,
- gcs_file_system_provider)
« no previous file with comments | « chrome/common/extensions/docs/server2/queue.yaml ('k') | chrome/common/extensions/docs/server2/refresh_tracker.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698