sgl-project/sglang · error · Error

This browser does not support gzip stream decoding

Error message

This browser does not support gzip stream decoding

What it means

RadixTree::commit_loading_onboard / commit_writing_through in tree_v2 are commit-stage stubs: they no-op when the tree is disabled but throw 'Not implemented yet' otherwise. The two-phase write-through/onboard IO protocol's commit step is unfinished in this tree version.

Source

Thrown at python/sglang/multimodal_gen/apps/realtime_webui/decoder_worker.js:15

const RAW_RGB_CONTENT_TYPE = "application/x-raw-rgb";
const RAW_RGB_DELTA_GZIP_CONTENT_TYPE = "application/x-raw-rgb-delta-gzip";
const RAW_RGBA_DELTA_GZIP_CONTENT_TYPE = "application/x-raw-rgba-delta-gzip";
const WEBP_FRAME_CONTENT_TYPE = "image/webp";
const JPEG_FRAME_CONTENT_TYPE = "image/jpeg";

let lastFrame = null;

function reset() {
  lastFrame = null;
}

async function gunzipBytes(payload) {
  if (typeof DecompressionStream === "undefined") {
    throw new Error("This browser does not support gzip stream decoding");
  }
  const stream = new Blob([payload]).stream().pipeThrough(new DecompressionStream("gzip"));
  return new Uint8Array(await new Response(stream).arrayBuffer());
}

async function restoreDeltaGzipFrames(header, payload) {
  const frameBytes = Number(header.bytes_per_frame);
  const count = Number(header.num_frames);
  const expectedSize = frameBytes * count;
  const restored = await gunzipBytes(payload);
  if (restored.length !== expectedSize) {
    throw new Error(`delta payload size mismatch: expected ${expectedSize}, got ${restored.length}`);
  }

  let previous = header.delta_reference === "previous-frame" ? lastFrame : null;
  if (header.delta_reference === "previous-frame") {
    if (!previous) throw new Error("Missing previous frame for delta payload");
    if (previous.byteLength !== frameBytes) {

View on GitHub (pinned to 0132848349)

Solutions

  1. Disable hicache with tree_v2 so all these IO methods take the disabled fast path
  2. Use the v1/default radix cache backend for hierarchical caching
  3. Upgrade once the tree_v2 IO commit path is implemented upstream
Defensive patterns

Strategy: fallback

Validate before calling

if use_hicache:
    assert tree_backend != "tree_v2", "tree_v2 commit_writing_through/commit_loading_onboard are stubs"

Try / catch

try:
    tree.commit_writing_through(ticket, ok)
except RuntimeError as e:
    if "Not implemented yet" in str(e):
        log.warning("tree_v2 IO commit unsupported; ticket dropped")
    else:
        raise

Prevention

When it happens

Trigger: Using tree_v2 with hicache enabled such that a write-through or onboard operation reaches its commit stage — commit_writing_through(ticket, ok) or commit_loading_onboard(ticket, ok) gets invoked after the (stubbed) begin phase, hitting the throw instead of the disabled fast path.

Common situations: Hierarchical cache enabled with the tree_v2 backend, where the IO ticket commit callbacks run during cache insert/lookup finalization; version upgrades enabling previously dormant code paths.

Related errors


AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28). Data as JSON: /api/errors/dc82cea472c7f56c. Report an issue: GitHub.