friendsofhyperf / sentry

[READ-ONLY]The sentry SDK for Hyperf.
MIT License
16 stars 4 forks source link

關於 Hub Factory 的一些疑問 #5

Closed albertcht closed 11 months ago

albertcht commented 11 months ago
  1. Hub Factory 中使用的 ClientBuilder 是 singleton 這個沒問題,但好奇下面這些動作是否能在 ClientBuilder 中一起完成初始化就好?
    
    $options = $clientBuilder->getOptions();
    $userIntegrations = $this->resolveIntegrationsFromUserConfig($container);

$options->setIntegrations(static function (array $integrations) use ($options, $userIntegrations, $container) { // ... });


> 從 client builder 中好像沒發現會在 request 中造成 context 污染的狀態,目前如果將第 1 點併入 ClientBuilder 中 qps 會有明顯的提升

2. Hub 中的 Sentry Client 由於 Client Builder 是 singleton,這裡的 `getClient` 方法看起來也是 singleton,但這可能會造成協程環境中多個請求使用同個 client 而產生上下文錯誤嗎?

tap(new Hub($clientBuilder->getClient()), fn ($hub) => SentrySdk::setCurrentHub($hub));



3. 是否一定需要依賴監聽 RequestReceived 事件來完成每次請求的 hub 初始化呢?是否有可能在 SentrySdk 中的 getCurrentHub 方法中被呼叫時再初始化 hub 來實現 lazy loading?這樣又可以再減少一些請求的初始化開銷
huangdijia commented 11 months ago

有其他问题欢迎继续交流探讨