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

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

Issue 660383002: Docserver: Persist stat cache for versioned file systems (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: change caching strategy, better refresh cycle synchronization Created 6 years, 2 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/gitiles_file_system.py
diff --git a/chrome/common/extensions/docs/server2/gitiles_file_system.py b/chrome/common/extensions/docs/server2/gitiles_file_system.py
index 2962235da84e6c0a1d6f71824ea7694e6a08883b..20d3ce63ae702233310ccc3bba8e88ff4cd374eb 100644
--- a/chrome/common/extensions/docs/server2/gitiles_file_system.py
+++ b/chrome/common/extensions/docs/server2/gitiles_file_system.py
@@ -49,6 +49,10 @@ def _CreateStatInfo(json_data):
dict((e['name'], e['id']) for e in tree['entries']))
+def _CreateIdentityFromCommit(commit):
+ return '%s/%s/%s' % (GITILES_BASE, GITILES_SRC_ROOT, commit)
+
+
class GitilesFileSystem(FileSystem):
'''Class to fetch filesystem data from the Chromium project's gitiles
service.
@@ -232,12 +236,21 @@ class GitilesFileSystem(FileSystem):
fetch_future = self._FetchAsync(ToDirectory(dir_) + _JSON_FORMAT)
return self._ResolveFetchContent(path, fetch_future).Then(stat)
- def GetIdentity(self):
- # NOTE: Do not use commit information to create the string identity.
- # Doing so will mess up caching.
- if self._commit is None and self._branch != 'master':
+ def GetStableIdentity(self):
+ '''The stable identity is always the same for GitilesFileSystems designated
+ to master, even if they are pinned to a specific commit'''
+ if self._branch == 'master':
+ str_id = '%s/%s/master' % (GITILES_BASE, GITILES_SRC_ROOT)
+ elif self._commit is not None:
+ str_id = _CreateIdentityFromCommit(self._commit)
+ else:
str_id = '%s/%s/%s/%s' % (
GITILES_BASE, GITILES_SRC_ROOT, GITILES_BRANCHES_PATH, self._branch)
- else:
- str_id = '%s/%s' % (GITILES_BASE, GITILES_SRC_ROOT)
return '@'.join((self.__class__.__name__, StringIdentity(str_id)))
+
+ def GetUnstableIdentity(self):
+ '''The unstable identity always tracks the commit ID if set.'''
+ if self._commit is not None:
+ return '@'.join((self.__class__.__name__, StringIdentity(
+ _CreateIdentityFromCommit(self._commit))))
+ return self.GetStableIdentity()

Powered by Google App Engine
This is Rietveld 408576698