|
org.codehaus.gpars | |||||||
FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object groovyx.gpars.dataflow.operator.component.GracefulShutdownMonitor
public final class GracefulShutdownMonitor
The monitor will orchestrate a graceful shutdown, when its shutdownNetwork() method is called. For this mechanism to work, all selectors/operators in the network have to have their own instance of GracefulShutdownListener added and these listeners have to share the same GracefulShutdownMonitor instance. Each listener observes the activity in the input channels of its corresponding operator/selector. Upon graceful shutdown initialization, the listeners also start watching the state of their operators/selectors. The GracefulShutdownMonitor then repeatedly watches, whether listeners report activity in the operators. When the activity ceases, the monitor will poll all listeners about the state of their operator/selector and its input channels. If all listeners report no activity and no incoming messages, the monitor can safely terminate all operators.
Field Summary | |
---|---|
private static long |
DEFAULT_DELAY
|
private long |
delay
|
private java.util.Collection |
listeners
All listeners that watch the operators/selectors in the network |
private java.util.concurrent.atomic.AtomicBoolean |
notificationArrivedFlag
Indicates, whether some activity has been reported since last time |
private DataflowVariable |
result
The final latch that indicates the network has been shutdown |
private boolean |
shutdownFlag
Indicates whether shutdown has been initialized |
private java.util.Timer |
timer
A times used to repeatedly poll the state of the network |
Constructor Summary | |
GracefulShutdownMonitor()
Uses the default timer delay |
|
GracefulShutdownMonitor(long delay)
Allows to use a customized delay |
Method Summary | |
---|---|
private boolean
|
checkWhetherAnyEventsHaveArrived()
Checks the notification flag whether there has been some activity since last timer run. |
void
|
onTimer()
Checks, whether the network is no longer active. |
void
|
registerProcessorListener(GracefulShutdownListener listener)
Invoked by GracefulShutdownListeners, which listen on operators/selectors for lifecycle events, to get registered with the monitor. |
private void
|
schedule()
Clears the notification flag so as we know whether some activity happens between subsequent checks. |
Promise
|
shutdownNetwork()
Initializes the shutdown process. |
void
|
stateChanged()
Invoked whenever a processor changes state |
Methods inherited from class java.lang.Object | |
---|---|
java.lang.Object#wait(long), java.lang.Object#wait(), java.lang.Object#wait(long, int), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll() |
Field Detail |
---|
private static final long DEFAULT_DELAY
private final long delay
private final java.util.Collection listeners
private final java.util.concurrent.atomic.AtomicBoolean notificationArrivedFlag
private final DataflowVariable result
private boolean shutdownFlag
private final java.util.Timer timer
Constructor Detail |
---|
public GracefulShutdownMonitor()
public GracefulShutdownMonitor(long delay)
delay
- A timeout in milliseconds to wait between two subsequent polls on processors' state.
Lower values will reduce the wait time for network shutdown,
but maz have impact on the performance when the shutdown process gets initialized.
Method Detail |
---|
private boolean checkWhetherAnyEventsHaveArrived()
void onTimer()
@Override public void registerProcessorListener(GracefulShutdownListener listener)
listener
- The listener to register
private void schedule()
public Promise shutdownNetwork()
@Override public void stateChanged()
Copyright © 2008–2012 Václav Pech. All Rights Reserved.