Patchwork [08,of,14] cache: adds debug details about what the content of the update

login
register
mail settings
Submitter Boris Feld
Date July 9, 2017, 5:55 p.m.
Message ID <774ff18cc36b72822f59.1499622920@FB>
Download mbox | patch
Permalink /patch/22168/
State Changes Requested
Headers show

Comments

Boris Feld - July 9, 2017, 5:55 p.m.
# HG changeset patch
# User Boris Feld <boris.feld@octobus.net>
# Date 1499523976 -7200
#      Sat Jul 08 16:26:16 2017 +0200
# Node ID 774ff18cc36b72822f598b4fa5a51628513926e3
# Parent  5d3e659c979aa428ba44b138cfac30b7cca28fb3
# EXP-Topic obs-cache
cache: adds debug details about what the content of the update

Having more data in debug is good, we add a small method to help providing them.

Patch

diff -r 5d3e659c979a -r 774ff18cc36b mercurial/cache.py
--- a/mercurial/cache.py	Fri Jul 07 22:22:39 2017 +0200
+++ b/mercurial/cache.py	Sat Jul 08 16:26:16 2017 +0200
@@ -91,6 +91,11 @@ 
         """
         raise NotImplementedError
 
+    @abc.abstractmethod
+    def _updatesummary(self, data):
+        """return a small string to be included in debug output"""
+        raise NotImplementedError
+
     # Useful "public" function (no need to override them)
 
     def update(self, repo):
@@ -114,8 +119,9 @@ 
         starttime = util.timer()
         self._updatefrom(repo, data)
         duration = util.timer() - starttime
-        repo.ui.log('cache', 'updated %s in %.4f seconds\n',
-                    self._cachename, duration)
+        summary = self._updatesummary(data)
+        repo.ui.log('cache', 'updated %s in %.4f seconds (%s)\n',
+                    self._cachename, duration, summary)
 
         self._cachekey = newkey
 
@@ -165,6 +171,9 @@ 
     def _fetchupdatedata(self, repo):
         return self._fetchchangelogdata(self._cachekey, repo.changelog)
 
+    def _updatesummary(self, data):
+        return '%ir' % len(data)
+
 class obsstoresourcebase(incrementalcachebase):
     """an abstract class for cache that source data from the obsstore
 
@@ -182,6 +191,9 @@ 
     def _fetchupdatedata(self, repo):
         return repo.obsstore.getmarkerssince(self._cachekey)
 
+    def _updatesummary(self, data):
+        return '%io' % len(data)
+
 class dualsourcecache(obsstoresourcebase, changelogsourcebase):
     """An abstract class for cache that needs both changelog and obsstore
 
@@ -216,3 +228,6 @@ 
         newkey = newclkey + newobskey
         data = (revs, obsmarkers)
         return reset, data, newkey
+
+    def _updatesummary(self, data):
+        return '%ir, %io' % (len(data[0]), len(data[1]))