#21446: Completion events must not be swallowed if chasing
This commit is contained in:
parent
4821fb158e
commit
b2f0ca6750
4 changed files with 1329 additions and 1169 deletions
|
|
@ -842,6 +842,12 @@ final class GraphInterpreter(
|
|||
connection.portState = currentState | (OutClosed | InFailed)
|
||||
connection.slot = Failed(ex, connection.slot)
|
||||
if ((currentState & (Pulling | Pushing)) == 0) enqueue(connection)
|
||||
else if (chasedPush eq connection) {
|
||||
// Abort chasing so Failure is not lost (chasing does NOT decode the event but assumes it to be a PUSH
|
||||
// but we just changed the event!)
|
||||
chasedPush = NoEvent
|
||||
enqueue(connection)
|
||||
}
|
||||
}
|
||||
if ((currentState & OutClosed) == 0) completeConnection(connection.outOwnerId)
|
||||
}
|
||||
|
|
@ -853,6 +859,12 @@ final class GraphInterpreter(
|
|||
if ((currentState & OutClosed) == 0) {
|
||||
connection.slot = Empty
|
||||
if ((currentState & (Pulling | Pushing | InClosed)) == 0) enqueue(connection)
|
||||
else if (chasedPull eq connection) {
|
||||
// Abort chasing so Cancel is not lost (chasing does NOT decode the event but assumes it to be a PULL
|
||||
// but we just changed the event!)
|
||||
chasedPull = NoEvent
|
||||
enqueue(connection)
|
||||
}
|
||||
}
|
||||
if ((currentState & InClosed) == 0) completeConnection(connection.inOwnerId)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue