Fix Synapse git info missing in version strings (#12973)

This commit is contained in:
David Robertson 2022-06-07 15:24:11 +01:00 committed by GitHub
parent a7e506ddee
commit f30bcbd84a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 36 additions and 38 deletions

1
changelog.d/12973.bugfix Normal file
View File

@ -0,0 +1 @@
Fix a bug introduced in Synapse 1.58 where Synapse would not report full version information when installed from a git checkout. This is a best-effort affair and not guaranteed to be stable.

10
poetry.lock generated
View File

@ -524,7 +524,7 @@ python-versions = ">=3.7"
[[package]] [[package]]
name = "matrix-common" name = "matrix-common"
version = "1.1.0" version = "1.2.1"
description = "Common utilities for Synapse, Sydent and Sygnal" description = "Common utilities for Synapse, Sydent and Sygnal"
category = "main" category = "main"
optional = false optional = false
@ -535,7 +535,7 @@ attrs = "*"
importlib-metadata = {version = ">=1.4", markers = "python_version < \"3.8\""} importlib-metadata = {version = ">=1.4", markers = "python_version < \"3.8\""}
[package.extras] [package.extras]
dev = ["tox", "twisted", "aiounittest", "mypy (==0.910)", "black (==21.9b0)", "flake8 (==4.0.1)", "isort (==5.9.3)"] dev = ["tox", "twisted", "aiounittest", "mypy (==0.910)", "black (==22.3.0)", "flake8 (==4.0.1)", "isort (==5.9.3)", "build (==0.8.0)", "twine (==4.0.1)"]
test = ["tox", "twisted", "aiounittest"] test = ["tox", "twisted", "aiounittest"]
[[package]] [[package]]
@ -1563,7 +1563,7 @@ url_preview = ["lxml"]
[metadata] [metadata]
lock-version = "1.1" lock-version = "1.1"
python-versions = "^3.7.1" python-versions = "^3.7.1"
content-hash = "539e5326f401472d1ffc8325d53d72e544cd70156b3f43f32f1285c4c131f831" content-hash = "c1bb4dabba1e87517e25ca7bf778e8082fbc960a51d83819aec3a154110a374f"
[metadata.files] [metadata.files]
attrs = [ attrs = [
@ -2042,8 +2042,8 @@ markupsafe = [
{file = "MarkupSafe-2.1.0.tar.gz", hash = "sha256:80beaf63ddfbc64a0452b841d8036ca0611e049650e20afcb882f5d3c266d65f"}, {file = "MarkupSafe-2.1.0.tar.gz", hash = "sha256:80beaf63ddfbc64a0452b841d8036ca0611e049650e20afcb882f5d3c266d65f"},
] ]
matrix-common = [ matrix-common = [
{file = "matrix_common-1.1.0-py3-none-any.whl", hash = "sha256:5d6dfd777503b2f3a031b566e6af25b6e95f9c0818ef57d954c3190fce5eb407"}, {file = "matrix_common-1.2.1-py3-none-any.whl", hash = "sha256:946709c405944a0d4b1d73207b77eb064b6dbfc5d70a69471320b06d8ce98b20"},
{file = "matrix_common-1.1.0.tar.gz", hash = "sha256:a8238748afc2b37079818367fed5156f355771b07c8ff0a175934f47e0ff3276"}, {file = "matrix_common-1.2.1.tar.gz", hash = "sha256:a99dcf02a6bd95b24a5a61b354888a2ac92bf2b4b839c727b8dd9da2cdfa3853"},
] ]
matrix-synapse-ldap3 = [ matrix-synapse-ldap3 = [
{file = "matrix-synapse-ldap3-0.2.0.tar.gz", hash = "sha256:91a0715b43a41ec3033244174fca20846836da98fda711fb01687f7199eecd2e"}, {file = "matrix-synapse-ldap3-0.2.0.tar.gz", hash = "sha256:91a0715b43a41ec3033244174fca20846836da98fda711fb01687f7199eecd2e"},

View File

@ -150,7 +150,7 @@ typing-extensions = ">=3.10.0.1"
cryptography = ">=3.4.7" cryptography = ">=3.4.7"
# ijson 3.1.4 fixes a bug with "." in property names # ijson 3.1.4 fixes a bug with "." in property names
ijson = ">=3.1.4" ijson = ">=3.1.4"
matrix-common = "~=1.1.0" matrix-common = "~=1.2.1"
# We need packaging.requirements.Requirement, added in 16.1. # We need packaging.requirements.Requirement, added in 16.1.
packaging = ">=16.1" packaging = ">=16.1"
# At the time of writing, we only use functions from the version `importlib.metadata` # At the time of writing, we only use functions from the version `importlib.metadata`

View File

@ -20,8 +20,6 @@ import json
import os import os
import sys import sys
from matrix_common.versionstring import get_distribution_version_string
# Check that we're not running on an unsupported Python version. # Check that we're not running on an unsupported Python version.
if sys.version_info < (3, 7): if sys.version_info < (3, 7):
print("Synapse requires Python 3.7 or above.") print("Synapse requires Python 3.7 or above.")
@ -70,7 +68,9 @@ try:
except ImportError: except ImportError:
pass pass
__version__ = get_distribution_version_string("matrix-synapse") import synapse.util
__version__ = synapse.util.SYNAPSE_VERSION
if bool(os.environ.get("SYNAPSE_TEST_PATCH_LOG_CONTEXTS", False)): if bool(os.environ.get("SYNAPSE_TEST_PATCH_LOG_CONTEXTS", False)):
# We import here so that we don't have to install a bunch of deps when # We import here so that we don't have to install a bunch of deps when

View File

@ -40,7 +40,6 @@ from typing import (
) )
import yaml import yaml
from matrix_common.versionstring import get_distribution_version_string
from typing_extensions import TypedDict from typing_extensions import TypedDict
from twisted.internet import defer, reactor as reactor_ from twisted.internet import defer, reactor as reactor_
@ -84,7 +83,7 @@ from synapse.storage.databases.state.bg_updates import StateBackgroundUpdateStor
from synapse.storage.engines import create_engine from synapse.storage.engines import create_engine
from synapse.storage.prepare_database import prepare_database from synapse.storage.prepare_database import prepare_database
from synapse.types import ISynapseReactor from synapse.types import ISynapseReactor
from synapse.util import Clock from synapse.util import SYNAPSE_VERSION, Clock
# Cast safety: Twisted does some naughty magic which replaces the # Cast safety: Twisted does some naughty magic which replaces the
# twisted.internet.reactor module with a Reactor instance at runtime. # twisted.internet.reactor module with a Reactor instance at runtime.
@ -258,9 +257,7 @@ class MockHomeserver:
self.clock = Clock(reactor) self.clock = Clock(reactor)
self.config = config self.config = config
self.hostname = config.server.server_name self.hostname = config.server.server_name
self.version_string = "Synapse/" + get_distribution_version_string( self.version_string = SYNAPSE_VERSION
"matrix-synapse"
)
def get_clock(self) -> Clock: def get_clock(self) -> Clock:
return self.clock return self.clock

View File

@ -19,7 +19,6 @@ import sys
from typing import cast from typing import cast
import yaml import yaml
from matrix_common.versionstring import get_distribution_version_string
from twisted.internet import defer, reactor as reactor_ from twisted.internet import defer, reactor as reactor_
@ -28,6 +27,7 @@ from synapse.metrics.background_process_metrics import run_as_background_process
from synapse.server import HomeServer from synapse.server import HomeServer
from synapse.storage import DataStore from synapse.storage import DataStore
from synapse.types import ISynapseReactor from synapse.types import ISynapseReactor
from synapse.util import SYNAPSE_VERSION
# Cast safety: Twisted does some naughty magic which replaces the # Cast safety: Twisted does some naughty magic which replaces the
# twisted.internet.reactor module with a Reactor instance at runtime. # twisted.internet.reactor module with a Reactor instance at runtime.
@ -43,8 +43,7 @@ class MockHomeserver(HomeServer):
hostname=config.server.server_name, hostname=config.server.server_name,
config=config, config=config,
reactor=reactor, reactor=reactor,
version_string="Synapse/" version_string=f"Synapse/{SYNAPSE_VERSION}",
+ get_distribution_version_string("matrix-synapse"),
) )

View File

@ -37,7 +37,6 @@ from typing import (
) )
from cryptography.utils import CryptographyDeprecationWarning from cryptography.utils import CryptographyDeprecationWarning
from matrix_common.versionstring import get_distribution_version_string
from typing_extensions import ParamSpec from typing_extensions import ParamSpec
import twisted import twisted
@ -68,6 +67,7 @@ from synapse.metrics import install_gc_manager, register_threadpool
from synapse.metrics.background_process_metrics import wrap_as_background_process from synapse.metrics.background_process_metrics import wrap_as_background_process
from synapse.metrics.jemalloc import setup_jemalloc_stats from synapse.metrics.jemalloc import setup_jemalloc_stats
from synapse.types import ISynapseReactor from synapse.types import ISynapseReactor
from synapse.util import SYNAPSE_VERSION
from synapse.util.caches.lrucache import setup_expire_lru_cache_entries from synapse.util.caches.lrucache import setup_expire_lru_cache_entries
from synapse.util.daemonize import daemonize_process from synapse.util.daemonize import daemonize_process
from synapse.util.gai_resolver import GAIResolver from synapse.util.gai_resolver import GAIResolver
@ -540,7 +540,7 @@ def setup_sentry(hs: "HomeServer") -> None:
sentry_sdk.init( sentry_sdk.init(
dsn=hs.config.metrics.sentry_dsn, dsn=hs.config.metrics.sentry_dsn,
release=get_distribution_version_string("matrix-synapse"), release=SYNAPSE_VERSION,
) )
# We set some default tags that give some context to this instance # We set some default tags that give some context to this instance

View File

@ -19,8 +19,6 @@ import sys
import tempfile import tempfile
from typing import List, Optional from typing import List, Optional
from matrix_common.versionstring import get_distribution_version_string
from twisted.internet import defer, task from twisted.internet import defer, task
import synapse import synapse
@ -43,6 +41,7 @@ from synapse.replication.slave.storage.registration import SlavedRegistrationSto
from synapse.server import HomeServer from synapse.server import HomeServer
from synapse.storage.databases.main.room import RoomWorkerStore from synapse.storage.databases.main.room import RoomWorkerStore
from synapse.types import StateMap from synapse.types import StateMap
from synapse.util import SYNAPSE_VERSION
from synapse.util.logcontext import LoggingContext from synapse.util.logcontext import LoggingContext
logger = logging.getLogger("synapse.app.admin_cmd") logger = logging.getLogger("synapse.app.admin_cmd")
@ -220,7 +219,7 @@ def start(config_options: List[str]) -> None:
ss = AdminCmdServer( ss = AdminCmdServer(
config.server.server_name, config.server.server_name,
config=config, config=config,
version_string="Synapse/" + get_distribution_version_string("matrix-synapse"), version_string=f"Synapse/{SYNAPSE_VERSION}",
) )
setup_logging(ss, config, use_worker_options=True) setup_logging(ss, config, use_worker_options=True)

