
public abstract class ODistributedAbstractPlugin extends OServerPluginAbstract implements ODistributedServerManager, com.orientechnologies.orient.core.db.ODatabaseLifecycleListener, com.orientechnologies.orient.core.command.OCommandOutputListener
ODistributedServerManager.DB_STATUS, ODistributedServerManager.NODE_STATUSFILE_DISTRIBUTED_DB_CONFIG| Modifier | Constructor and Description |
|---|---|
protected |
ODistributedAbstractPlugin() |
| Modifier and Type | Method and Description |
|---|---|
protected void |
assignNodeName() |
protected void |
backupCurrentDatabase(String iDatabaseName) |
boolean |
checkNodeStatus(ODistributedServerManager.NODE_STATUS iStatus2Check) |
void |
closeRemoteServer(String node) |
void |
config(OServer oServer,
OServerParameterConfiguration[] iParams) |
protected void |
dumpServersStatus()
Avoids to dump the same configuration twice if it's unchanged since the last time.
|
<T> T |
executeInDistributedDatabaseLock(String databaseName,
long timeoutLocking,
OModifiableDistributedConfiguration lastCfg,
com.orientechnologies.common.util.OCallable<T,OModifiableDistributedConfiguration> iCallback)
Executes an operation protected by a distributed lock (one per database).
|
Object |
executeOnLocalNode(ODistributedRequestId reqId,
ORemoteTask task,
com.orientechnologies.orient.core.db.ODatabaseDocumentInternal database)
Executes the request on local node.
|
Set<String> |
getAvailableNodeNames(String iDatabaseName) |
int |
getAvailableNodes(Collection<String> iNodes,
String databaseName)
Returns the available nodes (not offline) and clears the node list by removing the offline nodes.
|
int |
getAvailableNodes(String iDatabaseName) |
com.orientechnologies.orient.core.record.impl.ODocument |
getClusterConfiguration() |
protected File |
getClusterOwnedExclusivelyByCurrentNode(String dbPath,
String iDatabaseName) |
ODistributedConflictResolverFactory |
getConflictResolverFactory() |
String |
getCoordinatorServer() |
ODistributedConfiguration |
getDatabaseConfiguration(String iDatabaseName) |
ODistributedConfiguration |
getDatabaseConfiguration(String iDatabaseName,
boolean createIfNotPresent) |
File |
getDefaultDatabaseConfigFile() |
ODistributedStrategy |
getDistributedStrategy() |
long |
getLastClusterChangeOn() |
static String |
getListeningBinaryAddress(com.orientechnologies.orient.core.record.impl.ODocument cfg) |
com.orientechnologies.orient.core.record.impl.ODocument |
getLocalNodeConfiguration() |
int |
getLocalNodeId() |
String |
getLocalNodeName() |
ODistributedLockManagerExecutor |
getLockManagerExecutor() |
ODistributedLockManagerRequester |
getLockManagerRequester() |
Set<String> |
getManagedDatabases() |
ODistributedMessageServiceImpl |
getMessageService() |
String |
getName() |
long |
getNextMessageIdCounter() |
int |
getNodeIdByName(String name) |
String |
getNodeName(com.hazelcast.core.Member iMember) |
String |
getNodeName(com.hazelcast.core.Member iMember,
boolean useCache) |
String |
getNodeNameById(int id) |
ODistributedServerManager.NODE_STATUS |
getNodeStatus() |
int |
getNodesWithStatus(Collection<String> iNodes,
String databaseName,
ODistributedServerManager.DB_STATUS... statuses)
Returns the nodes with the requested status.
|
String |
getNodeUuidByName(String name) |
List<String> |
getOnlineNodes(String iDatabaseName) |
com.orientechnologies.orient.core.db.ODatabaseLifecycleListener.PRIORITY |
getPriority() |
abstract String |
getPublicAddress() |
OServer |
getServerInstance() |
com.orientechnologies.orient.core.record.impl.ODocument |
getStats() |
ODistributedStorage |
getStorage(String dbName) |
ODistributedStorage |
getStorageIfExists(String dbName) |
ORemoteTaskFactory |
getTaskFactory() |
boolean |
installClustersOfClass(com.orientechnologies.orient.core.db.ODatabaseInternal iDatabase,
com.orientechnologies.orient.core.metadata.schema.OClass iClass,
OModifiableDistributedConfiguration cfg)
Guarantees that each class has own master cluster.
|
boolean |
installDatabase(boolean iStartup,
String databaseName,
boolean forceDeployment,
boolean tryWithDeltaFirst) |
protected void |
installDatabaseFromNetwork(String dbPath,
String databaseName,
ODistributedDatabaseImpl distrDatabase,
String iNode,
ODistributedDatabaseChunk firstChunk,
boolean delta,
File uniqueClustersBackupDirectory,
OModifiableDistributedConfiguration cfg)
Installs a database from the network.
|
protected com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx |
installDatabaseOnLocalNode(String databaseName,
String dbPath,
String iNode,
String iDatabaseCompressedFile,
boolean delta,
File uniqueClustersBackupDirectory,
OModifiableDistributedConfiguration cfg) |
protected void |
installDbClustersLocalStrategy(com.orientechnologies.orient.core.db.ODatabaseInternal iDatabase) |
boolean |
isEnabled() |
boolean |
isNodeAvailable(String iNodeName) |
boolean |
isNodeAvailable(String iNodeName,
String iDatabaseName) |
boolean |
isNodeOnline(String iNodeName,
String iDatabaseName) |
boolean |
isNodeStatusEqualsTo(String iNodeName,
String iDatabaseName,
ODistributedServerManager.DB_STATUS... statuses) |
boolean |
isOffline() |
protected boolean |
isRelatedToLocalServer(com.orientechnologies.orient.core.db.ODatabaseInternal iDatabase) |
void |
onClose(com.orientechnologies.orient.core.db.ODatabaseInternal iDatabase)
Remove myself as hook.
|
void |
onCreateClass(com.orientechnologies.orient.core.db.ODatabaseInternal iDatabase,
com.orientechnologies.orient.core.metadata.schema.OClass iClass) |
protected void |
onDatabaseEvent(String nodeName,
String databaseName,
ODistributedServerManager.DB_STATUS status) |
void |
onDrop(com.orientechnologies.orient.core.db.ODatabaseInternal iDatabase) |
void |
onDropClass(com.orientechnologies.orient.core.db.ODatabaseInternal iDatabase,
com.orientechnologies.orient.core.metadata.schema.OClass iClass) |
void |
onLocalNodeConfigurationRequest(com.orientechnologies.orient.core.record.impl.ODocument iConfiguration) |
void |
onMessage(String iText) |
void |
onOpen(com.orientechnologies.orient.core.db.ODatabaseInternal iDatabase)
Auto register myself as hook.
|
void |
propagateSchemaChanges(com.orientechnologies.orient.core.db.ODatabaseInternal iDatabase)
Guarantees, foreach class, that has own master cluster.
|
void |
reassignClustersOwnership(String iNode,
String databaseName,
OModifiableDistributedConfiguration cfg) |
protected void |
rebalanceClusterOwnership(String iNode,
com.orientechnologies.orient.core.db.ODatabaseInternal iDatabase,
OModifiableDistributedConfiguration cfg) |
ODistributedAbstractPlugin |
registerLifecycleListener(ODistributedLifecycleListener iListener) |
void |
removeStorage(String name) |
boolean |
requestDatabaseDelta(ODistributedDatabaseImpl distrDatabase,
String databaseName,
OModifiableDistributedConfiguration cfg) |
protected boolean |
requestDatabaseFullSync(ODistributedDatabaseImpl distrDatabase,
boolean backupDatabase,
String databaseName,
boolean iAskToAllNodes,
OModifiableDistributedConfiguration cfg) |
protected boolean |
requestFullDatabase(ODistributedDatabaseImpl distrDatabase,
String databaseName,
boolean backupDatabase,
OModifiableDistributedConfiguration cfg) |
void |
restartNode(String iNode) |
ODistributedResponse |
sendRequest(String iDatabaseName,
Collection<String> iClusterNames,
Collection<String> iTargetNodes,
ORemoteTask iTask,
long reqId,
ODistributedRequest.EXECUTION_MODE iExecutionMode,
Object localResult,
com.orientechnologies.common.util.OCallable<Void,ODistributedRequestId> iAfterSentCallback) |
void |
sendShutdown() |
void |
setDefaultDatabaseConfigFile(String iFile) |
void |
setDistributedStrategy(ODistributedStrategy streatgy) |
void |
setNodeStatus(ODistributedServerManager.NODE_STATUS iStatus) |
void |
shutdown() |
void |
startup() |
void |
stopNode(String iNode) |
String |
toString() |
ODistributedAbstractPlugin |
unregisterLifecycleListener(ODistributedLifecycleListener iListener) |
boolean |
updateCachedDatabaseConfiguration(String iDatabaseName,
OModifiableDistributedConfiguration cfg) |
void |
updateLastClusterChange() |
void |
waitUntilNodeOnline() |
void |
waitUntilNodeOnline(String nodeName,
String databaseName) |
protected long |
writeDatabaseChunk(int iChunkId,
ODistributedDatabaseChunk chunk,
OutputStream out) |
getContent, onAfterClientRequest, onBeforeClientRequest, onClientConnection, onClientDisconnection, onClientErrorclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitconvertException, getActiveServers, getClusterTime, getConfigurationMap, getDatabaseStatus, getNodeConfigurationByUuid, getRemoteServer, removeServer, setDatabaseStatus, updateCachedDatabaseConfigurationpublic static final String REPLICATOR_USER
protected static final String PAR_DEF_DISTRIB_DB_CONFIG
protected static final String NODE_NAME_ENV
protected OServer serverInstance
protected boolean enabled
protected String nodeUuid
protected String nodeName
protected int nodeId
protected File defaultDatabaseConfigFile
protected ConcurrentHashMap<String,ODistributedStorage> storages
protected volatile ODistributedServerManager.NODE_STATUS status
protected long lastClusterChangeOn
protected List<ODistributedLifecycleListener> listeners
protected final ConcurrentMap<String,ORemoteServerController> remoteServers
protected TimerTask publishLocalNodeConfigurationTask
protected OClusterHealthChecker healthCheckerTask
protected String coordinatorServer
protected AtomicLong localMessageIdCounter
protected OClusterOwnershipAssignmentStrategy clusterAssignmentStrategy
protected static final int DEPLOY_DB_MAX_RETRIES
protected volatile ODistributedMessageServiceImpl messageService
protected Date startedOn
protected ORemoteTaskFactory taskFactory
protected ODistributedStrategy responseManagerFactory
protected CountDownLatch serverStarted
public void waitUntilNodeOnline()
throws InterruptedException
waitUntilNodeOnline in interface ODistributedServerManagerInterruptedExceptionpublic void waitUntilNodeOnline(String nodeName, String databaseName) throws InterruptedException
waitUntilNodeOnline in interface ODistributedServerManagerInterruptedExceptionpublic com.orientechnologies.orient.core.db.ODatabaseLifecycleListener.PRIORITY getPriority()
getPriority in interface com.orientechnologies.orient.core.db.ODatabaseLifecycleListenerpublic void config(OServer oServer, OServerParameterConfiguration[] iParams)
config in interface OServerPluginconfig in class OServerPluginAbstractpublic String getCoordinatorServer()
getCoordinatorServer in interface ODistributedServerManagerpublic File getDefaultDatabaseConfigFile()
getDefaultDatabaseConfigFile in interface ODistributedServerManagerpublic void setDefaultDatabaseConfigFile(String iFile)
public void startup()
startup in interface com.orientechnologies.common.util.OServicestartup in class OServerPluginAbstractpublic ODistributedAbstractPlugin registerLifecycleListener(ODistributedLifecycleListener iListener)
registerLifecycleListener in interface ODistributedServerManagerpublic ODistributedAbstractPlugin unregisterLifecycleListener(ODistributedLifecycleListener iListener)
unregisterLifecycleListener in interface ODistributedServerManagerpublic void shutdown()
shutdown in interface com.orientechnologies.common.util.OServiceshutdown in class OServerPluginAbstractpublic ODistributedLockManagerRequester getLockManagerRequester()
getLockManagerRequester in interface ODistributedServerManagerpublic ODistributedLockManagerExecutor getLockManagerExecutor()
getLockManagerExecutor in interface ODistributedServerManagerpublic void onOpen(com.orientechnologies.orient.core.db.ODatabaseInternal iDatabase)
onOpen in interface com.orientechnologies.orient.core.db.ODatabaseLifecycleListenerpublic void onClose(com.orientechnologies.orient.core.db.ODatabaseInternal iDatabase)
onClose in interface com.orientechnologies.orient.core.db.ODatabaseLifecycleListenerpublic void onDrop(com.orientechnologies.orient.core.db.ODatabaseInternal iDatabase)
onDrop in interface com.orientechnologies.orient.core.db.ODatabaseLifecycleListenerpublic void removeStorage(String name)
public void onDropClass(com.orientechnologies.orient.core.db.ODatabaseInternal iDatabase,
com.orientechnologies.orient.core.metadata.schema.OClass iClass)
onDropClass in interface com.orientechnologies.orient.core.db.ODatabaseLifecycleListenerpublic String getName()
getName in interface com.orientechnologies.common.util.OServicepublic void sendShutdown()
sendShutdown in interface OServerPluginsendShutdown in class OServerPluginAbstractpublic String getNodeName(com.hazelcast.core.Member iMember)
public String getNodeName(com.hazelcast.core.Member iMember, boolean useCache)
public boolean updateCachedDatabaseConfiguration(String iDatabaseName, OModifiableDistributedConfiguration cfg)
public ODistributedConfiguration getDatabaseConfiguration(String iDatabaseName)
getDatabaseConfiguration in interface ODistributedServerManagerpublic ODistributedConfiguration getDatabaseConfiguration(String iDatabaseName, boolean createIfNotPresent)
getDatabaseConfiguration in interface ODistributedServerManagerpublic OServer getServerInstance()
getServerInstance in interface ODistributedServerManagerpublic com.orientechnologies.orient.core.record.impl.ODocument getClusterConfiguration()
getClusterConfiguration in interface ODistributedServerManagerpublic abstract String getPublicAddress()
public com.orientechnologies.orient.core.record.impl.ODocument getLocalNodeConfiguration()
getLocalNodeConfiguration in interface ODistributedServerManagerpublic boolean isEnabled()
isEnabled in interface ODistributedServerManagerpublic ODistributedServerManager.NODE_STATUS getNodeStatus()
getNodeStatus in interface ODistributedServerManagerpublic void setNodeStatus(ODistributedServerManager.NODE_STATUS iStatus)
setNodeStatus in interface ODistributedServerManagerpublic boolean checkNodeStatus(ODistributedServerManager.NODE_STATUS iStatus2Check)
checkNodeStatus in interface ODistributedServerManagerpublic ODistributedResponse sendRequest(String iDatabaseName, Collection<String> iClusterNames, Collection<String> iTargetNodes, ORemoteTask iTask, long reqId, ODistributedRequest.EXECUTION_MODE iExecutionMode, Object localResult, com.orientechnologies.common.util.OCallable<Void,ODistributedRequestId> iAfterSentCallback)
sendRequest in interface ODistributedServerManagerpublic Object executeOnLocalNode(ODistributedRequestId reqId, ORemoteTask task, com.orientechnologies.orient.core.db.ODatabaseDocumentInternal database)
executeOnLocalNode in interface ODistributedServerManagerpublic String getLocalNodeName()
getLocalNodeName in interface ODistributedServerManagerpublic int getLocalNodeId()
getLocalNodeId in interface ODistributedServerManagerpublic void onLocalNodeConfigurationRequest(com.orientechnologies.orient.core.record.impl.ODocument iConfiguration)
onLocalNodeConfigurationRequest in interface com.orientechnologies.orient.core.db.ODatabaseLifecycleListenerpublic void onCreateClass(com.orientechnologies.orient.core.db.ODatabaseInternal iDatabase,
com.orientechnologies.orient.core.metadata.schema.OClass iClass)
onCreateClass in interface com.orientechnologies.orient.core.db.ODatabaseLifecycleListenerpublic com.orientechnologies.orient.core.record.impl.ODocument getStats()
getStats in interface ODistributedServerManagerpublic String getNodeNameById(int id)
getNodeNameById in interface ODistributedServerManagerpublic int getNodeIdByName(String name)
getNodeIdByName in interface ODistributedServerManagerpublic String getNodeUuidByName(String name)
getNodeUuidByName in interface ODistributedServerManagerpublic void updateLastClusterChange()
updateLastClusterChange in interface ODistributedServerManagerpublic void reassignClustersOwnership(String iNode, String databaseName, OModifiableDistributedConfiguration cfg)
reassignClustersOwnership in interface ODistributedServerManagerpublic boolean isNodeAvailable(String iNodeName, String iDatabaseName)
isNodeAvailable in interface ODistributedServerManagerpublic boolean isNodeStatusEqualsTo(String iNodeName, String iDatabaseName, ODistributedServerManager.DB_STATUS... statuses)
isNodeStatusEqualsTo in interface ODistributedServerManagerpublic boolean isNodeAvailable(String iNodeName)
isNodeAvailable in interface ODistributedServerManagerpublic boolean isNodeOnline(String iNodeName, String iDatabaseName)
isNodeOnline in interface ODistributedServerManagerpublic boolean isOffline()
isOffline in interface ODistributedServerManagerpublic int getAvailableNodes(Collection<String> iNodes, String databaseName)
getAvailableNodes in interface ODistributedServerManagerpublic int getNodesWithStatus(Collection<String> iNodes, String databaseName, ODistributedServerManager.DB_STATUS... statuses)
getNodesWithStatus in interface ODistributedServerManagerpublic ODistributedMessageServiceImpl getMessageService()
getMessageService in interface ODistributedServerManagerpublic long getLastClusterChangeOn()
getLastClusterChangeOn in interface ODistributedServerManagerpublic int getAvailableNodes(String iDatabaseName)
getAvailableNodes in interface ODistributedServerManagerpublic List<String> getOnlineNodes(String iDatabaseName)
getOnlineNodes in interface ODistributedServerManagerpublic boolean installDatabase(boolean iStartup,
String databaseName,
boolean forceDeployment,
boolean tryWithDeltaFirst)
installDatabase in interface ODistributedServerManagerprotected boolean requestFullDatabase(ODistributedDatabaseImpl distrDatabase, String databaseName, boolean backupDatabase, OModifiableDistributedConfiguration cfg)
public boolean requestDatabaseDelta(ODistributedDatabaseImpl distrDatabase, String databaseName, OModifiableDistributedConfiguration cfg)
protected boolean requestDatabaseFullSync(ODistributedDatabaseImpl distrDatabase, boolean backupDatabase, String databaseName, boolean iAskToAllNodes, OModifiableDistributedConfiguration cfg)
protected File getClusterOwnedExclusivelyByCurrentNode(String dbPath, String iDatabaseName)
protected void backupCurrentDatabase(String iDatabaseName)
protected void installDatabaseFromNetwork(String dbPath, String databaseName, ODistributedDatabaseImpl distrDatabase, String iNode, ODistributedDatabaseChunk firstChunk, boolean delta, File uniqueClustersBackupDirectory, OModifiableDistributedConfiguration cfg)
public ORemoteTaskFactory getTaskFactory()
getTaskFactory in interface ODistributedServerManagerpublic void propagateSchemaChanges(com.orientechnologies.orient.core.db.ODatabaseInternal iDatabase)
propagateSchemaChanges in interface ODistributedServerManagerpublic boolean installClustersOfClass(com.orientechnologies.orient.core.db.ODatabaseInternal iDatabase,
com.orientechnologies.orient.core.metadata.schema.OClass iClass,
OModifiableDistributedConfiguration cfg)
public ODistributedStrategy getDistributedStrategy()
getDistributedStrategy in interface ODistributedServerManagerpublic void setDistributedStrategy(ODistributedStrategy streatgy)
setDistributedStrategy in interface ODistributedServerManagerpublic <T> T executeInDistributedDatabaseLock(String databaseName, long timeoutLocking, OModifiableDistributedConfiguration lastCfg, com.orientechnologies.common.util.OCallable<T,OModifiableDistributedConfiguration> iCallback)
executeInDistributedDatabaseLock in interface ODistributedServerManagerT - Return typedatabaseName - Database nametimeoutLocking - iCallback - Operation @return The operation's result of type Tprotected void onDatabaseEvent(String nodeName, String databaseName, ODistributedServerManager.DB_STATUS status)
protected void rebalanceClusterOwnership(String iNode, com.orientechnologies.orient.core.db.ODatabaseInternal iDatabase, OModifiableDistributedConfiguration cfg)
protected void installDbClustersLocalStrategy(com.orientechnologies.orient.core.db.ODatabaseInternal iDatabase)
protected void assignNodeName()
protected long writeDatabaseChunk(int iChunkId,
ODistributedDatabaseChunk chunk,
OutputStream out)
throws IOException
IOExceptionprotected com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx installDatabaseOnLocalNode(String databaseName, String dbPath, String iNode, String iDatabaseCompressedFile, boolean delta, File uniqueClustersBackupDirectory, OModifiableDistributedConfiguration cfg)
public void onMessage(String iText)
onMessage in interface com.orientechnologies.orient.core.command.OCommandOutputListenerpublic void stopNode(String iNode) throws IOException
IOExceptionpublic void restartNode(String iNode) throws IOException
IOExceptionpublic Set<String> getAvailableNodeNames(String iDatabaseName)
getAvailableNodeNames in interface ODistributedServerManagerpublic long getNextMessageIdCounter()
getNextMessageIdCounter in interface ODistributedServerManagerpublic void closeRemoteServer(String node)
protected boolean isRelatedToLocalServer(com.orientechnologies.orient.core.db.ODatabaseInternal iDatabase)
protected void dumpServersStatus()
public ODistributedStorage getStorageIfExists(String dbName)
public ODistributedStorage getStorage(String dbName)
getStorage in interface ODistributedServerManagerpublic ODistributedConflictResolverFactory getConflictResolverFactory()
getConflictResolverFactory in interface ODistributedServerManagerpublic static String getListeningBinaryAddress(com.orientechnologies.orient.core.record.impl.ODocument cfg)
Copyright © 2009–2017 OrientDB. All rights reserved.