Skip to content

Commit 4ddd60c

Browse files
authored
Fixed code to correctly unregister a Collector that is not registered (#795)
Signed-off-by: Doug Hoard <[email protected]>
1 parent b529294 commit 4ddd60c

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

simpleclient/src/main/java/io/prometheus/client/CollectorRegistry.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,10 @@ private void assertNoDuplicateNames(Collector m, List<String> names) {
8080
public void unregister(Collector m) {
8181
synchronized (namesCollectorsLock) {
8282
List<String> names = collectorsToNames.remove(m);
83-
for (String name : names) {
84-
namesToCollectors.remove(name);
83+
if (names != null) {
84+
for (String name : names) {
85+
namesToCollectors.remove(name);
86+
}
8587
}
8688
}
8789
}

simpleclient/src/test/java/io/prometheus/client/CollectorRegistryTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ public void testUnregister() {
4242
assertEquals("c", mfs.get(0).name);
4343
}
4444

45+
@Test
46+
public void testUnregisterNonRegistered() {
47+
registry.unregister(new MyCollector());
48+
}
49+
4550
@Test
4651
public void testClear() {
4752
Collector g = Gauge.build().name("g").help("h").register(registry);

0 commit comments

Comments
 (0)