{"record":{"id":"8dcfb03e6e4ad937","repo":"nodejs/node","slug":"isolate-map-file-not-found-at-s","errorCode":null,"errorMessage":"isolate map file not found at %s","messagePattern":"isolate map file not found at (.+?)","errorType":"exception","errorClass":"MBErr","httpStatus":null,"severity":"error","filePath":"deps/v8/tools/mb/mb.py","lineNumber":579,"sourceCode":"\n    try:\n      contents = ast.literal_eval(self.ReadFile(self.args.config_file))\n    except SyntaxError as e:\n      raise MBErr('Failed to parse config file \"%s\": %s' %\n                 (self.args.config_file, e)) from e\n\n    self.configs = contents['configs']\n    self.luci_tryservers = contents.get('luci_tryservers', {})\n    self.builder_groups = contents['builder_groups']\n    self.mixins = contents['mixins']\n\n  def ReadIsolateMap(self):\n    if not self.args.isolate_map_files:\n      self.args.isolate_map_files = [self.default_isolate_map]\n\n    for f in self.args.isolate_map_files:\n      if not self.Exists(f):\n        raise MBErr('isolate map file not found at %s' % f)\n    isolate_maps = {}\n    for isolate_map in self.args.isolate_map_files:\n      try:\n        isolate_map = ast.literal_eval(self.ReadFile(isolate_map))\n        duplicates = set(isolate_map).intersection(isolate_maps)\n        if duplicates:\n          raise MBErr(\n              'Duplicate targets in isolate map files: %s.' %\n              ', '.join(duplicates))\n        isolate_maps.update(isolate_map)\n      except SyntaxError as e:\n        raise MBErr('Failed to parse isolate map file \"%s\": %s' %\n                    (isolate_map, e)) from e\n    return isolate_maps\n\n  def ConfigFromArgs(self):\n    if self.args.config:\n      if self.args.builder_group or self.args.builder:","sourceCodeStart":561,"sourceCodeEnd":597,"githubUrl":"https://github.com/nodejs/node/blob/1b2de5e052fc0fb95fd7fb6846dcec4ade598e9e/deps/v8/tools/mb/mb.py#L561-L597","documentation":"ReadIsolateMap() iterates the -i isolate map files (default infra/mb/gn_isolate_map.pyl). For each, if self.Exists(f) is false, it raises MBErr('isolate map file not found at %s'). This is the missing-file guard for isolate map inputs, checked before any parsing.","triggerScenarios":"Running an mb.py subcommand that needs isolate info (gen with isolates, analyze) when an -i path (or the default gn_isolate_map.pyl) does not exist on disk. Exists() returns false and MBErr fires.","commonSituations":"Passing -i with a typo'd path; the default gn_isolate_map.pyl missing from a shallow/partial checkout; running from the wrong cwd so the relative default doesn't resolve.","solutions":["Check each -i path exists: `ls <path>`; correct typos or supply the right absolute path.","Run mb.py from the source root so the default infra/mb/gn_isolate_map.pyl resolves.","Restore the file via `gclient sync` if it's absent from the checkout."],"exampleFix":"// before\n  mb.py gen -i infra/mb/gn_isolatemap.pyl ...\n// after\n  mb.py gen -i infra/mb/gn_isolate_map.pyl ...","handlingStrategy":"validation","validationCode":"import os\nfor f in isolate_map_files:\n    if not os.path.isfile(f):\n        sys.exit(f'isolate map file not found at {f}')","typeGuard":"null","tryCatchPattern":"null","preventionTips":["Verify each -i path with ls before running mb.","Run from the source root so the default gn_isolate_map.pyl resolves.","Keep isolate maps under version control and synced via gclient."],"tags":["mb","isolate","missing-file","v8-build"],"backgroundTag":null,"analyzedSha":"1b2de5e052fc0fb95fd7fb6846dcec4ade598e9e","analyzedAt":"2026-08-13T00:53:24.642Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}