View File

@ -16,8 +16,6 @@ import logging
import sys import sys
from typing import Dict, List, Optional, Tuple from typing import Dict, List, Optional, Tuple
from matrix_common.versionstring import get_distribution_version_string
from twisted.internet import address from twisted.internet import address
from twisted.web.resource import Resource from twisted.web.resource import Resource
@ -121,6 +119,7 @@ from synapse.storage.databases.main.transactions import TransactionWorkerStore
from synapse.storage.databases.main.ui_auth import UIAuthWorkerStore from synapse.storage.databases.main.ui_auth import UIAuthWorkerStore
from synapse.storage.databases.main.user_directory import UserDirectoryStore from synapse.storage.databases.main.user_directory import UserDirectoryStore
from synapse.types import JsonDict from synapse.types import JsonDict
from synapse.util import SYNAPSE_VERSION
from synapse.util.httpresourcetree import create_resource_tree from synapse.util.httpresourcetree import create_resource_tree
logger = logging.getLogger("synapse.app.generic_worker") logger = logging.getLogger("synapse.app.generic_worker")
@ -447,7 +446,7 @@ def start(config_options: List[str]) -> None:
hs = GenericWorkerServer( hs = GenericWorkerServer(
config.server.server_name, config.server.server_name,
config=config, config=config,
version_string="Synapse/" + get_distribution_version_string("matrix-synapse"), version_string=f"Synapse/{SYNAPSE_VERSION}",
) )
setup_logging(hs, config, use_worker_options=True) setup_logging(hs, config, use_worker_options=True)

