Browse Source

nil checking

master
chrislu 20 hours ago
parent
commit
f15eaaf8b9
  1. 18
      weed/mq/kafka/integration/broker_client_subscribe.go

18
weed/mq/kafka/integration/broker_client_subscribe.go

@ -442,6 +442,15 @@ func (bc *BrokerClient) ReadRecords(ctx context.Context, session *BrokerSubscrib
// Try to receive first record
go func() {
// Check if stream is nil (can happen during session recreation race condition)
if session.Stream == nil {
select {
case recvChan <- recvResult{resp: nil, err: fmt.Errorf("stream is nil")}:
case <-ctx.Done():
// Context cancelled, don't send (avoid blocking)
}
return
}
resp, err := session.Stream.Recv()
select {
case recvChan <- recvResult{resp: resp, err: err}:
@ -501,6 +510,15 @@ func (bc *BrokerClient) ReadRecords(ctx context.Context, session *BrokerSubscrib
recvChan2 := make(chan recvResult, 1)
go func() {
// Check if stream is nil (can happen during session recreation race condition)
if session.Stream == nil {
select {
case recvChan2 <- recvResult{resp: nil, err: fmt.Errorf("stream is nil")}:
case <-ctx2.Done():
// Context cancelled
}
return
}
resp, err := session.Stream.Recv()
select {
case recvChan2 <- recvResult{resp: resp, err: err}:

Loading…
Cancel
Save