{"record":{"id":"59c89a47a4af68d0","repo":"docling-project/docling","slug":"no-plotable-data-found-in-args-input-file","errorCode":null,"errorMessage":"No plotable data found in {args.input_file}","messagePattern":"No plotable data found in (.+?)","errorType":"console","errorClass":"SystemExit","httpStatus":null,"severity":"warning","filePath":"perfs/plot_memory_metrics.py","lineNumber":133,"sourceCode":"        raise SystemExit(f\"Input file does not exist: {args.input_file}\")\n\n    try:\n        import matplotlib.pyplot as plt\n    except ImportError as exc:\n        raise SystemExit(\n            \"Plotting requires matplotlib. Install it in the environment first.\"\n        ) from exc\n\n    loaded_runs = []\n    for label, metrics_file in _resolve_metrics_files(args.input_file):\n        if not metrics_file.is_file():\n            raise SystemExit(f\"Metrics file does not exist: {metrics_file}\")\n        total_pages, loaded_metrics = load_points(metrics_file)\n        if total_pages:\n            loaded_runs.append((label, total_pages, loaded_metrics))\n\n    if not loaded_runs:\n        raise SystemExit(f\"No plotable data found in {args.input_file}\")\n\n    fig, ax = plt.subplots(1, 1, figsize=(12, 6))\n\n    for label, total_pages, loaded_metrics in loaded_runs:\n        point_count = min(\n            [len(total_pages)] + [len(values) for values in loaded_metrics.values()]\n        )\n        x_values = total_pages[:point_count]\n\n        for key in MEMORY_KEYS:\n            series = loaded_metrics[key][:point_count]\n            if all(value != value for value in series):\n                continue\n            metric_label = key.replace(\"_mb\", \"\").upper()\n            ax.plot(\n                x_values,\n                series,\n                label=f\"{label} {metric_label}\",","sourceCodeStart":115,"sourceCodeEnd":151,"githubUrl":"https://github.com/docling-project/docling/blob/61d76f1ff3f8428065465889f7b4577da7df704c/perfs/plot_memory_metrics.py#L115-L151","documentation":"SystemExit raised by main() in perfs/plot_memory_metrics.py when no resolved metrics file produced any plottable series. load_points() only appends a run when it contains at least one 'loaded' memory event (total_pages non-empty); if every metrics file is empty, lacks loaded events, or holds no memory data, loaded_runs stays empty and the script exits.","triggerScenarios":"Metrics files that contain only non-loaded events (e.g. conversion crashed before the 'loaded' phase), empty .jsonl files from aborted runs, or event schemas missing the 'memory_loaded_mb' payload — every run filters out, leaving nothing to plot.","commonSituations":"Plotting after benchmark runs that all failed early (OOM kills, backend crashes before page loading completed); plotting per-page metrics files produced by a different script version with changed event names; empty artifacts from a job that was cancelled immediately.","solutions":["Inspect one metrics file to confirm 'loaded' events with memory payloads exist: 'grep loaded metrics.jsonl'.","Re-run the benchmark to completion for at least one configuration so loaded-phase memory events are recorded.","If event names changed across script versions, regenerate metrics with the current iterate_pdf_pages.py rather than plotting old artifacts."],"exampleFix":"# before\n$ head metrics.jsonl   # empty or only {\"event\": \"start\", ...}\n$ python perfs/plot_memory_metrics.py summary.json\n# SystemExit: No plotable data found in summary.json\n\n# after: rerun a successful benchmark first\n$ python perfs/iterate_pdf_pages.py --input-dir ./pdfs --metrics-file metrics.jsonl --report-file summary.json\n$ python perfs/plot_memory_metrics.py summary.json","handlingStrategy":"validation","validationCode":"def has_loaded_events(metrics_path: str) -> bool:\n    with open(metrics_path, encoding=\"utf-8\") as fh:\n        for line in fh:\n            if '\"loaded\"' in line and \"memory_loaded_mb\" in line:\n                return True\n    return False\n\nif not any(has_loaded_events(p) for p in metrics_paths):\n    raise SystemExit(\"no loaded-phase memory events; rerun benchmark to completion\")","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Confirm benchmark runs reached the loaded phase (grep 'loaded' metrics.jsonl) before plotting.","Treat empty metrics artifacts from aborted runs as invalid and rerun them.","Regenerate old metrics with the current script version rather than plotting stale event schemas."],"tags":["perf-tooling","empty-data","cli","memory-metrics"],"backgroundTag":null,"analyzedSha":"61d76f1ff3f8428065465889f7b4577da7df704c","analyzedAt":"2026-08-14T23:53:18.727Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}