| OLD | NEW |
| 1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import logging | 5 import logging |
| 6 import time | 6 import time |
| 7 import traceback | 7 import traceback |
| 8 | 8 |
| 9 from app_yaml_helper import AppYamlHelper | 9 from app_yaml_helper import AppYamlHelper |
| 10 from appengine_wrappers import ( | 10 from appengine_wrappers import ( |
| 11 GetAppVersion, DeadlineExceededError, IsDevServer, logservice) | 11 GetAppVersion, DeadlineExceededError, IsDevServer, logservice) |
| 12 from branch_utility import BranchUtility | 12 from branch_utility import BranchUtility |
| 13 from caching_file_system import CachingFileSystem | |
| 14 from compiled_file_system import CompiledFileSystem | 13 from compiled_file_system import CompiledFileSystem |
| 15 from empty_dir_file_system import EmptyDirFileSystem | 14 from empty_dir_file_system import EmptyDirFileSystem |
| 15 from file_system_util import CreateURLsFromPaths |
| 16 from github_file_system import GithubFileSystem | 16 from github_file_system import GithubFileSystem |
| 17 from host_file_system_creator import HostFileSystemCreator | 17 from host_file_system_creator import HostFileSystemCreator |
| 18 from object_store_creator import ObjectStoreCreator | 18 from object_store_creator import ObjectStoreCreator |
| 19 from render_servlet import RenderServlet | 19 from render_servlet import RenderServlet |
| 20 from server_instance import ServerInstance | 20 from server_instance import ServerInstance |
| 21 from servlet import Servlet, Request, Response | 21 from servlet import Servlet, Request, Response |
| 22 from subversion_file_system import SubversionFileSystem | |
| 23 import svn_constants | 22 import svn_constants |
| 24 from third_party.json_schema_compiler.memoize import memoize | |
| 25 | 23 |
| 26 class _SingletonRenderServletDelegate(RenderServlet.Delegate): | 24 class _SingletonRenderServletDelegate(RenderServlet.Delegate): |
| 27 def __init__(self, server_instance): | 25 def __init__(self, server_instance): |
| 28 self._server_instance = server_instance | 26 self._server_instance = server_instance |
| 29 | 27 |
| 30 def CreateServerInstanceForChannel(self, channel): | 28 def CreateServerInstanceForChannel(self, channel): |
| 31 return self._server_instance | 29 return self._server_instance |
| 32 | 30 |
| 33 class CronServlet(Servlet): | 31 class CronServlet(Servlet): |
| 34 '''Servlet which runs a cron job. | 32 '''Servlet which runs a cron job. |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 server_instance = self._GetSafeServerInstance() | 78 server_instance = self._GetSafeServerInstance() |
| 81 | 79 |
| 82 def get_via_render_servlet(path): | 80 def get_via_render_servlet(path): |
| 83 request = Request(path, self._request.host, self._request.headers) | 81 request = Request(path, self._request.host, self._request.headers) |
| 84 delegate = _SingletonRenderServletDelegate(server_instance) | 82 delegate = _SingletonRenderServletDelegate(server_instance) |
| 85 return RenderServlet(request, delegate).Get() | 83 return RenderServlet(request, delegate).Get() |
| 86 | 84 |
| 87 def run_cron_for_dir(d, path_prefix=''): | 85 def run_cron_for_dir(d, path_prefix=''): |
| 88 success = True | 86 success = True |
| 89 start_time = time.time() | 87 start_time = time.time() |
| 90 # TODO(jshumway): use server_instance.host_file_system.Walk. | 88 files = dict( |
| 91 # TODO(kalman): delete me where it's set. | 89 CreateURLsFromPaths(server_instance.host_file_system, d, path_prefix)) |
| 92 files = [f for f in server_instance.content_cache.GetFromFileListing(d) | |
| 93 if not f.endswith('/') and f != 'redirects.json'] | |
| 94 logging.info('cron/%s: rendering %s files from %s...' % ( | 90 logging.info('cron/%s: rendering %s files from %s...' % ( |
| 95 channel, len(files), d)) | 91 channel, len(files), d)) |
| 96 try: | 92 try: |
| 97 for i, f in enumerate(files): | 93 for i, path in enumerate(files): |
| 98 error = None | 94 error = None |
| 99 path = '%s%s' % (path_prefix, f) | |
| 100 try: | 95 try: |
| 101 response = get_via_render_servlet(path) | 96 response = get_via_render_servlet(path) |
| 102 if response.status != 200: | 97 if response.status != 200: |
| 103 error = 'Got %s response' % response.status | 98 error = 'Got %s response' % response.status |
| 104 except DeadlineExceededError: | 99 except DeadlineExceededError: |
| 105 logging.error( | 100 logging.error( |
| 106 'cron/%s: deadline exceeded rendering %s (%s of %s): %s' % ( | 101 'cron/%s: deadline exceeded rendering %s (%s of %s): %s' % ( |
| 107 channel, path, i + 1, len(files), traceback.format_exc())) | 102 channel, path, i + 1, len(files), traceback.format_exc())) |
| 108 raise | 103 raise |
| 109 except error: | 104 except error: |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 227 host_file_system, | 222 host_file_system, |
| 228 object_store_creator) | 223 object_store_creator) |
| 229 return ServerInstance(channel, | 224 return ServerInstance(channel, |
| 230 object_store_creator, | 225 object_store_creator, |
| 231 host_file_system, | 226 host_file_system, |
| 232 app_samples_file_system, | 227 app_samples_file_system, |
| 233 '' if channel == 'stable' else '/%s' % channel, | 228 '' if channel == 'stable' else '/%s' % channel, |
| 234 compiled_host_fs_factory, | 229 compiled_host_fs_factory, |
| 235 branch_utility, | 230 branch_utility, |
| 236 host_file_system_creator) | 231 host_file_system_creator) |
| OLD | NEW |