use client timeout wait

This commit is contained in:
chrislu
2025-10-14 15:40:01 -07:00
parent 4766534b84
commit 7c0c212d33
2 changed files with 5 additions and 4 deletions
@@ -555,7 +555,9 @@ func (bc *BrokerClient) ReadRecords(ctx context.Context, session *BrokerSubscrib
}
readStart := time.Now()
ctx2, cancel2 := context.WithTimeout(context.Background(), currentTimeout)
// CRITICAL: Use parent context (ctx) to respect client's MaxWaitTime deadline
// The per-record timeout is combined with the overall fetch deadline
ctx2, cancel2 := context.WithTimeout(ctx, currentTimeout)
recvChan2 := make(chan recvResult, 1)
go func() {
+2 -3
View File
@@ -244,9 +244,8 @@ func (h *Handler) handleFetch(ctx context.Context, correlationID uint32, apiVers
// Phase 2: Wait for all results with adequate timeout for CI environments
// CRITICAL: We MUST return a result for every requested partition or Sarama will error
results := make([]*partitionFetchResult, len(pending))
// Deadline must be longer than subscriber's record batching timeout (1s) to avoid premature timeout
// Add 500ms buffer to account for network and processing overhead
deadline := time.After(1500 * time.Millisecond)
// Use the client's requested MaxWaitTime
deadline := time.After(time.Duration(maxWaitMs) * time.Millisecond)
// Collect results one by one with shared deadline
for i, pf := range pending {