org.almendra.janet.ade.distributor
Class DistributorAnchor

java.lang.Object
  extended by org.almendra.janet.ade.executor.AbstractAnchor
      extended by org.almendra.janet.ade.distributor.DistributorAnchor

public class DistributorAnchor
extends AbstractAnchor


Field Summary
protected  java.util.Map agentsCountByCapability
           
protected  IAgentProxy balancerAgent
           
static java.lang.String BALANCING_AGENT_NAME
           
static java.lang.String BILLBOARD_ATTRIBUTE_COMMANDS_WAITING_TIME
           
static java.lang.String BILLBOARD_ATTRIBUTE_QUEUE_SIZE_CATEGORY
           
protected  java.util.Map billboardMasks
           
static java.lang.String CAPABILITY_NAME
           
protected  Descriptor descriptor
           
protected  CapabilityQueueSizeStore executingQueuesStore
           
protected  EDU.oswego.cs.dl.util.concurrent.ReentrantWriterPreferenceReadWriteLock imagesLock
           
static java.lang.String LABEL
           
protected  java.lang.String lastSelectedSharingNodeName
           
protected  long lastSelectedSharingNodeNameTime
           
protected  java.lang.String lastSelectNodeName
           
static java.lang.String LOAD_ADMINISTRATOR_AGENT_NAME
           
protected  IAgentProxy loadAdministratorAgent
           
static java.lang.String LOG_EVENT_BALANCING_COMMAND_DISTRIBUTED
           
static java.lang.String LOG_EVENT_PANIC_CANNOT_FIND_ANY_AGENT
           
static java.lang.String LOG_EVENT_SHARING_COMMAND_DISTRIBUTED
           
protected  Logger logger
           
protected  Node node
           
static java.lang.String NODE_LABEL
           
static java.lang.String NODE_VIEW_PREFIX
           
static java.lang.String SHARING_AGENT_NAME
           
protected  CapabilityQueueSizeStore waitingQueuesStore
           
protected  java.util.Map workstationLoadImageByNodeName
           
protected  java.util.Map workstationLoadImages
           
 
Fields inherited from class org.almendra.janet.ade.executor.AbstractAnchor
agents, agentsLock, handlers, LOG_EVENT_NO_DISTRIBUTOR_AGENT_FOUND, systemApplication
 
Constructor Summary
protected DistributorAnchor()
          Creates a new DistributorAnchor object.
  DistributorAnchor(Node node, Logger parentLogger)
          Creates a new DistributorAnchor object.
 
Method Summary
 void acquireReadLock()
           
 void addWorkstationLoadImage(WorkstationLoadImage image)
           
 void clearCaches()
           
 void deregisterWorkstation(java.lang.String workstationName, java.util.List nodeNames)
           
protected  void displayQueueSizeCategory(java.lang.String nodeName, int newQueueSizeCategory)
           
protected  void displayValue(java.lang.String nodeName, java.lang.String attribute, java.lang.String value)
           
 boolean existsNodeAboveQSC0()
           
 AgentPath getAgentPathToNode(java.lang.String nodeName, AgentPath originAgentPath)
           
 long getAgentsCount(java.lang.String nodeName, java.lang.String capabilityPath)
           
 java.util.Map getAgentsQueueSizes(LocalAgentPath localAgentPath)
           
 java.util.List getAllConnectedNodeNames()
           
 java.util.List getAllNodesWithCapability(LocalCapabilityPath path, java.util.List nodeNamestoConsider)
           
 java.util.List getAllSystemAgents(java.lang.String workstationName)
           
 java.util.List getAlternativeCapabilitiesOnOtherNodes(java.lang.String workstationName, java.lang.String nodeName)
           
 AgentPath getAnyAgent(java.lang.String nodeName, java.lang.String capabilityPath)
           
protected  java.util.List getAvailableNodeLoadAtLeastOne(java.util.List nodeImages, LeastLoadedNodeDecisionInformation decisionInformation)
           
 java.util.List getAvailableNodeNamesAboveQSC(int qsc)
           
 java.util.List getAvailableNodeNamesWithQSC0()
           
 java.util.List getAvailableNodes()
           
 java.util.List getAvailableNodes(java.lang.String ignoreWorkstationNameOrNull)
           
 java.util.List getAvailableWorkstations()
           
 IAgentProxy getBalancerAgent()
           
 java.util.List getCapabilityIntersection(java.lang.String nodeName1, java.lang.String nodeName2)
           
 int getCapabilityQueueSize(java.lang.String nodeName, LocalCapabilityPath path)
           
 int getCapabilityQueueSize(java.lang.String nodeName, java.lang.String qualifiedCapabilityPath)
           
 Descriptor getDescriptor()
           
 CapabilityQueueSizeStore getExecutingQueuesStore()
           
 java.lang.String getHeaviestLoadedCapability(java.lang.String nodeNameHeaviestLoaded, java.util.List capabilityPathNames, NodeDroppedToQSC1DecisionInformation decisionInformation)
           
 java.lang.String getHeaviestLoadedCapabilityPath(java.lang.String nodeName, java.util.List capabilities)
           
