@Override public void start() throws Exception { try { synchronized (this) { if (isStarted()) { return; } this.sharedStateManager = sharedStateManagerFactory.get(); LOGGER.debug("setup sharedStateManager on start"); final UUID nodeId = sharedStateManager.setup(UUIDGenerator.getInstance()::generateUUID); setUUID(nodeId); this.scheduledLiveLock = scheduledLiveLockFactory.get(); this.scheduledBackupLock = scheduledBackupLockFactory.get(); super.start(); } } catch (IllegalStateException e) { this.sharedStateManager = null; this.scheduledLiveLock = null; this.scheduledBackupLock = null; if (this.ioCriticalErrorListener != null) { this.ioCriticalErrorListener.onIOException(e, "Failed to setup the JdbcNodeManager", null); } throw e; } }