private synchronized void addConnectorInternal(MaterializedConnector connector)
{
checkState(!stopped.get(), "ConnectorManager is stopped");
ConnectorId connectorId = connector.getConnectorId();
checkState(!connectors.containsKey(connectorId), "A connector %s already exists", connectorId);
connectors.put(connectorId, connector);
splitManager.addConnectorSplitManager(connectorId, connector.getSplitManager());
pageSourceManager.addConnectorPageSourceProvider(connectorId, connector.getPageSourceProvider());
connector.getPageSinkProvider()
.ifPresent(pageSinkProvider -> pageSinkManager.addConnectorPageSinkProvider(connectorId, pageSinkProvider));
connector.getIndexProvider()
.ifPresent(indexProvider -> indexManager.addIndexProvider(connectorId, indexProvider));
connector.getPartitioningProvider()
.ifPresent(partitioningProvider -> nodePartitioningManager.addPartitioningProvider(connectorId, partitioningProvider));
metadataManager.getProcedureRegistry().addProcedures(connectorId, connector.getProcedures());
connector.getAccessControl()
.ifPresent(accessControl -> accessControlManager.addCatalogAccessControl(connectorId, accessControl));
metadataManager.getTablePropertyManager().addProperties(connectorId, connector.getTableProperties());
metadataManager.getColumnPropertyManager().addProperties(connectorId, connector.getColumnProperties());
metadataManager.getSchemaPropertyManager().addProperties(connectorId, connector.getSchemaProperties());
metadataManager.getSessionPropertyManager().addConnectorSessionProperties(connectorId, connector.getSessionProperties());
}