protected  java.lang.String getHeaviestLoadedNodeName(java.util.Set allCandidateNodes, java.util.Map capabilitiesByCandidateNodeName, java.util.List heaviestLoadedCapabilityPaths, NodeDroppedToQSC1DecisionInformation decisionInformation)
           
 java.lang.String getLastSelectedSharingNode()
           
 java.lang.String getLastSelectNodeName()
           
 java.util.List getLeastLoadedCapabilitiesAtLeastOne(java.util.List nodeNamesOfNodesWithCapability, LocalCapabilityPath path, LeastLoadedNodeDecisionInformation decisionInformation)
           
protected  java.util.List getLeastLoadedNodes(java.util.List availableNodeLoadImages, LocalCapabilityPath path, LeastLoadedNodeDecisionInformation decisionInformation)
           
 IAgentProxy getLoadAdministratorAgent()
           
 Logger getLogger()
           
 Node getNode()
           
protected  java.util.List getNodeImages(java.util.List nodeNames)
           
 NodeLoadImage getNodeLoadImage(java.lang.String nodeName)
           
 java.lang.String getNodeNameToEvictCommandFrom(java.lang.String nodeNameToMigrateTo, java.util.List nodeNamesAboveQSC1, java.util.List capabilities, NodeDroppedToQSC1DecisionInformation decisionInformation)
           
protected  int getNodeQueueSizeCategory(java.lang.String nodeName)
           
 int getQueueSizeCategory(java.lang.String nodeName)
           
protected  long getSharingDelay()
           
 CapabilityQueueSizeStore getWaitingQueuesStore()
           
protected  java.util.List getWorkstationImages(java.util.List nodeNames)
           
 WorkstationLoadImage getWorkstationLoadImage(java.lang.String workstationName)
           
 java.util.List getWorkstationNames()
           
protected  int getWorkstationQueueSizeCategoryProduct(java.lang.String nodeName)
           
 boolean hasWorkstations()
           
 boolean isDisableEviction()
           
 boolean isDisableFullEviction()
           
 boolean isDisableNodeDroppedToQSC1()
           
 boolean isDisableNodesWithQSC0Exist()
           
 boolean isDisablePartialEviction()
           
 void logCommandDistributed(ExecuteWorkloadCommand command, AgentPath originAgentPath, AgentPath selectedAgentPath)
           
protected  void registerForEvents()
           
 void registerWorkstation(java.lang.String workstationName, java.util.List nodeNames)
           
 void releaseReadLock()
           
 void setDescriptor(Descriptor descriptor)
           
 void setIsAboveThreshold(java.lang.String workstationName, boolean isAboveThreshold, int nonJanetCPULoad)
           
 void setLastSelectedSharingNode(java.lang.String nodeName)
           
 void setLastSelectNodeName(java.lang.String lastSelectNodeName)
           
protected  void setLogger(Logger parentLogger)
           
 void setNewNodeValues(java.lang.String nodeName, int newQueueSizeCategory, long waitingTime, java.util.Map waitingQueuesByCapability, java.util.Map executingQueuesByCapability)
           
 int setNewNonJanetCPULoad(java.lang.String workstationName, int nonJanetCPULoad)
           
 void setNonJanetCPULoad(java.lang.String workstationName, int nonJanetCPULoad)
           
 boolean writeProtectedDo(IExecutable executable)
           
 
Methods inherited from class org.almendra.janet.ade.executor.AbstractAnchor
clearAgentsCache, getAgents, getAgentsList, getAgentsMap, getCrossAgent, getDistributorAgent, getDistributorAgent, getDistributorAgentUnprotected, getHandlers, getLoadAdministratorAgents, getSystemApplication, logNoDistributorAgentFound, registeredLogEvents
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NODE_LABEL

public static final java.lang.String NODE_LABEL
See Also:
Constant Field Values

NODE_VIEW_PREFIX

public static final java.lang.String NODE_VIEW_PREFIX
See Also:
Constant Field Values

