4646import com .datastax .oss .driver .internal .core .metadata .MetadataManager .RefreshSchemaResult ;
4747import com .datastax .oss .driver .internal .core .metadata .NodeStateEvent ;
4848import com .datastax .oss .driver .internal .core .metadata .NodeStateManager ;
49+ import com .datastax .oss .driver .internal .core .metrics .NodeMetricUpdater ;
4950import com .datastax .oss .driver .internal .core .metrics .SessionMetricUpdater ;
5051import com .datastax .oss .driver .internal .core .pool .ChannelPool ;
5152import com .datastax .oss .driver .internal .core .util .Loggers ;
@@ -571,10 +572,11 @@ private void close() {
571572
572573 // clear metrics to prevent memory leak
573574 for (Node n : metadataManager .getMetadata ().getNodes ().values ()) {
574- ((DefaultNode ) n ).getMetricUpdater ().clearMetrics ();
575+ NodeMetricUpdater updater = ((DefaultNode ) n ).getMetricUpdater ();
576+ if (updater != null ) updater .clearMetrics ();
575577 }
576578
577- DefaultSession . this . metricUpdater .clearMetrics ();
579+ if ( metricUpdater != null ) metricUpdater .clearMetrics ();
578580
579581 List <CompletionStage <Void >> childrenCloseStages = new ArrayList <>();
580582 for (AsyncAutoCloseable closeable : internalComponentsToClose ()) {
@@ -597,10 +599,11 @@ private void forceClose() {
597599
598600 // clear metrics to prevent memory leak
599601 for (Node n : metadataManager .getMetadata ().getNodes ().values ()) {
600- ((DefaultNode ) n ).getMetricUpdater ().clearMetrics ();
602+ NodeMetricUpdater updater = ((DefaultNode ) n ).getMetricUpdater ();
603+ if (updater != null ) updater .clearMetrics ();
601604 }
602605
603- DefaultSession . this . metricUpdater .clearMetrics ();
606+ if ( metricUpdater != null ) metricUpdater .clearMetrics ();
604607
605608 if (closeWasCalled ) {
606609 // onChildrenClosed has already been scheduled
0 commit comments