[ https://issues.apache.org/jira/browse/MRESOLVER-278?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17617958#comment-17617958 ]
Hudson commented on MRESOLVER-278: ---------------------------------- Build succeeded in Jenkins: Maven » Maven TLP » maven-resolver » master #58 See https://ci-maven.apache.org/job/Maven/job/maven-box/job/maven-resolver/job/master/58/ > BREAKING: Make Session extend AutoCloseable (and introduce onCloseHandlers) > --------------------------------------------------------------------------- > > Key: MRESOLVER-278 > URL: https://issues.apache.org/jira/browse/MRESOLVER-278 > Project: Maven Resolver > Issue Type: New Feature > Components: Resolver > Reporter: Tamas Cservenak > Assignee: Tamas Cservenak > Priority: Major > Fix For: 1.9.0 > > > So far, in (vanilla) Maven, the lifecycle of session was on par with > lifecycle of SISU container, as Maven does something like this: > * boot, create container > * create session > * work > * destroy container > * exit JVM > So, Maven execution is 1 session 1 container, are on par. > This is not true for cases where container (and resolver components) are > reused across several sessions, like mvnd does. Also, current code on master > (named locks adapter) uses {{@PreDestroy}} to shut down adapters, that is > invoked when container is shut down, while the adapters are created > per-session. This means that long-living mvnd daemons will shut down the > unused adapter only when daemon itself is shut down, even is session for > which adapter was created is long gone/done. > While Maven has "session scoped" notion, resolver has not. Hence, simplest > and cleanest solution is to make RepositorySystemSession have a method to > "close", denoting that "this session is done". Also, if we can provide hooks > for "onSessionClose", this resolves all the problems, as for example the > adapter, that is created per session, could be now cleanly shut down at > session end. > One gotcha: this change implies a {*}breaking change for integrators of > resolver{*}: integrator should make sure they close the session after they > are done with it. > Example changes needed for resolver users: > [https://github.com/apache/maven/pull/822] > The "pattern" to make use of this feature in resolver is following: > * stuff something into session data, ideally using computeWhenAbsent > * if absent, register a callback hook as well > * in callback, get the stuffed thing from session and if present, do > something with it -- This message was sent by Atlassian Jira (v8.20.10#820010)