-
Notifications
You must be signed in to change notification settings - Fork 363
Closed
Labels
help wantedExtra attention is neededExtra attention is neededtype / bugIssue type: something isn't workingIssue type: something isn't working
Description
๐ Bug
When remote logging, resuming/continuing a run occasionally fails, triggering an assertion. See log/trace excerpt below for details.
Trace
``` โ โ โ /home/luz/micromamba/envs/bosch-tracking-cu118/lib/python3.11/site-packages/aim/sdk/run.py:864 in __init__ โ โ โ โ 861 โ โ log_system_params: Optional[bool] = False, โ โ 862 โ โ capture_terminal_logs: Optional[bool] = True, โ โ 863 โ ): โ โ โฑ 864 โ โ super().__init__(run_hash, repo=repo, read_only=read_only, experiment=experiment โ โ 865 โ โ โ โ 866 โ โ self._system_resource_tracker: ResourceTracker = None โ โ 867 โ โ if not read_only: โ โ โ โ โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ locals โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ โ โ โ capture_terminal_logs = True โ โ โ โ experiment = None โ โ โ โ force_resume = True โ โ โ โ log_system_params = False โ โ โ โ read_only = False โ โ โ โ repo = 'aim://10.4.28.205:53800' โ โ โ โ run_hash = '147ff01f895d4e828fceb6f0' โ โ โ โ self = > โ โ โ โ system_tracking_interval = 10 โ โ โ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ โ โ โ /home/luz/micromamba/envs/bosch-tracking-cu118/lib/python3.11/site-packages/aim/sdk/run.py:280 in __init__ โ โ โ โ 277 โ โ if not read_only: โ โ 278 โ โ โ logger.debug(f'Opening Run {self.hash} in write mode') โ โ 279 โ โ โ โ โ โฑ 280 โ โ โ if self.check_metrics_version(): โ โ 281 โ โ โ โ if self.repo.is_remote_repo: โ โ 282 โ โ โ โ โ logger.warning( โ โ 283 โ โ โ โ โ โ f'Cannot track Run with remote repo {self.repo.path}. Please upg โ โ โ โ โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ locals โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ โ โ โ experiment = None โ โ โ โ force_resume = True โ โ โ โ read_only = False โ โ โ โ repo = 'aim://10.4.28.205:53800' โ โ โ โ run_hash = '147ff01f895d4e828fceb6f0' โ โ โ โ self = > โ โ โ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ โ โ โ /home/luz/micromamba/envs/bosch-tracking-cu118/lib/python3.11/site-packages/aim/sdk/base_run.py:81 in โ โ check_metrics_version โ โ โ โ 78 โ โ โ 79 โ def check_metrics_version(self) -> bool: โ โ 80 โ โ metric_dtypes = ('float', 'float64', 'int') โ โ โฑ 81 โ โ traces_tree = self.meta_run_tree.get('traces', {}) โ โ 82 โ โ โ โ 83 โ โ v1_metric_found = False โ โ 84 โ โ for ctx_metadata in traces_tree.values(): โ โ โ โ โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ locals โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ โ โ โ metric_dtypes = ('float', 'float64', 'int') โ โ โ โ self = > โ โ โ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ โ โ โ in aim.storage.treeview.TreeView.get:32 โ โ โ โ in aim.storage.treeview.TreeView.__getitem__:28 โ โ โ โ in aim.storage.treeview.TreeView.collect:23 โ โ โ โ /home/luz/micromamba/envs/bosch-tracking-cu118/lib/python3.11/site-packages/aim/storage/treeviewproxy.py:154 in โ โ collect โ โ โ โ 151 โ def collect( โ โ 152 โ โ self, path: Union[AimObjectKey, AimObjectPath] = (), strict: bool = True, resolv โ โ 153 โ ) -> AimObject: โ โ โฑ 154 โ โ return self.tree.collect(self.absolute_path(path), strict, resolve_objects) โ โ 155 โ โ โ 156 โ def __delitem__(self, path: Union[AimObjectKey, AimObjectPath]): โ โ 157 โ โ del self.tree[self.absolute_path(path)] โ โ โ โ โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ locals โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ โ โ โ path = 'traces' โ โ โ โ resolve_objects = False โ โ โ โ self = โ โ โ โ strict = True โ โ โ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ โ โ โ /home/luz/micromamba/envs/bosch-tracking-cu118/lib/python3.11/site-packages/aim/storage/treeviewproxy.py:73 in โ โ collect โ โ โ โ 70 โ def collect( โ โ 71 โ โ self, path: Union[AimObjectKey, AimObjectPath] = (), strict: bool = True, resolv โ โ 72 โ ) -> AimObject: โ โ โฑ 73 โ โ return self._rpc_client.run_instruction(self._hash, self._handler, 'collect', (p โ โ 74 โ โ โ 75 โ def __delitem__(self, path: Union[AimObjectKey, AimObjectPath]): โ โ 76 โ โ self._rpc_client.run_instruction(self._hash, self._handler, '__delitem__', (path โ โ โ โ โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ locals โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ โ โ โ path = ('meta', 'chunks', '147ff01f895d4e828fceb6f0', 'traces') โ โ โ โ resolve_objects = False โ โ โ โ self = โ โ โ โ strict = True โ โ โ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ โ โ โ /home/luz/micromamba/envs/bosch-tracking-cu118/lib/python3.11/site-packages/aim/ext/transport/client.py:253 in โ โ run_instruction โ โ โ โ 250 โ โ โ ) โ โ 251 โ โ โ return โ โ 252 โ โ โ โ โฑ 253 โ โ return self._run_read_instructions(queue_id, resource, method, args) โ โ 254 โ โ โ 255 โ def _run_read_instructions(self, queue_id, resource, method, args): โ โ 256 โ โ endpoint = f'{self._http_protocol}{self._tracking_endpoint}/{self.uri}/read-inst โ โ โ โ โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ locals โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ โ โ โ args = (('meta', 'chunks', '147ff01f895d4e828fceb6f0', 'traces'), True, False) โ โ โ โ is_write_only = False โ โ โ โ method = 'collect' โ โ โ โ queue_id = '147ff01f895d4e828fceb6f0' โ โ โ โ resource = '5519f717-f1b9-4def-9bed-53307197ffa7' โ โ โ โ self = โ โ โ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ โ โ โ /home/luz/micromamba/envs/bosch-tracking-cu118/lib/python3.11/site-packages/aim/ext/transport/client.py:273 in โ โ _run_read_instructions โ โ โ โ 270 โ โ โ โ 271 โ โ if response.status_code == 400: โ โ 272 โ โ โ raise_exception(response.json().get('exception')) โ โ โฑ 273 โ โ return decode_tree(unpack_stream(response.iter_content(chunk_size=None))) โ โ 274 โ โ โ 275 โ def _run_write_instructions(self, instructions: [Tuple[bytes, bytes]]): โ โ 276 โ โ msg = pack_args(iter(instructions)) โ โ โ โ โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ locals โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ โ โ โ args = (('meta', 'chunks', '147ff01f895d4e828fceb6f0', 'traces'), True, False) โ โ โ โ endpoint = 'http://10.4.28.205:53800/tracking/74e8733e-ebb5-4c36-a6af-01291cf1f782/read-inst'+8 โ โ โ โ method = 'collect' โ โ โ โ queue_id = '147ff01f895d4e828fceb6f0' โ โ โ โ request_data = { โ โ โ โ โ 'resource_handler': '5519f717-f1b9-4def-9bed-53307197ffa7', โ โ โ โ โ 'method_name': 'collect', โ โ โ โ โ 'args': โ โ โ โ 'AAAAAAABAAAABgoAAAD+AAAAAAAAAAD+AAEAAAAGFAAAAP4AAAAAAAAAAP7+AAAAAAAAAAD+AAUAAAAE'+232 โ โ โ โ } โ โ โ โ resource = '5519f717-f1b9-4def-9bed-53307197ffa7' โ โ โ โ response = โ โ โ โ self = โ โ โ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ โ โ โ in aim.storage.treeutils.decode_tree:270 โ โ โ โ in aim.storage.treeutils.fold_tree:95 โ โ โ โ in iter_fold_tree:126 โ โ โ โ in aim.storage.treeutils.DecodePathsVals.__next__:201 โ โ โ โ in aim.storage.treeutils.DecodePathsVals._next:214 โ โ โ โ /home/luz/micromamba/envs/bosch-tracking-cu118/lib/python3.11/site-packages/aim/ext/transport/message_utils.py:63 in โ โ unpack_stream โ โ โ โ 60 โ โ 61 def unpack_stream(stream) -> Tuple[bytes, bytes]: โ โ 62 โ for msg in stream: โ โ โฑ 63 โ โ yield from unpack_helper(msg) โ โ 64 โ โ 65 โ โ 66 def raise_exception(server_exception): โ โ โ โ โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ locals โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ โ โ โ msg = b'#\x00\x00\x00\xfeH\x07\xfcy\xc3\xdf\xaf5\xfeamotp/bicycle\xfefirst_step\xfe\x00\t\x00\x00\x00\x02\xbโฆ โ โ โ โ stream = .generate at 0x7672f91298a0> โ โ โ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ โ โ โ /home/luz/micromamba/envs/bosch-tracking-cu118/lib/python3.11/site-packages/aim/ext/transport/message_utils.py:54 in โ โ unpack_helper โ โ โ โ 51 โ (is_blob,), tail = struct.unpack('?', tail[:1]), tail[1:] โ โ 52 โ (value_size,), tail = struct.unpack('I', tail[:4]), tail[4:] โ โ 53 โ value, tail = tail[:value_size], tail[value_size:] โ โ โฑ 54 โ assert len(tail) == 0 โ โ 55 โ if is_blob: โ โ 56 โ โ yield key, BLOB(data=value) โ โ 57 โ else: โ โ โ โ โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ locals โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ โ โ โ is_blob = False โ โ โ โ key = b'\xfeH\x07\xfcy\xc3\xdf\xaf5\xfeamotp/bicycle\xfefirst_step\xfe' โ โ โ โ key_size = 35 โ โ โ โ msg = b'#\x00\x00\x00\xfeH\x07\xfcy\xc3\xdf\xaf5\xfeamotp/bicycle\xfefirst_step\xfe\x00\t\x00\x00\x00\x0โฆ โ โ โ โ tail = b'\x1e\x00\x00\x00\xfeH\x07\xfcy\xc3\xdf\xaf5\xfeamotp/bicycle\xfefirst\xfe\x00\t\x00\x00\x00\x03\โฆ โ โ โ โ value = b'\x02\xbc\r\x00\x00\x00\x00\x00\x00' โ โ โ โ value_size = 9 โ โ โ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ ```It looks like unpack_helper() expects a single message as input. But I think using response.iter_content(chunk_size=None) does not guarantee this, e.g., I think it might receive two or more messages, causing the assertion to fail.
To reproduce
Random. Resume/continue stopped runs in a remote logging setup.
Expected behavior
Runs can be resumed without errors.
Environment
- Aim Version: v3.27.0
- Python version: 3.11.9
- pip version: 24.3.1
- OS: Linux/Ubuntu 22.04
Metadata
Metadata
Assignees
Labels
help wantedExtra attention is neededExtra attention is neededtype / bugIssue type: something isn't workingIssue type: something isn't working