|
|
|
@ -18,7 +18,9 @@
|
|
|
|
|
package org.apache.dolphinscheduler.common.lifecycle; |
|
|
|
|
|
|
|
|
|
import lombok.experimental.UtilityClass; |
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
|
|
|
|
|
|
@Slf4j |
|
|
|
|
@UtilityClass |
|
|
|
|
public class ServerLifeCycleManager { |
|
|
|
|
|
|
|
|
@ -52,20 +54,24 @@ public class ServerLifeCycleManager {
|
|
|
|
|
throw new ServerLifeCycleException("The current server is already stopped, cannot change to waiting"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (serverStatus != ServerStatus.RUNNING) { |
|
|
|
|
throw new ServerLifeCycleException("The current server is not at running status, cannot change to waiting"); |
|
|
|
|
if (serverStatus == ServerStatus.WAITING) { |
|
|
|
|
log.warn("The current server is already at waiting status, cannot change to waiting"); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
serverStatus = ServerStatus.WAITING; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Recover from {@link ServerStatus#WAITING} to {@link ServerStatus#RUNNING}. |
|
|
|
|
* |
|
|
|
|
* @throws ServerLifeCycleException if change failed |
|
|
|
|
*/ |
|
|
|
|
public static synchronized void recoverFromWaiting() throws ServerLifeCycleException { |
|
|
|
|
if (serverStatus != ServerStatus.WAITING) { |
|
|
|
|
throw new ServerLifeCycleException("The current server status is not waiting, cannot recover form waiting"); |
|
|
|
|
if (isStopped()) { |
|
|
|
|
throw new ServerLifeCycleException("The current server is already stopped, cannot recovery"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (serverStatus == ServerStatus.RUNNING) { |
|
|
|
|
log.warn("The current server status is already running, cannot recover form waiting"); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
serverStartupTime = System.currentTimeMillis(); |
|
|
|
|
serverStatus = ServerStatus.RUNNING; |
|
|
|
|