Skip to content

Commit 3ff022e

Browse files
authored
When the CachingMavenRecipeBundleResolver is closed, ensure that all cached MavenRecipeBundleResolver instances are closed as well (#7277)
1 parent 37c2d76 commit 3ff022e

1 file changed

Lines changed: 21 additions & 0 deletions

File tree

rewrite-maven/src/main/java/org/openrewrite/maven/marketplace/CachingMavenRecipeBundleResolver.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,27 @@ public synchronized RecipeBundleResolver resolverFor(RecipeBundle bundle) {
6969
return entry.createProxyResolver();
7070
}
7171

72+
@Override
73+
public void close() throws Exception {
74+
Exception deferredException = null;
75+
for (Map.Entry<String, ResolverEntry> entry : resolverCache.entrySet()) {
76+
try {
77+
ResolverEntry resolverEntry = entry.getValue();
78+
resolverEntry.resolver.close();
79+
if (resolverEntry.leases.get() > 0) {
80+
throw new IllegalStateException("Apparent resolver leak detected");
81+
}
82+
} catch (Exception e) {
83+
if (deferredException == null) {
84+
deferredException = e;
85+
}
86+
}
87+
}
88+
if (deferredException != null) {
89+
throw deferredException;
90+
}
91+
}
92+
7293
@RequiredArgsConstructor
7394
private static class ResolverEntry {
7495
private final RecipeBundle bundle;

0 commit comments

Comments
 (0)