LABEL

public static final java.lang.String LABEL
See Also:
Constant Field Values

CAPABILITY_NAME

public static final java.lang.String CAPABILITY_NAME
See Also:
Constant Field Values

BALANCING_AGENT_NAME

public static final java.lang.String BALANCING_AGENT_NAME
See Also:
Constant Field Values

SHARING_AGENT_NAME

public static final java.lang.String SHARING_AGENT_NAME
See Also:
Constant Field Values

LOAD_ADMINISTRATOR_AGENT_NAME

public static final java.lang.String LOAD_ADMINISTRATOR_AGENT_NAME
See Also:
Constant Field Values

BILLBOARD_ATTRIBUTE_QUEUE_SIZE_CATEGORY

public static final java.lang.String BILLBOARD_ATTRIBUTE_QUEUE_SIZE_CATEGORY
See Also:
Constant Field Values

BILLBOARD_ATTRIBUTE_COMMANDS_WAITING_TIME

public static final java.lang.String BILLBOARD_ATTRIBUTE_COMMANDS_WAITING_TIME
See Also:
Constant Field Values

LOG_EVENT_SHARING_COMMAND_DISTRIBUTED

public static final java.lang.String LOG_EVENT_SHARING_COMMAND_DISTRIBUTED
See Also:
Constant Field Values

LOG_EVENT_BALANCING_COMMAND_DISTRIBUTED

public static final java.lang.String LOG_EVENT_BALANCING_COMMAND_DISTRIBUTED
See Also:
Constant Field Values

LOG_EVENT_PANIC_CANNOT_FIND_ANY_AGENT

public static final java.lang.String LOG_EVENT_PANIC_CANNOT_FIND_ANY_AGENT
See Also:
Constant Field Values

workstationLoadImages

protected java.util.Map workstationLoadImages

imagesLock

protected EDU.oswego.cs.dl.util.concurrent.ReentrantWriterPreferenceReadWriteLock imagesLock

logger

protected Logger logger

lastSelectedSharingNodeName

protected java.lang.String lastSelectedSharingNodeName

lastSelectedSharingNodeNameTime

protected long lastSelectedSharingNodeNameTime

descriptor

protected Descriptor descriptor

node

protected Node node

billboardMasks

protected java.util.Map billboardMasks

loadAdministratorAgent

protected IAgentProxy loadAdministratorAgent

balancerAgent

protected IAgentProxy balancerAgent

waitingQueuesStore

protected CapabilityQueueSizeStore waitingQueuesStore

executingQueuesStore

protected CapabilityQueueSizeStore executingQueuesStore

agentsCountByCapability

protected java.util.Map agentsCountByCapability

workstationLoadImageByNodeName

protected java.util.Map workstationLoadImageByNodeName

lastSelectNodeName

protected java.lang.String lastSelectNodeName
Constructor Detail

DistributorAnchor

protected DistributorAnchor()
Creates a new DistributorAnchor object.


DistributorAnchor

public DistributorAnchor(Node node,
                         Logger parentLogger)
Creates a new DistributorAnchor object.

Method Detail

registerForEvents

protected void registerForEvents()

setLogger

protected void setLogger(Logger parentLogger)
Parameters:
parentLogger -

getLastSelectedSharingNode

public java.lang.String getLastSelectedSharingNode()
Parameters:
i -
Returns:

setLastSelectedSharingNode

public void setLastSelectedSharingNode(java.lang.String nodeName)
Parameters:
string -

setDescriptor

public void setDescriptor(Descriptor descriptor)
Parameters:
desc -

getSharingDelay

protected long getSharingDelay()

getAvailableNodes

public java.util.List getAvailableNodes()

getAvailableNodes

public java.util.List getAvailableNodes(java.lang.String ignoreWorkstationNameOrNull)

getAvailableWorkstations

public java.util.List getAvailableWorkstations()
Returns:

addWorkstationLoadImage

public void addWorkstationLoadImage(WorkstationLoadImage image)

displayQueueSizeCategory

protected void displayQueueSizeCategory(java.lang.String nodeName,
                                        int newQueueSizeCategory)
Parameters:
nodeName -
newQueueSizeCategory -

displayValue

protected void displayValue(java.lang.String nodeName,
                            java.lang.String attribute,
                            java.lang.String value)
Parameters:
nodeName -
newQueueSizeCategory -

getQueueSizeCategory

public int getQueueSizeCategory(java.lang.String nodeName)

getWorkstationLoadImage

