Duplicate /track requests return plain text 'Duplicate event', SDK throws JSON parse error
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 76/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- typescript
調査の方向性
packages/core/src/modules/ingest/ingest.routes.ts から始めて、/track の重複応答がどのように生成されるかを確認し、次に Web SDK が空でないレスポンスボディをどのように解析するかを確認してください。重複排除期間内に同じイベントを2回送信して再現します。重複応答を SDK が再試行やコンソールエラーなしで解析できれば完了です。
索引モデルが issue の本文から書いたものです。
説明
What happens
When the ingest dedupe lock catches a duplicate request, /track answers 200 with the plain-text body Duplicate event (DUPLICATE_BODY in packages/core/src/modules/ingest/ingest.routes.ts).
The web SDK (@openpanel/sdk 1.3.1) reads every non-empty response body with JSON.parse:
const n = await i.text(); return n ? JSON.parse(n) : null
So a duplicate request throws SyntaxError: JSON Parse error: Unexpected identifier "Duplicate", the SDK retries and finally logs Max retries reached: SyntaxError: ... to the browser console. Sites that monitor console errors see this as a real-user JavaScript error.
Expected
A response the SDK can parse: either an empty body (e.g. 202) or JSON such as {"duplicate": true}.
Repro
Send the same event to /track twice within the dedupe window from the web SDK and watch the console.
Seen on a self-hosted instance with SDK 1.3.1.
- 主要言語
- TypeScript
- スター
- 7.2k
- フォーク
- 523
- 平均マージ
- 19時間 23分
- マージ済み PR(30日)
- 25
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートなし
- コントリビューションガイドなし
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
Openpanel-dev/openpanel のほかの issue
-
ClickHouse retry logs print CLICKHOUSE_URL with its password対応中かも @ppjsw が 2 日前に担当しました。 オープン
難易度 1/5 1〜3時間 初心者へのやさしさ 92/100
Openpanel-dev/openpanel#551 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
login page needs refinement再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
Openpanel-dev/openpanel#495 ·
メンテナーはふだん 1 日以内に返信
-
Session-grouped queries treat every sessionless event as one session (wrong results, ClickHouse OOM)オープン
難易度 4/5 3〜5日 初心者へのやさしさ 52/100
Openpanel-dev/openpanel#575 ·
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
Openpanel-dev/openpanel#563 ·
メンテナーはふだん 1 日以内に返信
-
Session replay: early chunks saved under the wrong session再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープン
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
Openpanel-dev/openpanel#537 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
Openpanel-dev/openpanel の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
maniator/verticopolis#1303 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 73/100
components-web-app/docs#297 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
appwrite/mcp-for-docs#23 · コメント 1 件 ·
-
`@vanilla-extract/turbopack-plugin`: "getImageSize is not a function" with Next.js 16.4.x when a `.css.ts` file imports an image対応中かも @aevarOrigo が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
vanilla-extract-css/vanilla-extract#1799 · コメント 1 件 ·
-
native
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
prime-radiant-inc/evener#4839 ·
メンテナーはふだん 1 日以内に返信