3939import com .datastax .oss .driver .internal .core .metadata .MetadataManager .RefreshSchemaResult ;
4040import com .datastax .oss .driver .internal .core .metadata .NodeStateEvent ;
4141import com .datastax .oss .driver .internal .core .metadata .NodeStateManager ;
42+ import com .datastax .oss .driver .internal .core .metrics .NodeMetricUpdater ;
4243import com .datastax .oss .driver .internal .core .metrics .SessionMetricUpdater ;
4344import com .datastax .oss .driver .internal .core .pool .ChannelPool ;
4445import com .datastax .oss .driver .internal .core .util .Loggers ;
@@ -549,10 +550,11 @@ private void close() {
549550
550551 // clear metrics to prevent memory leak
551552 for (Node n : metadataManager .getMetadata ().getNodes ().values ()) {
552- ((DefaultNode ) n ).getMetricUpdater ().clearMetrics ();
553+ NodeMetricUpdater updater = ((DefaultNode ) n ).getMetricUpdater ();
554+ if (updater != null ) updater .clearMetrics ();
553555 }
554556
555- DefaultSession . this . metricUpdater .clearMetrics ();
557+ if ( metricUpdater != null ) metricUpdater .clearMetrics ();
556558
557559 List <CompletionStage <Void >> childrenCloseStages = new ArrayList <>();
558560 for (AsyncAutoCloseable closeable : internalComponentsToClose ()) {
@@ -575,10 +577,11 @@ private void forceClose() {
575577
576578 // clear metrics to prevent memory leak
577579 for (Node n : metadataManager .getMetadata ().getNodes ().values ()) {
578- ((DefaultNode ) n ).getMetricUpdater ().clearMetrics ();
580+ NodeMetricUpdater updater = ((DefaultNode ) n ).getMetricUpdater ();
581+ if (updater != null ) updater .clearMetrics ();
579582 }
580583
581- DefaultSession . this . metricUpdater .clearMetrics ();
584+ if ( metricUpdater != null ) metricUpdater .clearMetrics ();
582585
583586 if (closeWasCalled ) {
584587 // onChildrenClosed has already been scheduled
0 commit comments