Class Lifecycle
java.lang.Object
org.elasticsearch.common.component.Lifecycle
public class Lifecycle
extends java.lang.Object
Lifecycle state. Allows the following transitions:
- INITIALIZED -> STARTED, STOPPED, CLOSED
- STARTED -> STOPPED
- STOPPED -> STARTED, CLOSED
- CLOSED ->
Also allows to stay in the same state. For example, when calling stop on a component, the following logic can be applied:
public void stop() {
if (!lifecycleState.moveToStopped()) {
return;
}
// continue with stop logic
}
NOTE: The Lifecycle class is thread-safe. It is also possible to prevent concurrent state transitions by locking on the Lifecycle object itself. This is typically useful when chaining multiple transitions.
Note, closed is only allowed to be called when stopped, so make sure to stop the component first.
Here is how the logic can be applied. A lock of the lifecycleState object is taken so that
another thread cannot move the state from STOPPED to STARTED before it has moved to
CLOSED.
public void close() {
synchronized (lifecycleState) {
if (lifecycleState.started()) {
stop();
}
if (!lifecycleState.moveToClosed()) {
return;
}
}
// perform close logic here
}
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classLifecycle.State -
Constructor Summary
Constructors Constructor Description Lifecycle() -
Method Summary
Modifier and Type Method Description booleancanMoveToClosed()booleancanMoveToStarted()booleancanMoveToStopped()booleanclosed()Returnstrueif the state is closed.booleaninitialized()Returnstrueif the state is initialized.booleanmoveToClosed()booleanmoveToStarted()booleanmoveToStopped()booleanstarted()Returnstrueif the state is started.Lifecycle.Statestate()booleanstopped()Returnstrueif the state is stopped.booleanstoppedOrClosed()java.lang.StringtoString()
-
Constructor Details
-
Lifecycle
public Lifecycle()
-
-
Method Details
-
state
-
initialized
public boolean initialized()Returnstrueif the state is initialized. -
started
public boolean started()Returnstrueif the state is started. -
stopped
public boolean stopped()Returnstrueif the state is stopped. -
closed
public boolean closed()Returnstrueif the state is closed. -
stoppedOrClosed
public boolean stoppedOrClosed() -
canMoveToStarted
public boolean canMoveToStarted() throws java.lang.IllegalStateException- Throws:
java.lang.IllegalStateException
-
moveToStarted
public boolean moveToStarted() throws java.lang.IllegalStateException- Throws:
java.lang.IllegalStateException
-
canMoveToStopped
public boolean canMoveToStopped() throws java.lang.IllegalStateException- Throws:
java.lang.IllegalStateException
-
moveToStopped
public boolean moveToStopped() throws java.lang.IllegalStateException- Throws:
java.lang.IllegalStateException
-
canMoveToClosed
public boolean canMoveToClosed() throws java.lang.IllegalStateException- Throws:
java.lang.IllegalStateException
-
moveToClosed
public boolean moveToClosed() throws java.lang.IllegalStateException- Throws:
java.lang.IllegalStateException
-
toString
public java.lang.String toString()- Overrides:
toStringin classjava.lang.Object
-