File tree Expand file tree Collapse file tree 2 files changed +10
-4
lines changed
rsocket-core/src/main/java/io/rsocket/core Expand file tree Collapse file tree 2 files changed +10
-4
lines changed Original file line number Diff line number Diff line change 3535import io .rsocket .keepalive .KeepAliveSupport ;
3636import io .rsocket .plugins .RequestInterceptor ;
3737import java .nio .channels .ClosedChannelException ;
38+ import java .util .ArrayList ;
39+ import java .util .Collection ;
3840import java .util .concurrent .atomic .AtomicReferenceFieldUpdater ;
3941import java .util .function .Function ;
4042import java .util .function .Supplier ;
@@ -344,8 +346,9 @@ private void terminate(Throwable e) {
344346 }
345347
346348 synchronized (this ) {
347- for (IntObjectMap .PrimitiveEntry <FrameHandler > entry : activeStreams .entries ()) {
348- FrameHandler handler = entry .value ();
349+ final IntObjectMap <FrameHandler > activeStreams = this .activeStreams ;
350+ final Collection <FrameHandler > activeStreamsCopy = new ArrayList <>(activeStreams .values ());
351+ for (FrameHandler handler : activeStreamsCopy ) {
349352 if (handler != null ) {
350353 try {
351354 handler .handleError (e );
Original file line number Diff line number Diff line change 3333import io .rsocket .frame .decoder .PayloadDecoder ;
3434import io .rsocket .plugins .RequestInterceptor ;
3535import java .nio .channels .ClosedChannelException ;
36+ import java .util .ArrayList ;
37+ import java .util .Collection ;
3638import java .util .concurrent .CancellationException ;
3739import java .util .concurrent .atomic .AtomicReferenceFieldUpdater ;
3840import java .util .function .Function ;
@@ -184,8 +186,9 @@ final void doOnDispose() {
184186 }
185187
186188 private synchronized void cleanUpSendingSubscriptions () {
187- for (IntObjectMap .PrimitiveEntry <FrameHandler > entry : activeStreams .entries ()) {
188- FrameHandler handler = entry .value ();
189+ final IntObjectMap <FrameHandler > activeStreams = this .activeStreams ;
190+ final Collection <FrameHandler > activeStreamsCopy = new ArrayList <>(activeStreams .values ());
191+ for (FrameHandler handler : activeStreamsCopy ) {
189192 if (handler != null ) {
190193 handler .handleCancel ();
191194 }
You can’t perform that action at this time.
0 commit comments