public WorkstationLoadImage getWorkstationLoadImage(java.lang.String workstationName)

getNodeLoadImage

public NodeLoadImage getNodeLoadImage(java.lang.String nodeName)

getAgentsQueueSizes

public java.util.Map getAgentsQueueSizes(LocalAgentPath localAgentPath)
Parameters:
localAgentPath -
Returns:

getWorkstationQueueSizeCategoryProduct

protected int getWorkstationQueueSizeCategoryProduct(java.lang.String nodeName)
Parameters:
string -
Returns:

getNodeQueueSizeCategory

protected int getNodeQueueSizeCategory(java.lang.String nodeName)
Parameters:
string -
Returns:

setNonJanetCPULoad

public void setNonJanetCPULoad(java.lang.String workstationName,
                               int nonJanetCPULoad)
Parameters:
string -
i -

setIsAboveThreshold

public void setIsAboveThreshold(java.lang.String workstationName,
                                boolean isAboveThreshold,
                                int nonJanetCPULoad)
Parameters:
string -
i -

setNewNonJanetCPULoad

public int setNewNonJanetCPULoad(java.lang.String workstationName,
                                 int nonJanetCPULoad)
Parameters:
string -
i -

setNewNodeValues

public void setNewNodeValues(java.lang.String nodeName,
                             int newQueueSizeCategory,
                             long waitingTime,
                             java.util.Map waitingQueuesByCapability,
                             java.util.Map executingQueuesByCapability)
Parameters:
string -
currentQueueSizeCategory -
currentCommandsWaitingTime -

getBalancerAgent

public IAgentProxy getBalancerAgent()
Returns:
Returns the loadAdministratorAgent.

getLoadAdministratorAgent

public IAgentProxy getLoadAdministratorAgent()
Returns:
Returns the loadAdministratorAgent.

getNode

public Node getNode()
Returns:
Returns the node.

getLogger

public Logger getLogger()
Overrides:
getLogger in class AbstractAnchor
Returns:
Returns the logger.

writeProtectedDo

public boolean writeProtectedDo(IExecutable executable)

getAllSystemAgents

public java.util.List getAllSystemAgents(java.lang.String workstationName)
Parameters:
workstationName -
Returns:

getExecutingQueuesStore

public CapabilityQueueSizeStore getExecutingQueuesStore()
Returns:
Returns the executingQueuesStore.

getWaitingQueuesStore

public CapabilityQueueSizeStore getWaitingQueuesStore()
Returns:
Returns the waitingQueuesStore.

getAgentsCount

public long getAgentsCount(java.lang.String nodeName,
                           java.lang.String capabilityPath)
Parameters:
nodeName -
capabilityPath -
Returns:

clearCaches

public void clearCaches()

registerWorkstation

public void registerWorkstation(java.lang.String workstationName,
                                java.util.List nodeNames)
Parameters:
string -

deregisterWorkstation

public void deregisterWorkstation(java.lang.String workstationName,
                                  java.util.List nodeNames)
Parameters:
string -

getAllNodesWithCapability

public java.util.List getAllNodesWithCapability(LocalCapabilityPath path,
                                                java.util.List nodeNamestoConsider)
Parameters:
string -
string2 -
Returns:

getLeastLoadedCapabilitiesAtLeastOne

public java.util.List getLeastLoadedCapabilitiesAtLeastOne(java.util.List nodeNamesOfNodesWithCapability,
                                                           LocalCapabilityPath path,
                                                           LeastLoadedNodeDecisionInformation decisionInformation)
Parameters:
nodeNames -
Returns:

getLeastLoadedNodes

protected java.util.List getLeastLoadedNodes(java.util.List availableNodeLoadImages,
                                             LocalCapabilityPath path,
                                             LeastLoadedNodeDecisionInformation decisionInformation)
Parameters:
availableNodeLoadImages -
path -
Returns:
node name of least loaded node for capability

getAvailableNodeLoadAtLeastOne

protected java.util.List getAvailableNodeLoadAtLeastOne(java.util.List nodeImages,
                                                        LeastLoadedNodeDecisionInformation decisionInformation)
Parameters:
nodeImages -
Returns:

getNodeImages

protected java.util.List getNodeImages(java.util.List nodeNames)
Parameters:
nodeNames -
Returns:

getWorkstationImages

protected java.util.List getWorkstationImages(java.util.List nodeNames)
Parameters:
nodeNames -
Returns:

getAgentPathToNode

public AgentPath getAgentPathToNode(java.lang.String nodeName,
                                    AgentPath originAgentPath)
