File tree Expand file tree Collapse file tree 1 file changed +13
-2
lines changed Expand file tree Collapse file tree 1 file changed +13
-2
lines changed Original file line number Diff line number Diff line change @@ -531,8 +531,19 @@ func (d *DefaultServerDispatcher) messagePump() {
531531 }
532532 if d .pendingRequestState .HasPendingRequest (clientID ) {
533533 // Current request for client timed out. Removing request and triggering cancel callback
534- q , _ := d .queueMap .Get (clientID )
535- bundle , _ := q .Peek ().(RequestBundle )
534+ q , found := d .queueMap .Get (clientID )
535+ if ! found {
536+ // Possible race condition: queue was already removed
537+ log .Errorf ("dispatcher timeout for client %s triggered, but no request queue found" , clientID )
538+ continue
539+ }
540+ el := q .Peek ()
541+ if el == nil {
542+ // Should never happen
543+ log .Error ("dispatcher timeout for client %s triggered, but no pending request found" , clientID )
544+ continue
545+ }
546+ bundle , _ := el .(RequestBundle )
536547 d .CompleteRequest (clientID , bundle .Call .UniqueId )
537548 log .Infof ("request %v for %v timed out" , bundle .Call .UniqueId , clientID )
538549 if d .onRequestCancel != nil {
You can’t perform that action at this time.
0 commit comments