Sentry Backend Modification for SSR Traces
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 25/100
- issue の種類
- 機能追加
- 明瞭さ
- 説明が足りない
- 活発さ
- 活発
調査の方向性
Span Links Spec と参照されているエントリーポイント sentry/search/eap/spans/attributes.py から始め、Relay と span consumer がどのようにリンクを EAP に渡すかを確認します。プロジェクトで、キャッシュされたサーバーとクライアントのトレースをリンクするための、方針が決定されクエリ可能なアプローチ(サポートされる方向とキャッシュ有効期間に基づくクエリウィンドウを含む)が定まっているか、インデックス化されたリンクが実現できない場合の属性による workaround が文書化されていれば完了です。
索引モデルが issue の本文から書いたものです。
説明
The Problem: Cached SSR pages have no connected client/server trace
SSR meta-frameworks cache the HTML/render output: a server renders a page once (build-time, first visit, or on revalidation). Later visitors get the stored result from the server (so no server trace or a disconnected one).
Probably thousands of client pageloads map to one server render.
Differences to previous_trace linking
previous_traceis a 1:1 relationship- Cached server pages are 1 origin with many consumers (1:N)
- Time-gap between server and client can be as long as the cache lifetime
What exists
- Span Links Spec: https://develop.sentry.dev/sdk/telemetry/traces/span-links/
- Relay has full support for span links (
sentry.linksandsentry.link.type) and passes them through untouched - Span consumer flattens each span link(s) into a JSON attribute
sentry.links- stored in EAP sentry.linksis not queryable (private=True)- Span Attribute support for
previous_trace
What we need
- Span links, queryable in EAP - indexed by
trace_idin both directions- Prio 1: One of multiple, different consuming traces (e.g. browser pageload trace) should be able to link to the one connecting server trace
- Prio 2: Also nice: One cached server trace should be able to link to all the client/browser traces it served
- What is the cost of this query?
- Can we get an aggregate (e.g. just the number) of it?
- Workaround (near-term solution): Register a queryable attribute (similar to previous_trace - here in code)
- we only need this workaround if the task above (links in EAP) takes too long
- Only works for N:1 lookup (like Prio 1 task from above)
- Example naming:
simple_sentry_field("cache_origin_trace") - Can we do a 1:N lookup with this attribute?
- Querying Time Window
- Being able to query links within a window that fits cache lifetimes (not assumptions of e.g. 1 hour windows)
- What are possible limitations here?
- 主要言語
- TypeScript
- スター
- 8.7k
- フォーク
- 1.9k
- 平均マージ
- 1日 18時間
- マージ済み PR(30日)
- 562
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
getsentry/sentry-javascript のほかの issue
-
Browser Waiting for: Product Owner
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
getsentry/sentry-javascript#24577 · コメント 1 件 ·
-
Task
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
getsentry/sentry-javascript#24558 · コメント 1 件 ·
-
Task
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
getsentry/sentry-javascript#24557 · コメント 1 件 ·
-
Task
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
getsentry/sentry-javascript#24556 · コメント 1 件 ·
-
Task
難易度 1/5 1〜3時間 初心者へのやさしさ 90/100
getsentry/sentry-javascript#24555 · コメント 1 件 ·
getsentry/sentry-javascript の issue をすべて見る
似ている issue
-
blocklist removal
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
MetaMask/eth-phishing-detect#296544 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
pastelsky/bundlephobia#1122 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
-
category/development priority/P2 scope/file-operations scope/testing type/enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
Enatega Customer and Rider app: Add-ons price is not visible to customer after order is placed. オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100