getsentry / getsentry/sentry-javascript

Link cache-hits to the trace that filled the cache entry

オープン
#24,294 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
javascript
主要言語
TypeScript
スター
8.7k
フォーク
1.8k
平均マージ
1日 17時間
マージ済み PR(30日)
523

説明

*Example:* a product page uses

```
async function getProducts() {
'use cache';
cacheLife('hours');
return db.query('SELECT * FROM products');
}
```

Visitor A at 09:00 misses. The DB query runs, 800 ms, trace A. Visitor B at 14:00 gets a 2 ms hit and complains about yesterday's price. B's trace shows a fast green `cache.get` and nothing else. Trace A, where the content came from, cannot be found from B.

*Solves:* you can navigate from any cache hit to the render that produced the content. One bad render can serve thousands of visitors, and today the render is the one trace you cannot reach.

*Fix idea:* at handler `set`, store the active trace context keyed by cache-key digest (mechanism per the transport decision, 3.2). At a `get` hit, always attach a real span link: `span.addLink()` with `sentry.link.type: 'cache_origin'` pointing at the fill span. The link is unconditional and the durable data model; it renders in the span drawer today and needs no SDK change once Sentry stores links first-class. Separately, duplicate it into the flat bridge attribute, but only if the backend meeting lands on "EAP links take too long". The prototype verified the link round-trips. Acceptance: an E2E miss/hit pair shows the span link on the hit transaction, independent of the bridge attribute.

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

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

調査の方向性

Start by locating the cache handler's set and get paths and reviewing the transport decision in section 3.2, then inspect the existing prototype's round-trip behavior. Add an end-to-end miss/hit case and verify that the hit transaction shows a cache_origin span link independently of the flat bridge attribute.

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

評価

技術スタック
typescript
領域
observability
issue の種類
機能追加
難易度
4/5
見積もり時間
3〜5日
活発さ
活発
明瞭さ
おおむね明確
初心者へのやさしさ
48/100

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

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