diff --git a/loadtest/im-pressure/agent.go b/loadtest/im-pressure/agent.go index 4ca0ed6..fbfc654 100644 --- a/loadtest/im-pressure/agent.go +++ b/loadtest/im-pressure/agent.go @@ -222,8 +222,12 @@ func runAgent(ctx context.Context, cfg *Config, manifest *Manifest, machine, coo quietPeriod, _ := configDuration(cfg.DeliveryQuiet) quietTimeout, _ := configDuration(cfg.DeliveryTimeout) log.Printf("agent=%s waiting for %s of delivery quiescence", machine, quietPeriod) - if err = waitForDeliveryQuiescence(ctx, run.recorder, run.callbackQueue, quietPeriod, quietTimeout); err != nil { - return err + var quiescenceErr error + if quiescenceErr = waitForDeliveryQuiescence(ctx, run.recorder, run.callbackQueue, quietPeriod, quietTimeout); quiescenceErr != nil { + if ctx.Err() != nil { + return quiescenceErr + } + log.Printf("agent=%s delivery quiescence wait timed out; continuing with observed submission: %v", machine, quiescenceErr) } observedLocal := run.recorder.unackedObservedMessages(ledger, start.Scenario) if err = coord.submitObserved(ctx, machine, observedLocal); err != nil { @@ -247,6 +251,9 @@ func runAgent(ctx context.Context, cfg *Config, manifest *Manifest, machine, coo run.mu.Lock() base.Errors = append(base.Errors, run.errors...) run.mu.Unlock() + if quiescenceErr != nil { + base.Errors = append(base.Errors, quiescenceErr.Error()) + } // Include messages observed over WebSocket without a timely ctrl ACK. They // are confirmed server-side publishes and must participate in realtime // delivery accounting instead of being reported as unexpected traffic.