use of org.ow2.proactive.resourcemanager.common.event.RMEvent in project scheduling by ow2-proactive.
the class RMGroupEventListener method notify.
public void notify(Collection<RMEvent> events) {
for (RMEvent event : events) {
if (event instanceof RMNodeEvent) {
RMNodeEvent nodeEvent = (RMNodeEvent) event;
nodeEvent(nodeEvent);
} else if (event instanceof RMNodeSourceEvent) {
RMNodeSourceEvent sourceEvent = (RMNodeSourceEvent) event;
nodeSourceEvent(sourceEvent);
} else {
rmEvent(event);
}
}
}
use of org.ow2.proactive.resourcemanager.common.event.RMEvent in project scheduling by ow2-proactive.
the class RMCore method initActivity.
/**
* Initialization part of the RMCore active object.
* Create RM's active objects and the default static Node Source named
* {@link RMConstants#DEFAULT_STATIC_SOURCE_NAME}. Finally, it throws the RM
* started event.
*
* @param body the active object's body.
*/
public void initActivity(Body body) {
if (logger.isDebugEnabled()) {
logger.debug("RMCore start : initActivity");
}
try {
// setting up the policy
logger.debug("Setting up the resource manager security policy");
ClientsPolicy.init();
StubObject rmCoreStub = PAActiveObject.getStubOnThis();
PAActiveObject.registerByName(rmCoreStub, RMConstants.NAME_ACTIVE_OBJECT_RMCORE);
dbManager = RMDBManager.getInstance();
if (logger.isDebugEnabled()) {
logger.debug("Creating RMAuthentication active object");
}
authentication = (RMAuthenticationImpl) PAActiveObject.newActive(RMAuthenticationImpl.class.getName(), new Object[] { rmCoreStub }, nodeRM);
if (logger.isDebugEnabled()) {
logger.debug("Creating RMMonitoring active object");
}
// Boot the JMX infrastructure
this.jmxHelper.boot(authentication);
monitoring = (RMMonitoringImpl) PAActiveObject.newActive(RMMonitoringImpl.class.getName(), new Object[] { rmCoreStub }, nodeRM);
if (logger.isDebugEnabled()) {
logger.debug("Creating SelectionManager active object");
}
selectionManager = (SelectionManager) PAActiveObject.newActive(ProbablisticSelectionManager.class.getName(), new Object[] { rmCoreStub }, nodeRM);
if (logger.isDebugEnabled()) {
logger.debug("Creating ClientPinger active object");
}
clientPinger = (ClientPinger) PAActiveObject.newActive(ClientPinger.class.getName(), new Object[] { rmCoreStub }, nodeRM);
if (logger.isDebugEnabled()) {
logger.debug("Creating NodeCleaner active object");
}
nodesCleaner = (NodesCleaner) PAActiveObject.newActive(NodesCleaner.class.getName(), new Object[] { rmCoreStub }, nodeRM);
topologyManager = new TopologyManager();
nodeConfigurator = (RMNodeConfigurator) PAActiveObject.newActive(RMNodeConfigurator.class.getName(), new Object[] { rmCoreStub }, nodeRM);
// adding shutdown hook
final RMCore rmcoreStub = (RMCore) rmCoreStub;
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
if (!toShutDown) {
rmcoreStub.shutdown(true);
}
synchronized (nodeRM) {
if (!shutedDown) {
try {
// wait for rmcore shutdown (5 min at most)
nodeRM.wait(5 * 60 * 60 * 1000);
} catch (InterruptedException e) {
logger.warn("shutdown hook interrupted", e);
}
}
}
}
});
// Creating RM started event
this.monitoring.rmEvent(new RMEvent(RMEventType.STARTED));
authentication.setActivated(true);
clientPinger.ping();
initiateRecoveryIfRequired();
} catch (ActiveObjectCreationException e) {
logger.error("", e);
} catch (NodeException e) {
logger.error("", e);
} catch (ProActiveException e) {
logger.error("", e);
} catch (ClassNotFoundException e) {
logger.error("", e);
} finally {
signalRMCoreIsInitialized();
}
if (logger.isDebugEnabled()) {
logger.debug("RMCore end: initActivity");
}
}
use of org.ow2.proactive.resourcemanager.common.event.RMEvent in project scheduling by ow2-proactive.
the class RMInitialState method cloneAndFilter.
/**
* Clones current state events, but keep only those events which has counter bigger than provided 'filter'
* Event counter can take values [0, +).
* So if filter is '-1' then all events will returned.
* @param filter
* @return rmInitialState where all the events bigger than 'filter'
*/
public RMStateDelta cloneAndFilter(long filter) {
long actualFilter = computeActualFilter(filter);
final List<RMEvent> responseEvents = events.getSortedItems().tailSet(// because tailSet returns event which is equal or greater
new RMEvent(actualFilter + 1)).stream().limit(PAResourceManagerProperties.RM_REST_MONITORING_MAXIMUM_CHUNK_SIZE.getValueAsInt()).collect(Collectors.toList());
RMStateDelta response = new RMStateDelta();
response.setNodeSource(getNodeSourceEvents(responseEvents));
response.setNodesEvents(getNodeEvents(responseEvents));
response.setLatestCounter(Math.max(actualFilter, findLargestCounter(responseEvents)));
return response;
}
use of org.ow2.proactive.resourcemanager.common.event.RMEvent in project scheduling by ow2-proactive.
the class RMCore method shutdown.
/**
* Shutdown the resource manager
*/
public BooleanWrapper shutdown(boolean preempt) {
// this method could be called twice from shutdown hook and user action
if (toShutDown)
return new BooleanWrapper(false);
logger.info("RMCore shutdown request");
this.monitoring.rmEvent(new RMEvent(RMEventType.SHUTTING_DOWN));
this.toShutDown = true;
if (PAResourceManagerProperties.RM_PRESERVE_NODES_ON_SHUTDOWN.getValueAsBoolean() || this.deployedNodeSources.size() == 0) {
finalizeShutdown();
} else {
for (Entry<String, NodeSource> entry : this.deployedNodeSources.entrySet()) {
removeAllNodes(entry.getKey(), preempt, true);
entry.getValue().shutdown(caller);
}
}
return new BooleanWrapper(true);
}
Aggregations