Hi all, So, in order to sensibly tackle the removal of singletons I have compiled a list of all Singletons (at least all classes that have a public static getInstance() method). I so-far count 94 classes.
In a next step I would try to add which type depends on which singleton to that. The result should be a directed graph, that shows segments that could be sensibly refactored. I would propose to do “island” by “island”. I guess it’s going to be an interesting process … idealy we could use some tool to analyse the graph. Chris PS: Here’s the list of the singleton classes: SystemPropertiesHandler SSLClient AsyncConfigNodeHeartbeatClientPool AsyncDataNodeHeartbeatClientPool CnToCnInternalServiceAsyncRequestManager CnToDnInternalServiceAsyncRequestManager SyncConfigNodeClientPool SyncDataNodeClientPool ConfigNodeDescriptor ConfigNodeRemoveCheck SystemPropertiesHandler PipeConfigNodeSubtaskExecutor PipeConfigNodeListenerMetrics PipeConfigNodeReceiverMetrics PipeConfigNodeRemainingTimeMetrics PipeConfigRegionConnectorMetrics PipeConfigRegionExtractorMetrics PipeProcedureMetrics PipeTemporaryMetaMetrics ConfigMNodeFactory ProcedureFactory ConfigNode IoTDBDescriptor IoTDBStartCheck IoTDBRestServiceDescriptor DataRegionConsensusImpl SchemaRegionConsensusImpl PipeSubtaskExecutorManager PipeInsertionDataNodeListener PipeTimePartitionListener PipeAssignerMetrics PipeDataNodeMetrics PipeDataNodeReceiverMetrics PipeDataNodeRemainingEventAndTimeMetrics PipeDataRegionConnectorMetrics PipeDataRegionExtractorMetrics PipeHeartbeatEventMetrics PipeProcessorMetrics PipeResourceMetrics PipeSchemaRegionConnectorMetrics PipeSchemaRegionExtractorMetrics PipeSchemaRegionListenerMetrics PipeWALInsertNodeCacheMetrics PipeCombineHandlerManager ConfigNodeClientManager ConfigNodeInfo DnToCnInternalServiceAsyncRequestManager DataNodeExternalServiceAsyncRequestManager DataNodeMPPServiceAsyncRequestManager DnToDnInternalServiceAsyncRequestManager UserCache SessionManager DataNodeRegionManager MPPDataExchangeService DriverScheduler LoadTsFileMemoryManager DataNodeTTLCache SchemaEngine DataNodeTableCache ClusterTemplateManager DataNode DataNodeInternalRPCService MQTTService RPCService RegionMigrateService RestService TemporaryQueryDataFileService CompactionMetrics FileMetrics WritingMetrics CacheHitRatioMonitor CompactionScheduleTaskManager CompactionTaskManager FlushManager WALManager TierManager TsFileAndModSettleTool TriggerClassLoaderManager TriggerManagementService OpenFileNumUtil ModsSerializer StringSerializer WindowEvaluationTaskPoolManager IoTDBMetricManager IoTDBJmxReporter IoTDBMetricObjNameFactory MetricConfigDescriptor SystemMetrics PipeConfig MetricService TriggerExecutableManager UDFClassLoaderManager UDFExecutableManager UDFManagementService