[Bug]: Python snapshot reads accept unsuccessful binary HTTP responses

オープン
#7,448 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

@stefanielizeth73-art がすでに取り組んでいます。

2026年11月11日 から。

  • #7451 @stefanielizeth73-art による — オープン

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
20/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
停滞
技術スタック
python

調査の方向性

Start at the Python SDK’s AsyncHTTPClient.git_show(..., path=...) response handling for /api/v1/snapshot/show, then check how the sync client and client.snapshot.show() use that path. Reproduce with an HTTP 503 response carrying Content-Type: application/octet-stream, and inspect the existing response/error handler. Done means failures raise the SDK error before snapshot metadata is parsed while successful binary responses retain their bytes and metadata. PR #7451 is already open.

索引モデルが issue の本文から書いたものです。

説明

Issue Origin

Reproduced through the public Python SDK against a local HTTP fixture. The fixture supplies an HTTP 503 response; no deployed OpenViking server or model was used.

Bug Description

AsyncHTTPClient.git_show(..., path=...) recognizes a snapshot blob solely by Content-Type: application/octet-stream, before checking the HTTP status. A 503 binary response therefore becomes a successful {oid, size, bytes} result. The same behavior reaches the sync client and client.snapshot.show().

Steps to Reproduce
  1. Serve HTTP 503 with Content-Type: application/octet-stream and body upstream unavailable at /api/v1/snapshot/show.
  2. Initialize AsyncHTTPClient or SyncHTTPClient against that endpoint.
  3. Call client.snapshot.show("HEAD", path="viking://resources/a.txt").
Expected Behavior

An unsuccessful HTTP response raises the existing SDK error. It cannot become snapshot file content. Successful binary responses retain their bytes and snapshot metadata.

Actual Behavior

Both clients return {"oid": "", "size": 0, "bytes": b"upstream unavailable"}. With a malformed X-Snapshot-Size on the failed response, header parsing can also mask the HTTP failure with ValueError.

Proposed Fix and Compatibility

Require a successful HTTP status before entering the existing binary branch. Route failures through the current response/error handler before reading snapshot metadata. Keep successful binary responses, missing-header defaults and JSON metadata requests unchanged. No server, storage or wire-format changes are needed.

OpenViking Version

Current main 32de68480d36593648563f749d9af7a4a817489f.

Python Version

Python 3.13.9, httpx 0.28.1.

Operating System

Windows 11.

Model Backend

Not involved.

Additional Context

This follows the SDK response-failure work in #7058 and #7358, at the separate snapshot-read entrypoint. The investigation and local reproduction were completed with Codex assistance.

主要言語
Python
スター
41.8k
フォーク
3.4k
平均マージ
19時間 29分
マージ済み PR(30日)
500

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

volcengine/OpenViking のほかの issue

volcengine/OpenViking の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。