You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In addition, the OperatorPublish.connect() method is inherently racy: two concurrent connect calls may succeed, one kicking out the upstream subscriber of the other.
OriginSubscriber.requestMore may overflow
originOutstanding.addAndGet() may turn negative
Retention of subscribers after completion event.
After making all relevant fields and classes package-private, the following test fails:
Note that blindly evicting values from ss while completing in drainQueues() is wrong too, because if there is a concurrent subscription in the works, its tracking recod in state.ss and subscribers may get deleted as well, instead of letting it wait for the next connect().
/cc @davidmoten: please look at these issues while you fix OperatorPublish for #2803.
The text was updated successfully, but these errors were encountered:
Reconnect issue
The following test fails because in OperatorPublish, the
state.getOrigin()
still holds the subscriber of a previous connection:However, it works with
share()
:connect() is racy
In addition, the
OperatorPublish.connect()
method is inherently racy: two concurrent connect calls may succeed, one kicking out the upstream subscriber of the other.OriginSubscriber.requestMore may overflow
originOutstanding.addAndGet()
may turn negativeRetention of subscribers after completion event.
After making all relevant fields and classes package-private, the following test fails:
Note that blindly evicting values from ss while completing in drainQueues() is wrong too, because if there is a concurrent subscription in the works, its tracking recod in state.ss and subscribers may get deleted as well, instead of letting it wait for the next connect().
/cc @davidmoten: please look at these issues while you fix OperatorPublish for #2803.
The text was updated successfully, but these errors were encountered: