mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
Fix log db batch flush flake (#19959)
## Why The log DB writer batches tracing events before inserting them into SQLite, but `tokio::time::interval` produces an immediate first tick. That meant the inserter could flush the first accepted log entry before `batch_size` was reached, making `configured_batch_size_flushes_without_explicit_flush` timing-sensitive in CI. ## What Changed - Consume the interval's startup tick before entering the inserter loop, so interval flushing starts after the configured delay. - Remove the test's startup sleep, which was masking the race instead of proving the batch-size behavior. ## Validation - `cargo test -p codex-state` - `cargo test -p codex-state configured_batch_size_flushes_without_explicit_flush` passed 3 consecutive focused runs - PR checks passed across `rust-ci`, Bazel, `ci`, `sdk`, `cargo-deny`, Codespell, blob-size policy, and CLA
This commit is contained in:
committed by
GitHub
Unverified
parent
3377afd84a
commit
7f7c7c2c07
@@ -367,6 +367,8 @@ async fn run_inserter(
|
||||
) {
|
||||
let mut buffer = Vec::with_capacity(config.batch_size);
|
||||
let mut ticker = tokio::time::interval(config.flush_interval);
|
||||
// Consume the immediate startup tick so entries flush after the interval.
|
||||
ticker.tick().await;
|
||||
loop {
|
||||
tokio::select! {
|
||||
maybe_command = receiver.recv() => {
|
||||
@@ -645,7 +647,6 @@ mod tests {
|
||||
flush_interval: std::time::Duration::from_secs(60),
|
||||
},
|
||||
);
|
||||
tokio::time::sleep(std::time::Duration::from_millis(10)).await;
|
||||
|
||||
let guard = tracing_subscriber::registry()
|
||||
.with(
|
||||
|
||||
Reference in New Issue
Block a user