Skip to content

Commit 2f63a4e

Browse files
gnodetclaude
andcommitted
[MNG-8572] Fix @PreDestroy ClassNotFoundException caused by premature ClassRealm disposal
The Plexus Disposable.dispose() lifecycle runs before Sisu's @PreDestroy callbacks. When dispose() called flush(), it disposed ClassRealms before @PreDestroy methods on beans loaded from those realms could execute, causing ClassNotFoundException. Change dispose() to only clear the cache map without disposing realms. The flush() method (used for explicit cache clearing between builds) remains unchanged. ClassRealms are disposed when the PlexusContainer shuts down after all lifecycle callbacks complete. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 29b3efb commit 2f63a4e

3 files changed

Lines changed: 3 additions & 3 deletions

File tree

impl/maven-core/src/main/java/org/apache/maven/plugin/DefaultExtensionRealmCache.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,6 @@ public void register(MavenProject project, Key key, CacheRecord record) {
149149

150150
@Override
151151
public void dispose() {
152-
flush();
152+
cache.clear();
153153
}
154154
}

impl/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,6 @@ public void register(MavenProject project, Key key, CacheRecord record) {
215215

216216
@Override
217217
public void dispose() {
218-
flush();
218+
cache.clear();
219219
}
220220
}

impl/maven-core/src/main/java/org/apache/maven/project/DefaultProjectRealmCache.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,6 @@ public void register(MavenProject project, Key key, CacheRecord record) {
125125

126126
@Override
127127
public void dispose() {
128-
flush();
128+
cache.clear();
129129
}
130130
}

0 commit comments

Comments
 (0)