Class FileLockNodeManager
- java.lang.Object
-
- org.apache.activemq.artemis.core.server.NodeManager
-
- org.apache.activemq.artemis.core.server.impl.FileBasedNodeManager
-
- org.apache.activemq.artemis.core.server.impl.FileLockNodeManager
-
- All Implemented Interfaces:
ActiveMQComponent
public class FileLockNodeManager extends FileBasedNodeManager
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description classFileLockNodeManager.MonitorLock-
Nested classes/interfaces inherited from class org.apache.activemq.artemis.core.server.NodeManager
NodeManager.LockListener, NodeManager.NodeManagerException
-
-
Field Summary
Fields Modifier and Type Field Description protected booleaninterrupted-
Fields inherited from class org.apache.activemq.artemis.core.server.impl.FileBasedNodeManager
activationSequenceChannel, channel, FIRST_TIME_START, SERVER_ACTIVATION_SEQUENCE_NAME, SERVER_LOCK_NAME
-
Fields inherited from class org.apache.activemq.artemis.core.server.NodeManager
nodeActivationSequence, nodeIDGuard, NULL_NODE_ACTIVATION_SEQUENCE, replicatedBackup
-
-
Constructor Summary
Constructors Constructor Description FileLockNodeManager(File directory, boolean replicatedBackup)FileLockNodeManager(File directory, boolean replicatedBackup, long lockAcquisitionTimeout, ScheduledExecutorService scheduledPool)FileLockNodeManager(File directory, boolean replicatedBackup, ScheduledExecutorService scheduledPool)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidawaitLiveNode()voidawaitLiveStatus()voidcrashLiveServer()voidinterrupt()booleanisAwaitingFailback()booleanisBackupLive()booleanisLiveLocked()protected FileLocklock(int lockPosition)protected voidnotifyLostLock()voidpauseLiveServer()SimpleStringreadNodeId()voidreleaseBackup()protected voidsetUpServerLockFile()Ensures existence of persistent information about the server's nodeID.voidstart()voidstartBackup()ActivateCallbackstartLiveNode()voidstop()protected FileLocktryLock(int lockPos)-
Methods inherited from class org.apache.activemq.artemis.core.server.impl.FileBasedNodeManager
createNodeId, newFile, readNodeActivationSequence, stopBackup, writeNodeActivationSequence
-
Methods inherited from class org.apache.activemq.artemis.core.server.NodeManager
checkStarted, getNodeActivationSequence, getNodeId, getUUID, isStarted, registerLockListener, setNodeActivationSequence, setNodeID, setUUID, unregisterLockListener
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.activemq.artemis.core.server.ActiveMQComponent
asyncStop
-
-
-
-
Constructor Detail
-
FileLockNodeManager
public FileLockNodeManager(File directory, boolean replicatedBackup, ScheduledExecutorService scheduledPool)
-
FileLockNodeManager
public FileLockNodeManager(File directory, boolean replicatedBackup)
-
FileLockNodeManager
public FileLockNodeManager(File directory, boolean replicatedBackup, long lockAcquisitionTimeout, ScheduledExecutorService scheduledPool)
-
-
Method Detail
-
start
public void start() throws Exception- Specified by:
startin interfaceActiveMQComponent- Overrides:
startin classNodeManager- Throws:
Exception
-
setUpServerLockFile
protected void setUpServerLockFile() throws IOExceptionDescription copied from class:FileBasedNodeManagerEnsures existence of persistent information about the server's nodeID.Roughly the different use cases are:
- old live server restarts: a server.lock file already exists and contains a nodeID.
- new live server starting for the first time: no file exists, and we just *create* a new UUID to use as nodeID
- replicated backup received its nodeID from its live: no file exists, we need to persist the *current* nodeID
- Overrides:
setUpServerLockFilein classFileBasedNodeManager- Throws:
IOException
-
stop
public void stop() throws Exception- Specified by:
stopin interfaceActiveMQComponent- Overrides:
stopin classFileBasedNodeManager- Throws:
Exception
-
isAwaitingFailback
public boolean isAwaitingFailback() throws NodeManager.NodeManagerException- Specified by:
isAwaitingFailbackin classNodeManager- Throws:
NodeManager.NodeManagerException
-
isBackupLive
public boolean isBackupLive() throws NodeManager.NodeManagerException- Specified by:
isBackupLivein classNodeManager- Throws:
NodeManager.NodeManagerException
-
isLiveLocked
public boolean isLiveLocked()
-
interrupt
public void interrupt()
- Specified by:
interruptin classNodeManager
-
releaseBackup
public final void releaseBackup() throws NodeManager.NodeManagerException- Specified by:
releaseBackupin classNodeManager- Throws:
NodeManager.NodeManagerException
-
awaitLiveNode
public void awaitLiveNode() throws NodeManager.NodeManagerException, InterruptedException- Specified by:
awaitLiveNodein classNodeManager- Throws:
NodeManager.NodeManagerExceptionInterruptedException
-
startBackup
public void startBackup() throws NodeManager.NodeManagerException- Specified by:
startBackupin classNodeManager- Throws:
NodeManager.NodeManagerException
-
startLiveNode
public ActivateCallback startLiveNode() throws NodeManager.NodeManagerException
- Specified by:
startLiveNodein classNodeManager- Throws:
NodeManager.NodeManagerException
-
pauseLiveServer
public void pauseLiveServer() throws NodeManager.NodeManagerException- Specified by:
pauseLiveServerin classNodeManager- Throws:
NodeManager.NodeManagerException
-
crashLiveServer
public void crashLiveServer() throws NodeManager.NodeManagerException- Specified by:
crashLiveServerin classNodeManager- Throws:
NodeManager.NodeManagerException
-
awaitLiveStatus
public void awaitLiveStatus() throws NodeManager.NodeManagerException, InterruptedException- Specified by:
awaitLiveStatusin classNodeManager- Throws:
NodeManager.NodeManagerExceptionInterruptedException
-
readNodeId
public final SimpleString readNodeId() throws NodeManager.NodeManagerException
- Specified by:
readNodeIdin classNodeManager- Throws:
NodeManager.NodeManagerException
-
tryLock
protected FileLock tryLock(int lockPos) throws IOException
- Throws:
IOException
-
lock
protected FileLock lock(int lockPosition) throws ActiveMQLockAcquisitionTimeoutException
-
notifyLostLock
protected void notifyLostLock()
- Overrides:
notifyLostLockin classNodeManager
-
-