{"record":{"id":"9fe90b7aa9c469cb","repo":"nodejs/node","slug":"no-node-inspector-protocol-revision-found","errorCode":null,"errorMessage":"No Node inspector protocol revision found","messagePattern":"No Node inspector protocol revision found","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"tools/inspector_protocol/roll.py","lineNumber":86,"sourceCode":"          open(path1).read() == open(path2).read())\n\n\ndef ReadV8IPRevision(node_src_path):\n  lines = open(os.path.join(node_src_path, 'deps/v8/third_party/inspector_protocol/README.v8')).readlines()\n  for line in lines:\n    line = line.strip()\n    if line.startswith(REVISION_LINE_PREFIX):\n      return line[len(REVISION_LINE_PREFIX):]\n  raise Exception('No V8 inspector protocol revision found')\n\n\ndef ReadNodeIPRevision(node_src_path):\n  lines = open(os.path.join(node_src_path, 'deps/inspector_protocol/README.node')).readlines()\n  for line in lines:\n    line = line.strip()\n    if line.startswith(REVISION_LINE_PREFIX):\n      return line[len(REVISION_LINE_PREFIX):]\n  raise Exception('No Node inspector protocol revision found')\n\n\ndef CheckoutRevision(path, revision):\n  os.chdir(path)\n  return RunCmd(['git', 'checkout', revision])\n\n\ndef GetHeadRevision(path):\n  os.chdir(path)\n  return RunCmd(['git', 'rev-parse', 'HEAD'])\n\n\ndef main(argv):\n  parser = argparse.ArgumentParser(description=(\n      \"Rolls the inspector_protocol project (upstream) into node's \"\n      \"deps/inspector_protocol (downstream).\"))\n  parser.add_argument(\"--ip_src_upstream\",\n                      help=\"The inspector_protocol (upstream) tree.\",","sourceCodeStart":68,"sourceCodeEnd":104,"githubUrl":"https://github.com/nodejs/node/blob/1b2de5e052fc0fb95fd7fb6846dcec4ade598e9e/tools/inspector_protocol/roll.py#L68-L104","documentation":"roll.py reads the currently rolled inspector_protocol revision from <node_src>/deps/inspector_protocol/README.node (again via the 'Revision: ' prefix) to compare against V8's revision and decide whether a roll is needed. Missing the marker line aborts before any work is done.","triggerScenarios":"deps/inspector_protocol/README.node is missing the 'Revision: ' line, was reformatted, or the file/dir is absent in the downstream node tree.","commonSituations":"A brand-new inspector_protocol downstream checkout never seeded with the marker; README.node manually rewritten; a partial or fresh node tree without deps/inspector_protocol populated.","solutions":["Ensure deps/inspector_protocol/README.node contains a 'Revision: <hash>' line.","Restore it from git history: `git -C <node_src> log -- deps/inspector_protocol/README.node` then checkout that revision.","Seed it manually with the current head revision (roll.py itself writes this line on success at line 161, so a one-time manual seed unblocks the first run)."],"exampleFix":"// seed the marker so the first roll can proceed\necho 'Revision: <current-ip-commit-hash>' > deps/inspector_protocol/README.node","handlingStrategy":"validation","validationCode":"import os\np=os.path.join(node_src,'deps/inspector_protocol/README.node')\nassert os.path.isfile(p), 'README.node missing'\nassert any(l.lstrip().startswith('Revision: ') for l in open(p)), 'no Revision: line'","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Let roll.py own README.node after the first successful roll.","Keep the deps/inspector_protocol directory intact between rolls."],"tags":["inspector-protocol","roll","node","configuration"],"backgroundTag":null,"analyzedSha":"1b2de5e052fc0fb95fd7fb6846dcec4ade598e9e","analyzedAt":"2026-08-13T00:53:24.642Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}