{"record":{"id":"7050414d1bdd81f7","repo":"sgl-project/sglang","slug":"tar-material-header-requires-integer-offset-data-a","errorCode":null,"errorMessage":"tar material header requires integer offset_data and size","messagePattern":"tar material header requires integer offset_data and size","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/material_io.py","lineNumber":183,"sourceCode":"    try:\n        header = json.loads(\n            base64.b64decode(\n                padded.encode(\"ascii\"), altchars=b\"-_\", validate=True\n            ).decode(\"utf-8\")\n        )\n    except Exception as exc:\n        raise ValueError(\"tar material URI has an invalid encoded header\") from exc\n    if not isinstance(header, dict):\n        raise ValueError(\"tar material URI header must be a JSON object\")\n    if header.get(\"schema\") != \"sglang.tar_member_ref/v1\":\n        raise ValueError(\n            f\"unsupported tar material header schema: {header.get('schema')!r}\"\n        )\n    try:\n        offset = int(header[\"offset_data\"])\n        size = int(header[\"size\"])\n    except (KeyError, TypeError, ValueError) as exc:\n        raise ValueError(\n            \"tar material header requires integer offset_data and size\"\n        ) from exc\n    if offset < 0 or size < 0:\n        raise ValueError(\"tar material offset_data and size must be non-negative\")\n    return (\n        Path(tar_path).expanduser(),\n        offset,\n        size,\n        str(header.get(\"member\") or \"\") or None,\n    )\n\n\ndef _safe_suffix(value: str | None) -> str | None:\n    if not value:\n        return None\n    suffix = Path(urllib.parse.urlsplit(value).path).suffix.lower()\n    if suffix and len(suffix) <= 10 and suffix[1:].isalnum():\n        return suffix","sourceCodeStart":165,"sourceCodeEnd":201,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/material_io.py#L165-L201","documentation":"The tar header's offset_data and size fields must be present and convertible to int. Missing keys (KeyError), null/wrong types (TypeError), or non-numeric strings (ValueError) are all re-raised as this single message, since without valid integers the tar member byte range cannot be located.","triggerScenarios":"A header JSON like {\"schema\": \"...\", \"offset\": 100} (wrong key name), {\"offset_data\": \"abc\", ...}, or {\"offset_data\": null, ...}.","commonSituations":"Field renaming between versions (offset vs offset_data), headers written by external tooling with string numerics, or hand-authored headers in tests.","solutions":["Use integer fields named exactly offset_data and size","Coerce on the producer side: int(member.offset_data), int(member.size) before serializing","Add a producer-side schema check (pydantic/jsonschema) matching the expected keys"],"exampleFix":"// before\nheader = {\"schema\": \"sglang.tar_member_ref/v1\", \"offset\": off, \"length\": sz}\n// after\nheader = {\"schema\": \"sglang.tar_member_ref/v1\", \"offset_data\": int(off), \"size\": int(sz)}","handlingStrategy":"try-catch","validationCode":"try:\n    int(header['offset_data']); int(header['size'])\nexcept (KeyError, TypeError, ValueError):\n    raise ValueError('tar header lacks integer offset_data/size')","typeGuard":"def header_offsets_valid(header) -> bool:\n    try:\n        return int(header['offset_data']) >= 0 and int(header['size']) >= 0\n    except (KeyError, TypeError, ValueError):\n        return False","tryCatchPattern":"try:\n    stream = _stream_tar_member_material(uri)\nexcept ValueError as e:\n    if 'offset_data and size' in str(e):\n        uri = rebuild_tar_uri(source_tar, member)  # re-emit with correct integer fields\n        stream = _stream_tar_member_material(uri)\n    else:\n        raise","preventionTips":["Coerce to int on the producer side","Use exact field names offset_data and size"],"tags":["minimax-h3","tar-uri","json-fields","material-io"],"backgroundTag":"schema-validation-failed","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}