Skip to content

Commit 5fe0117

Browse files
authored
Fix concurrent access to frameMetrics listener (#2823)
* changed metrics listener map from HashMap to ConcurrentHashMap * trackedWindows is now a CopyOnWriteArraySet
1 parent f274c79 commit 5fe0117

File tree

2 files changed

+12
-5
lines changed

2 files changed

+12
-5
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Changelog
22

3+
## Unreleased
4+
5+
### Fixes
6+
7+
- Fix concurrent access to frameMetrics listener ([#2823](https://github.com/getsentry/sentry-java/pull/2823))
8+
39
## 6.25.0
410

511
### Features

sentry-android-core/src/main/java/io/sentry/android/core/internal/util/SentryFrameMetricsCollector.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,23 +19,24 @@
1919
import io.sentry.util.Objects;
2020
import java.lang.ref.WeakReference;
2121
import java.lang.reflect.Field;
22-
import java.util.HashMap;
23-
import java.util.HashSet;
22+
import java.util.Map;
2423
import java.util.Set;
2524
import java.util.UUID;
25+
import java.util.concurrent.ConcurrentHashMap;
26+
import java.util.concurrent.CopyOnWriteArraySet;
2627
import org.jetbrains.annotations.ApiStatus;
2728
import org.jetbrains.annotations.NotNull;
2829
import org.jetbrains.annotations.Nullable;
2930

3031
@ApiStatus.Internal
3132
public final class SentryFrameMetricsCollector implements Application.ActivityLifecycleCallbacks {
3233
private final @NotNull BuildInfoProvider buildInfoProvider;
33-
private final @NotNull Set<Window> trackedWindows = new HashSet<>();
34+
private final @NotNull Set<Window> trackedWindows = new CopyOnWriteArraySet<>();
3435
private final @NotNull SentryOptions options;
3536
private @Nullable Handler handler;
3637
private @Nullable WeakReference<Window> currentWindow;
37-
private final @NotNull HashMap<String, FrameMetricsCollectorListener> listenerMap =
38-
new HashMap<>();
38+
private final @NotNull Map<String, FrameMetricsCollectorListener> listenerMap =
39+
new ConcurrentHashMap<>();
3940
private boolean isAvailable = false;
4041
private final WindowFrameMetricsManager windowFrameMetricsManager;
4142

0 commit comments

Comments
 (0)