Skip to content

Commit 53053ba

Browse files
authored
core: fix MetricRecorderImpl.metricSinks() ConcurrentModificationException (#12730)
``` java.util.ConcurrentModificationException at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1013) at java.base/java.util.ArrayList$Itr.next(ArrayList.java:967) at io.grpc.internal.MetricRecorderImpl.addLongCounter(MetricRecorderImpl.java:95) at io.grpc.internal.SubchannelMetrics.recordConnectionAttemptSucceeded(SubchannelMetrics.java:82) at io.grpc.internal.InternalSubchannel$TransportListener$1.run(InternalSubchannel.java:605) at io.grpc.SynchronizationContext.drain(SynchronizationContext.java:96) at io.grpc.SynchronizationContext.execute(SynchronizationContext.java:128) at io.grpc.internal.InternalSubchannel$TransportListener.transportReady(InternalSubchannel.java:591) at io.grpc.netty.shaded.io.grpc.netty.ClientTransportLifecycleManager.notifyReady(ClientTransportLifecycleManager.java:51) ``` Fix #12727
1 parent 37eb736 commit 53053ba

1 file changed

Lines changed: 2 additions & 1 deletion

File tree

core/src/main/java/io/grpc/internal/MetricRecorderImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import static com.google.common.base.Preconditions.checkNotNull;
2121

2222
import com.google.common.annotations.VisibleForTesting;
23+
import com.google.common.collect.ImmutableList;
2324
import io.grpc.CallbackMetricInstrument;
2425
import io.grpc.DoubleCounterMetricInstrument;
2526
import io.grpc.DoubleHistogramMetricInstrument;
@@ -49,7 +50,7 @@ final class MetricRecorderImpl implements MetricRecorder {
4950

5051
@VisibleForTesting
5152
MetricRecorderImpl(List<MetricSink> metricSinks, MetricInstrumentRegistry registry) {
52-
this.metricSinks = metricSinks;
53+
this.metricSinks = ImmutableList.copyOf(metricSinks);
5354
this.registry = registry;
5455
}
5556

0 commit comments

Comments
 (0)