Class Lifecycle
java.lang.Object
org.elasticsearch.common.component.Lifecycle
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() == false) { 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() == false) { return; } } // perform close logic here }
-
Nested Class Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
boolean
boolean
boolean
closed()
Returnstrue
if the state is closed.boolean
Returnstrue
if the state is initialized.boolean
boolean
boolean
boolean
started()
Returnstrue
if the state is started.state()
boolean
stopped()
Returnstrue
if the state is stopped.boolean
toString()
-
Constructor Details
-
Lifecycle
public Lifecycle()
-
-
Method Details
-
state
-
initialized
public boolean initialized()Returnstrue
if the state is initialized. -
started
public boolean started()Returnstrue
if the state is started. -
stopped
public boolean stopped()Returnstrue
if the state is stopped. -
closed
public boolean closed()Returnstrue
if the state is closed. -
stoppedOrClosed
public boolean stoppedOrClosed() -
canMoveToStarted
- Throws:
IllegalStateException
-
moveToStarted
- Throws:
IllegalStateException
-
canMoveToStopped
- Throws:
IllegalStateException
-
moveToStopped
- Throws:
IllegalStateException
-
canMoveToClosed
- Throws:
IllegalStateException
-
moveToClosed
- Throws:
IllegalStateException
-
toString
-