-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sentry への performance 報告が動いていなさそう #61
Comments
まずは、 もし再現すれば、 CrobJob が利用しているイメージでは無く、直接 cargo run したときと挙動を比較したい。 |
GiganticMinecraft/seichi_infra#1095 で直接 seichi-game-data-server を (今のところ僕のみ) 見れるようにしたので、ローカルから繋いで (DB はローカルで建てて) デバッグしてみたが、 |
パフォーマンス報告とエラー報告の両方が動いた例:
この |
Mock upstream repository を用いてパフォーマンス報告が動いた例 gRPC で繋ぎに行っている pub struct MockUpstreamRepository;
#[async_trait::async_trait]
impl<S> PlayerStatsRepository<S> for MockUpstreamRepository
where
S: Send + 'static,
{
async fn fetch_stats_snapshot_of_all_players(&self) -> anyhow::Result<StatsSnapshot<S>> {
Ok(StatsSnapshot {
utc_timestamp: chrono::Utc::now(),
player_stats: HashMap::new(),
})
}
} それを async fn stats_repository_impl() -> anyhow::Result<
impl PlayerStatsRepository<BreakCount>
+ PlayerStatsRepository<BuildCount>
+ PlayerStatsRepository<PlayTicks>
+ PlayerStatsRepository<VoteCount>,
> {
Ok(infra_upstream_repository_impl::MockUpstreamRepository {})
} なんと動く (該当 transaction)。 そうはならんやろ |
より詳細な切り分けgRPC クライアントを初期化するかしないかで Sentry に performance 報告が飛ぶか飛ばないかが分かれてる? 例えば、これだと #[tracing::instrument]
async fn fetch_and_record_all() -> anyhow::Result<()> {
let stats_repository = stats_repository_impl().await?;
Ok(())
} 次のようになり、Sentry に API コールは行われず、transaction も生えないのだが、
何もせずにすぐ抜けると #[tracing::instrument]
async fn fetch_and_record_all() -> anyhow::Result<()> {
Ok(())
} transaction が生える
|
動いた例
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
...
fetch_and_record_all().await?;
tokio::time::sleep(Duration::from_secs(1)).await; // <---
Ok(())
} 実行ログ
|
ingestor
を起動すると sentry client が enable されるが、終了時に performance 情報を Sentry に送信していない。
終了時より前、 root span を出るタイミングにて sentry client は Sentry に performance 情報を送信開始し、sentry client が drop されるタイミングで Sentry へのリクエストを flush しきるはずなので、何かがおかしい。
今のところ、アプリケーション側の問題なのか
seichi_infra
での設定による問題なのかは不明 (ローカルで、データソースを Mock に切り替えたうえで実行したところ正常に報告されることを確認している)。The text was updated successfully, but these errors were encountered: