@@ -21,6 +21,8 @@ public final class OtelLifecycleParticipant extends AbstractMavenLifecyclePartic
2121
2222  private static final Logger logger = LoggerFactory.getLogger(OtelLifecycleParticipant.class);
2323
24+   private final OpenTelemetrySdkService openTelemetrySdkService;
25+ 
2426  private final OtelExecutionListener otelExecutionListener;
2527
2628  /**
@@ -30,6 +32,7 @@ public final class OtelLifecycleParticipant extends AbstractMavenLifecyclePartic
3032  @Inject
3133  OtelLifecycleParticipant(
3234      OpenTelemetrySdkService openTelemetrySdkService, SpanRegistry spanRegistry) {
35+     this.openTelemetrySdkService = openTelemetrySdkService;
3336    this.otelExecutionListener = new OtelExecutionListener(spanRegistry, openTelemetrySdkService);
3437  }
3538
@@ -56,8 +59,16 @@ public void afterProjectsRead(MavenSession session) {
5659          .setExecutionListener(
5760              new ChainedExecutionListener(this.otelExecutionListener, initialExecutionListener));
5861      logger.debug(
59-           "OpenTelemetry: OpenTelemetry extension registered as execution listener. InitialExecutionListener: " 
60-               +  initialExecutionListener);
62+           "OpenTelemetry: OpenTelemetry extension registered as execution listener. InitialExecutionListener: {}", 
63+           initialExecutionListener);
6164    }
6265  }
66+ 
67+   @Override
68+   public void afterSessionEnd(MavenSession session) {
69+     // Workaround https://issues.apache.org/jira/browse/MNG-8217
70+     // close OpenTelemetry SDK in `afterSessionEnd()`
71+     logger.debug("OpenTelemetry: After Maven session end, close OpenTelemetry SDK");
72+     openTelemetrySdkService.close();
73+   }
6374}
0 commit comments