diff hgext3rd/topic/__init__.py @ 6023:6c67219ce779 stable

topic: don't cache topic of e.g. memctx in _topiccache (issue6500) _topiccache exists to make us hit the storage less often when we want to look at topics for any reason. It doesn't make much sense to cache something that is memory-only and is cheap to access however. Caching things like that was also a source of a bug where creating multiple memctx instances in one process would cache topic of the first one and ignore actual content of .extra() of the others. That was happening because the cache is keyed by .rev(), but all memctx instances have the same .rev() = None.
author Anton Shestakov <av6@dwimlabs.net>
date Sun, 29 Aug 2021 14:41:23 +0300
parents ae0ef35c2dd9
children bec2d792ceae
line wrap: on
line diff
--- a/hgext3rd/topic/__init__.py	Sun Aug 29 14:30:37 2021 +0300
+++ b/hgext3rd/topic/__init__.py	Sun Aug 29 14:41:23 2021 +0300
@@ -298,6 +298,9 @@
     # topic loaded, but not enabled (eg: multiple repo in the same process)
     if cache is None:
         return b''
+    if self.rev() is None:
+        # don't cache volatile ctx instances that aren't stored on-disk yet
+        return self.extra().get(constants.extrakey, b'')
     topic = cache.get(self.rev())
     if topic is None:
         topic = self.extra().get(constants.extrakey, b'')