Skip to main content
バージョン 4.0.0 では SDK のリトライ方法が変わり、安全に繰り返せるものだけを繰り返すようになりました。メソッド、オプション、エクスポートの名前変更や削除はありません。

要件

変更なし: Node.js 20 以降、またはブラウザ。ESM と CommonJS。

破壊的変更のまとめ

429 はリトライされなくなった

RATE_LIMITED は、ルートごとの時間枠と、約 30 分続くことがあるアカウントまたは IP のブロックの両方を表すため、SDK はリトライしなくなりました。これにはシンプルアップロードの制限と TOO_MANY_CONCURRENT_UPLOADS も含まれます。自分で処理し、しばらく待ってから再試行してください:
唯一の例外は、マルチパートのパートでの TOO_MANY_CONCURRENT_CHUNKS です。サーバーはパートを読み取る前に拒否するため、SDK は maxRetries の範囲内で再送します。

書き込みは 1 回のみ試行

ネットワークエラーと 5xx がリトライされるのは、GET の呼び出しとマルチパートアップロードのパートだけになりました。次の呼び出しは 1 回のみ試行されます:
  • シンプルな put()、およびマルチパートアップロードの開始・完了・中止
  • update()、copy()、move()、delete()
  • rules.set()、uploadTokens.create()、shares.create()、shares.revoke()
書き込みを自分でリトライするのは、繰り返しても安全な場合だけにしてください。たとえば、同じ名前に overwrite: true で行う put() です。書き込みを自分でリトライするを参照してください。

リトライ回数の削減とバックオフの短縮

maxRetries のデフォルトは 2 (以前は 5) になり、バックオフの上限は 8 秒 (以前は 30 秒) になりました。読み取りとマルチパートのパートで以前の回数を維持するには:
これで 429 や書き込みのリトライが復活するわけではありません。

SavedRule.active_from はオプションに

API が active_from を送信するのは、delete_after_days を持つルールだけです。TypeScript では undefined を処理してください:

ID が 1 つの delete([id])

ID が 1 つのバッチも、他のバッチと同様に、例外をスローする代わりに failed で PREFIX_NOT_ALLOWED を報告するようになりました:
プレーンな文字列を渡す delete(id) は引き続きスローします。

RATE_LIMIT は非推奨

サービスは RATE_LIMIT を送信しなくなりました。アカウントまたは IP のブロックは RATE_LIMITED です。既存の比較がコンパイルできるよう古いコードは BlobErrorCode に残っていますが、RATE_LIMITED に切り替えてください。DUPLICATE_RULE_PREFIX が追加されました。

修正

  • 読み取り途中で途切れたレスポンスボディはネットワークエラーとして扱われるようになりました。GET の呼び出しとマルチパートのパートではリトライされ、それ以外では元の fetch のエラーがスローされます (以前は UNKNOWN_ERROR でした)。
  • 失敗したマルチパートアップロードは、中止する前に処理中のパートを待つようになりました。これにより、中止後にパートが届くことも、put() より長く続くリクエストが残ることもありません。

チェックリスト

1

429 を自分で処理する

RATE_LIMITED を捕捉してバックオフしてください。SDK はもうリトライしません。
2

書き込みを見直す

独自のリトライは、繰り返しても安全な書き込みにだけ追加してください。
3

リトライ回数を決める

読み取りとマルチパートのパートで以前の試行回数に依存していた場合は、{ maxRetries: 5 } を渡してください。
4

型を更新する

active_from が undefined の場合を処理し、RATE_LIMIT を RATE_LIMITED に置き換えてください。