View File

@ -18,8 +18,6 @@ import os
import sys import sys
from typing import Dict, Iterable, List from typing import Dict, Iterable, List
from matrix_common.versionstring import get_distribution_version_string
from twisted.internet.tcp import Port from twisted.internet.tcp import Port
from twisted.web.resource import EncodingResourceWrapper, Resource from twisted.web.resource import EncodingResourceWrapper, Resource
from twisted.web.server import GzipEncoderFactory from twisted.web.server import GzipEncoderFactory
@ -69,7 +67,7 @@ from synapse.rest.synapse.client import build_synapse_client_resource_tree
from synapse.rest.well_known import well_known_resource from synapse.rest.well_known import well_known_resource
from synapse.server import HomeServer from synapse.server import HomeServer
from synapse.storage import DataStore from synapse.storage import DataStore
from synapse.util.check_dependencies import check_requirements from synapse.util.check_dependencies import VERSION, check_requirements
from synapse.util.httpresourcetree import create_resource_tree from synapse.util.httpresourcetree import create_resource_tree
from synapse.util.module_loader import load_module from synapse.util.module_loader import load_module
@ -371,7 +369,7 @@ def setup(config_options: List[str]) -> SynapseHomeServer:
hs = SynapseHomeServer( hs = SynapseHomeServer(
config.server.server_name, config.server.server_name,
config=config, config=config,
version_string="Synapse/" + get_distribution_version_string("matrix-synapse"), version_string=f"Synapse/{VERSION}",
) )
synapse.config.logger.setup_logging(hs, config, use_worker_options=False) synapse.config.logger.setup_logging(hs, config, use_worker_options=False)

View File

@ -22,7 +22,6 @@ from string import Template
from typing import TYPE_CHECKING, Any, Dict, Optional from typing import TYPE_CHECKING, Any, Dict, Optional
import yaml import yaml
from matrix_common.versionstring import get_distribution_version_string
from zope.interface import implementer from zope.interface import implementer
from twisted.logger import ( from twisted.logger import (
@ -37,6 +36,7 @@ from synapse.logging.context import LoggingContextFilter
from synapse.logging.filter import MetadataFilter from synapse.logging.filter import MetadataFilter
from synapse.types import JsonDict from synapse.types import JsonDict
from ..util import SYNAPSE_VERSION
from ._base import Config, ConfigError from ._base import Config, ConfigError
if TYPE_CHECKING: if TYPE_CHECKING:
@ -349,7 +349,7 @@ def setup_logging(
logging.warning( logging.warning(
"Server %s version %s", "Server %s version %s",
sys.argv[0], sys.argv[0],
get_distribution_version_string("matrix-synapse"), SYNAPSE_VERSION,
) )
logging.info("Server hostname: %s", config.server.server_name) logging.info("Server hostname: %s", config.server.server_name)
logging.info("Instance name: %s", hs.get_instance_name()) logging.info("Instance name: %s", hs.get_instance_name())

View File

@ -24,7 +24,6 @@ from typing import (
Union, Union,
) )
from matrix_common.versionstring import get_distribution_version_string
from typing_extensions import Literal from typing_extensions import Literal
from synapse.api.constants import EduTypes from synapse.api.constants import EduTypes
@ -42,6 +41,7 @@ from synapse.http.servlet import (
parse_strings_from_args, parse_strings_from_args,
) )
from synapse.types import JsonDict from synapse.types import JsonDict
from synapse.util import SYNAPSE_VERSION
from synapse.util.ratelimitutils import FederationRateLimiter from synapse.util.ratelimitutils import FederationRateLimiter
if TYPE_CHECKING: if TYPE_CHECKING:
@ -622,7 +622,7 @@ class FederationVersionServlet(BaseFederationServlet):
{ {
"server": { "server": {
"name": "Synapse", "name": "Synapse",
"version": get_distribution_version_string("matrix-synapse"), "version": SYNAPSE_VERSION,
} }
}, },
) )

View File

@ -35,7 +35,6 @@ from typing import (
) )
import attr import attr
from matrix_common.versionstring import get_distribution_version_string
from prometheus_client import CollectorRegistry, Counter, Gauge, Histogram, Metric from prometheus_client import CollectorRegistry, Counter, Gauge, Histogram, Metric
from prometheus_client.core import ( from prometheus_client.core import (
REGISTRY, REGISTRY,
@ -54,6 +53,7 @@ from synapse.metrics._exposition import (
) )
from synapse.metrics._gc import MIN_TIME_BETWEEN_GCS, install_gc_manager from synapse.metrics._gc import MIN_TIME_BETWEEN_GCS, install_gc_manager
from synapse.metrics._types import Collector from synapse.metrics._types import Collector
from synapse.util import SYNAPSE_VERSION
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -419,7 +419,7 @@ build_info = Gauge(
) )
build_info.labels( build_info.labels(
" ".join([platform.python_implementation(), platform.python_version()]), " ".join([platform.python_implementation(), platform.python_version()]),
get_distribution_version_string("matrix-synapse"), SYNAPSE_VERSION,
" ".join([platform.system(), platform.release()]), " ".join([platform.system(), platform.release()]),
).set(1) ).set(1)

View File

@ -20,8 +20,6 @@ import platform
from http import HTTPStatus from http import HTTPStatus
from typing import TYPE_CHECKING, Optional, Tuple from typing import TYPE_CHECKING, Optional, Tuple
from matrix_common.versionstring import get_distribution_version_string
from synapse.api.errors import Codes, NotFoundError, SynapseError from synapse.api.errors import Codes, NotFoundError, SynapseError
from synapse.http.server import HttpServer, JsonResource from synapse.http.server import HttpServer, JsonResource
from synapse.http.servlet import RestServlet, parse_json_object_from_request from synapse.http.servlet import RestServlet, parse_json_object_from_request
@ -88,6 +86,7 @@ from synapse.rest.admin.users import (
WhoisRestServlet, WhoisRestServlet,
) )
from synapse.types import JsonDict, RoomStreamToken from synapse.types import JsonDict, RoomStreamToken
from synapse.util import SYNAPSE_VERSION
if TYPE_CHECKING: if TYPE_CHECKING:
from synapse.server import HomeServer from synapse.server import HomeServer
@ -100,7 +99,7 @@ class VersionServlet(RestServlet):
def __init__(self, hs: "HomeServer"): def __init__(self, hs: "HomeServer"):
self.res = { self.res = {
"server_version": get_distribution_version_string("matrix-synapse"), "server_version": SYNAPSE_VERSION,
"python_version": platform.python_version(), "python_version": platform.python_version(),
} }

View File

@ -19,6 +19,7 @@ from typing import Any, Callable, Dict, Generator, Optional
import attr import attr
from frozendict import frozendict from frozendict import frozendict
from matrix_common.versionstring import get_distribution_version_string
from twisted.internet import defer, task from twisted.internet import defer, task
from twisted.internet.defer import Deferred from twisted.internet.defer import Deferred
@ -183,3 +184,8 @@ def log_failure(
if not consumeErrors: if not consumeErrors:
return failure return failure
return None return None
# Version string with git info. Computed here once so that we don't invoke git multiple
# times.
SYNAPSE_VERSION = get_distribution_version_string("matrix-synapse", __file__)