Skip to content

Commit 9439ca2

Browse files
Readiness Race
Use success count to 2 to wait for both to occur.
1 parent 7b1e789 commit 9439ca2

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

src/main/java/io/reactivesocket/ReactiveSocket.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -224,19 +224,26 @@ public final void start(Completable c) {
224224
errorStream,
225225
c,
226226
setupPayload -> {
227-
requester = Requester.createServerRequester(new ConnectionFilter(connection, ConnectionFilter.STREAMS.FROM_SERVER_ODD), setupPayload, errorStream, new Completable() {
227+
Completable two = new Completable() {
228+
229+
// wait for 2 success, or 1 error to pass on
230+
AtomicInteger count = new AtomicInteger();
228231

229232
@Override
230233
public void success() {
231-
requesterReady.success();
234+
if (count.incrementAndGet() == 2) {
235+
requesterReady.success();
236+
}
232237
}
233238

234239
@Override
235240
public void error(Throwable e) {
236241
requesterReady.error(e);
237242
}
238243

239-
});
244+
};
245+
requester = Requester.createServerRequester(new ConnectionFilter(connection, ConnectionFilter.STREAMS.FROM_SERVER_ODD), setupPayload, errorStream, two);
246+
two.success(); // now that the reference is assigned in case of synchronous setup
240247
});
241248
} else {
242249
Completable both = new Completable() {

0 commit comments

Comments
 (0)