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 35
35
import io .rsocket .keepalive .KeepAliveSupport ;
36
36
import io .rsocket .plugins .RequestInterceptor ;
37
37
import java .nio .channels .ClosedChannelException ;
38
+ import java .util .ArrayList ;
39
+ import java .util .Collection ;
38
40
import java .util .concurrent .atomic .AtomicReferenceFieldUpdater ;
39
41
import java .util .function .Function ;
40
42
import java .util .function .Supplier ;
@@ -344,8 +346,9 @@ private void terminate(Throwable e) {
344
346
}
345
347
346
348
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 ) {
349
352
if (handler != null ) {
350
353
try {
351
354
handler .handleError (e );
Original file line number Diff line number Diff line change 33
33
import io .rsocket .frame .decoder .PayloadDecoder ;
34
34
import io .rsocket .plugins .RequestInterceptor ;
35
35
import java .nio .channels .ClosedChannelException ;
36
+ import java .util .ArrayList ;
37
+ import java .util .Collection ;
36
38
import java .util .concurrent .CancellationException ;
37
39
import java .util .concurrent .atomic .AtomicReferenceFieldUpdater ;
38
40
import java .util .function .Function ;
@@ -184,8 +186,9 @@ final void doOnDispose() {
184
186
}
185
187
186
188
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 ) {
189
192
if (handler != null ) {
190
193
handler .handleCancel ();
191
194
}
You can’t perform that action at this time.
0 commit comments