Parameters:
leastLoadedNodeForCapability -
originAgentPath -
Returns:

logCommandDistributed

public void logCommandDistributed(ExecuteWorkloadCommand command,
                                  AgentPath originAgentPath,
                                  AgentPath selectedAgentPath)
Parameters:
command -
path -
selectedAgentPath -

getCapabilityQueueSize

public int getCapabilityQueueSize(java.lang.String nodeName,
                                  java.lang.String qualifiedCapabilityPath)
Parameters:
nodeName -
path -
Returns:

getCapabilityQueueSize

public int getCapabilityQueueSize(java.lang.String nodeName,
                                  LocalCapabilityPath path)
Parameters:
nodeName -
path -
Returns:

getAlternativeCapabilitiesOnOtherNodes

public java.util.List getAlternativeCapabilitiesOnOtherNodes(java.lang.String workstationName,
                                                             java.lang.String nodeName)
Parameters:
string -
nodeName -
Returns:

getAvailableNodeNamesWithQSC0

public java.util.List getAvailableNodeNamesWithQSC0()
Returns:

getCapabilityIntersection

public java.util.List getCapabilityIntersection(java.lang.String nodeName1,
                                                java.lang.String nodeName2)
Parameters:
nodeNameAboveQSC1 -
nodeNameWithQSC0 -
Returns:

getNodeNameToEvictCommandFrom

public java.lang.String getNodeNameToEvictCommandFrom(java.lang.String nodeNameToMigrateTo,
                                                      java.util.List nodeNamesAboveQSC1,
                                                      java.util.List capabilities,
                                                      NodeDroppedToQSC1DecisionInformation decisionInformation)
Parameters:
nodeNameToMigrateTo - name of node to migrate command to
capabilities -
Returns:
name of node to evict command from

getHeaviestLoadedNodeName

protected java.lang.String getHeaviestLoadedNodeName(java.util.Set allCandidateNodes,
                                                     java.util.Map capabilitiesByCandidateNodeName,
                                                     java.util.List heaviestLoadedCapabilityPaths,
                                                     NodeDroppedToQSC1DecisionInformation decisionInformation)
Parameters:
allCandidateNodes -
capabilitiesByCandidateNodeName -
Returns:

getAnyAgent

public AgentPath getAnyAgent(java.lang.String nodeName,
                             java.lang.String capabilityPath)
Parameters:
nodeNameDroppedToQSC1 -
capabilityPath -
Returns:

getHeaviestLoadedCapabilityPath

public java.lang.String getHeaviestLoadedCapabilityPath(java.lang.String nodeName,
                                                        java.util.List capabilities)
Parameters:
nodeNameAboveQSC1 -
capabilitiesIntersection -
Returns:

getAllConnectedNodeNames

public java.util.List getAllConnectedNodeNames()

getAvailableNodeNamesAboveQSC

public java.util.List getAvailableNodeNamesAboveQSC(int qsc)

existsNodeAboveQSC0

public boolean existsNodeAboveQSC0()
Returns:

isDisableEviction

public boolean isDisableEviction()
Returns:

getLastSelectNodeName

public java.lang.String getLastSelectNodeName()
Returns:
Returns the lastSelectedNodeName.

setLastSelectNodeName

public void setLastSelectNodeName(java.lang.String lastSelectNodeName)
Parameters:
lastSelectedNodeName - The lastSelectedNodeName to set.

getHeaviestLoadedCapability

public java.lang.String getHeaviestLoadedCapability(java.lang.String nodeNameHeaviestLoaded,
                                                    java.util.List capabilityPathNames,
                                                    NodeDroppedToQSC1DecisionInformation decisionInformation)
Parameters:
nodeNameHeaviestLoaded -
capabilities -
Returns:

acquireReadLock

public void acquireReadLock()
                     throws java.lang.InterruptedException
Throws:
java.lang.InterruptedException

releaseReadLock

public void releaseReadLock()

isDisableFullEviction

public boolean isDisableFullEviction()
Returns:

isDisableNodeDroppedToQSC1

public boolean isDisableNodeDroppedToQSC1()
Returns:

isDisableNodesWithQSC0Exist

public boolean isDisableNodesWithQSC0Exist()
Returns:

isDisablePartialEviction

public boolean isDisablePartialEviction()
Returns:

getDescriptor

public Descriptor getDescriptor()
Returns:
Returns the descriptor.

hasWorkstations

public boolean hasWorkstations()
Returns:

getWorkstationNames

public java.util.List getWorkstationNames()
Returns: