Skip to content

Commit 92f31f0

Browse files
authoredMar 12, 2025
fix: ancestry metadata service implementation (#2342)
some fixes to align the filtered tasks calls of the service implementation with how local is working. goes together with Netflix/metaflow-service#449
1 parent 472111d commit 92f31f0

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed
 

Diff for: ‎metaflow/plugins/metadata_providers/service.py

+16-7
Original file line numberDiff line numberDiff line change
@@ -350,23 +350,32 @@ def filter_tasks_by_metadata(
350350
List[str]
351351
List of task pathspecs that satisfy the query
352352
"""
353-
query_params = {
354-
"metadata_field_name": field_name,
355-
"pattern": pattern,
356-
"step_name": step_name,
357-
}
353+
query_params = {}
354+
355+
if pattern == ".*":
356+
# we do not need to filter tasks at all if pattern allows 'any'
357+
query_params = {}
358+
else:
359+
if field_name:
360+
query_params["metadata_field_name"] = field_name
361+
if pattern:
362+
query_params["pattern"] = pattern
363+
358364
url = ServiceMetadataProvider._obj_path(flow_name, run_id, step_name)
359365
url = f"{url}/filtered_tasks?{urlencode(query_params)}"
366+
360367
try:
361-
resp = cls._request(None, url, "GET")
368+
resp, _ = cls._request(None, url, "GET")
362369
except Exception as e:
363370
if e.http_code == 404:
364371
# filter_tasks_by_metadata endpoint does not exist in the version of metadata service
365372
# deployed currently. Raise a more informative error message.
366373
raise MetaflowInternalError(
367374
"The version of metadata service deployed currently does not support filtering tasks by metadata. "
368-
"Upgrade Metadata service to version 2.15 or greater to use this feature."
375+
"Upgrade Metadata service to version 2.5.0 or greater to use this feature."
369376
) from e
377+
# Other unknown exception
378+
raise e
370379
return resp
371380

372381
@staticmethod

0 commit comments

Comments
 (0)