Skip to content

Commit ea0bbba

Browse files
authored
fix issue with version strings failing parsing. add more unit test coverage for failing cases (#443)
1 parent d24ee48 commit ea0bbba

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

services/metadata_service/tests/unit_tests/task_test.py

+7
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,23 @@
88
(["2.2.12"], False),
99
(["metaflow_version:0.5"], False),
1010
(["metaflow_version:1.13"], False),
11+
(["metaflow_version:1"], False),
1112
(["metaflow_version:1.14.0"], True),
1213
(["metaflow_version:1.22.1"], True),
1314
(["metaflow_version:2.0.0"], False),
15+
(["metaflow_version:2.0"], False),
16+
(["metaflow_version:2"], False),
1417
(["metaflow_version:2.0.5"], False),
1518
(["metaflow_version:2.2.11"], False),
1619
(["metaflow_version:2.2.12"], True),
1720
(["metaflow_version:2.2.12+ab1234"], True),
1821
(["metaflow_version:2.3"], True),
1922
(["metaflow_version:2.3.1"], True),
2023
(["metaflow_version:2.4.1"], True),
24+
(["metaflow_version:2.12.24.post9-git2a5367b+ob(v1)"], True),
25+
(["metaflow_version:2.12.24+inconsequential+trailing-string"], True),
26+
(["metaflow_version:2.12.24.break"], True),
27+
(["metaflow_version:3"], True),
2128
]
2229

2330

services/utils/__init__.py

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import json
2+
import re
23
import sys
34
import os
45
import traceback
@@ -13,7 +14,6 @@
1314
from packaging.version import Version, parse
1415
from importlib import metadata
1516

16-
1717
USE_SEPARATE_READER_POOL = os.environ.get("USE_SEPARATE_READER_POOL", "0") in ["True", "true", "1"]
1818

1919
version = metadata.version("metadata_service")
@@ -149,8 +149,12 @@ def format_baseurl(request: web.BaseRequest):
149149
def has_heartbeat_capable_version_tag(system_tags):
150150
"""Check client version tag whether it is known to support heartbeats or not"""
151151
try:
152-
version_tags = [tag for tag in system_tags if tag.startswith('metaflow_version:')]
153-
version = parse(version_tags[0][17:])
152+
# only parse for the major.minor.patch version and disregard any trailing bits that might cause issues with comparison.
153+
version_tag = [tag for tag in system_tags if tag.startswith('metaflow_version:')][0]
154+
# match versions: major | major.minor | major.minor.patch
155+
ver_string = re.match(r"(0|\d+)(\.(0|\d+))*", version_tag[len("metaflow_version:"):])[0]
156+
print(ver_string)
157+
version = parse(ver_string)
154158

155159
if version >= Version("1") and version < Version("2"):
156160
return version >= Version("1.14.0")

0 commit comments

Comments
 (0)