mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2025-11-08 20:14:45 +08:00
nil checking
This commit is contained in:
@@ -442,6 +442,15 @@ func (bc *BrokerClient) ReadRecords(ctx context.Context, session *BrokerSubscrib
|
|||||||
|
|
||||||
// Try to receive first record
|
// Try to receive first record
|
||||||
go func() {
|
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()
|
resp, err := session.Stream.Recv()
|
||||||
select {
|
select {
|
||||||
case recvChan <- recvResult{resp: resp, err: err}:
|
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)
|
recvChan2 := make(chan recvResult, 1)
|
||||||
|
|
||||||
go func() {
|
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()
|
resp, err := session.Stream.Recv()
|
||||||
select {
|
select {
|
||||||
case recvChan2 <- recvResult{resp: resp, err: err}:
|
case recvChan2 <- recvResult{resp: resp, err: err}:
|
||||||
|
|||||||
Reference in New Issue
Block a user