commaai/openpilot · error · Exception

error getting route metadata: cannot find any uploaded logs

Error message

error getting route metadata: cannot find any uploaded logs

What it means

load_route_metadata() needs at least one uploaded log to read initData/carParams from; it takes the first non-None entry of route.log_paths() and fails if none exist. Without uploaded rlogs the clip tool cannot restore params or determine the git origin, so it aborts early with this Exception (note: generic Exception, not RuntimeError).

Source

Thrown at openpilot/tools/clip/run.py:217

    if result is None:
      raise StopIteration("No more frames")
    return result

  def stop(self):
    self._stop.set()
    while not self._queue.empty():
      try:
        self._queue.get_nowait()
      except queue.Empty:
        break
    self._thread.join(timeout=2.0)


def load_route_metadata(route):
  from openpilot.common.params import Params, UnknownKeyName
  path = next((item for item in route.log_paths() if item), None)
  if not path:
    raise Exception('error getting route metadata: cannot find any uploaded logs')
  lr = LogReader(path)
  init_data, car_params = lr.first('initData'), lr.first('carParams')

  params = Params()
  for entry in init_data.params.entries:
    try:
      params.put(entry.key, params.cpp2python(entry.key, entry.value), block=True)
    except UnknownKeyName:
      pass

  origin = init_data.gitRemote.split('/')[3] if len(init_data.gitRemote.split('/')) > 3 else 'unknown'
  return {
    'version': init_data.version, 'route': route.name.canonical_name,
    'car': car_params.carFingerprint if car_params else 'unknown', 'origin': origin,
    'branch': init_data.gitBranch, 'commit': init_data.gitCommit[:7], 'modified': str(init_data.dirty).lower(),
  }

View on GitHub (pinned to 516ec1e682)

Solutions

  1. Verify the route exists and is accessible: check route.log_paths() length and contents, and confirm the route appears at comma.ai/userdata
  2. Re-authenticate (python tools/lib/auth.py) if the API hides logs due to an expired token
  3. For local-only routes, use a code path that reads local segment dirs instead of load_route_metadata

Example fix

# before
meta = load_route_metadata(Route("b0c9d232|2024-01-01--00-00-00"))

# after
route = Route("b0c9d232|2024-01-01--00-00-00")
if not any(route.log_paths()):
    raise SystemExit("route has no uploaded logs; check route name and access")
meta = load_route_metadata(route)
Defensive patterns

Strategy: try-catch

Validate before calling

log_paths = [p for p in route.log_paths() if p]
assert log_paths, 'route has no uploaded logs - check route name and account access'

Try / catch

try:
    meta = load_route_metadata(route)
except Exception as e:  # note: raised as generic Exception, not RuntimeError
    if 'cannot find any uploaded logs' in str(e):
        raise SystemExit('route has no uploaded logs; verify route id and run tools/lib/auth.py')
    raise

Prevention

When it happens

Trigger: Calling load_route_metadata(route) for a route whose log_paths() are all None - un-uploaded route, private/bogus dongle id, or wrong route string; API returned empty log listings because the route does not belong to the authenticated account.

Common situations: Route name typo or fabricated route id; route from another user's dongle without access; local-only routes never pushed to comma servers.

Related errors


AI-assisted analysis of commaai/openpilot@516ec1e682 (2026-08-15). Data as JSON: /api/errors/b82bea352998aaee. Report an issue: GitHub.