amplitude / amplitude/Amplitude-TypeScript

Browser SDK retries all HTTP errors including not retryable ones

オープン
#1,630 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
bug
主要言語
TypeScript
スター
180
フォーク
68
平均マージ
3日 1時間
マージ済み PR(30日)
29

説明

## Expected Behavior
According to the documentation, `flushMaxRetries` is described as: "Sets the maximum number of retries for failed upload attempts. **This is only applicable to errors that the SDK can retry.**"

Based on this documentation and standard HTTP retry best practices, the SDK should:
- **Retry** on transient/retryable errors
- **NOT retry** on permanent/client errors

When a non-retryable error (like 501) is returned, the SDK should fail immediately without exhausting retry attempts.

## Current Behavior
The SDK makes up to `flushMaxRetries` attempts even for errors that indicate permanent failures (such as 400 or 501) and will never succeed on retry.

Image

## Possible Solution
Update the retry logic to only retry truly transient errors.

## Steps to Reproduce
1. Configure Amplitude Browser SDK 2 with a custom serverUrl.
2. Set up the endpoint to return a non-retryable HTTP status code (e.g., 501).
3. Track an event.
4. Observe network requests in browser - you will see 5 retry attempts to the endpoint, all returning 501, even though this is a permanent error that will never succeed.

## Environment
- JS SDK Version: `analytics-browser@2.36.1`
- Installation Method: NPM
- Browser and Version: Chrome 145.0.7632.159

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

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

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