Skip to content
Snippets Groups Projects
Commit 5ea773c5 authored by Erik Johnston's avatar Erik Johnston
Browse files

Cache get_version_string.

The version of a module isn't going to change over the lifetime of the
process (assuming no funky hot reloading is going on, which it isn't),
so let's just cache the result to avoid spawning lots of git
subprocesses.

Fixes #5672.
parent f337d2f0
No related branches found
No related tags found
No related merge requests found
...@@ -22,6 +22,23 @@ logger = logging.getLogger(__name__) ...@@ -22,6 +22,23 @@ logger = logging.getLogger(__name__)
def get_version_string(module): def get_version_string(module):
"""Given a module calculate a git-aware version string for it.
If called on a module not in a git checkout will return `__verison__`.
Args:
module (module)
Returns:
str
"""
cached_version = getattr(module, "_synapse_version_string_cache", None)
if cached_version:
return cached_version
version_string = module.__version__
try: try:
null = open(os.devnull, "w") null = open(os.devnull, "w")
cwd = os.path.dirname(os.path.abspath(module.__file__)) cwd = os.path.dirname(os.path.abspath(module.__file__))
...@@ -80,8 +97,10 @@ def get_version_string(module): ...@@ -80,8 +97,10 @@ def get_version_string(module):
s for s in (git_branch, git_tag, git_commit, git_dirty) if s s for s in (git_branch, git_tag, git_commit, git_dirty) if s
) )
return "%s (%s)" % (module.__version__, git_version) version_string = "%s (%s)" % (module.__version__, git_version)
except Exception as e: except Exception as e:
logger.info("Failed to check for git repository: %s", e) logger.info("Failed to check for git repository: %s", e)
return module.__version__ module._synapse_version_string_cache = version_string
return version_string
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment