ibis.satin.impl.faultTolerance
Class FaultTolerance

java.lang.Object
  extended by ibis.satin.impl.faultTolerance.FaultTolerance
All Implemented Interfaces:
Config

public final class FaultTolerance
extends Object
implements Config


Field Summary
 boolean getTable
          True if the node needs to download the contents of the global result table; protected by the Satin lock.
 boolean takeCheckpoint
           
 
Fields inherited from interface ibis.satin.impl.Config
abortLogger, ASSERTS, CHECKPOINT_CLUSTER, CHECKPOINT_FILE, CHECKPOINT_FIRST, CHECKPOINT_INTERVAL, CHECKPOINT_MAXFILESIZE, CHECKPOINT_PUSH, CHECKPOINT_QUITTIME, CHECKPOINTING, CLIENT, CLOSE_CONNECTIONS, CLOSED, commLogger, CONNECT_TIMEOUT, CONNECTIONS_ON_DEMAND, connLogger, COORDINATOR_QUIT_DELAY_TIME, DELETE_CLUSTER_TIME, DELETE_TIME, DETAILED_STATS, DUMP, FT_NAIVE, ftLogger, grtLogger, HANDLE_MESSAGES_IN_LATENCY, inletLogger, KEEP_INTRA_CONNECTIONS, KILL_TIME, LABEL_ROUTING_MCAST, mainLogger, MASTER_HOST, MAX_CONNECTIONS, MAX_STEAL_THROTTLE, properties, PROPERTY_PREFIX, QUEUE_STEALS, s_alg, s_asserts, s_client, s_close_connections, s_closed, s_connections_on_demand, s_cpt, s_cpt_cluster, s_cpt_file, s_cpt_first, s_cpt_interval, s_cpt_maxFileSize, s_cpt_push, s_cpt_quit, s_delete_cluster_time, s_delete_time, s_detailed_stats, s_dump, s_ft_connectTimeout, s_ft_naive, s_in_latency, s_keep_intra_connections, s_kill_time, s_masterhost, s_max_connections, s_max_steal_throttle, s_queue_steals, s_so_delay, s_so_lrmc, s_so_size, s_so_wait_time, s_stats, s_steal_wait_timeout, s_throttle_steals, s_unreliable, SO_MAX_INVOCATION_DELAY, SO_MAX_MESSAGE_SIZE, SO_WAIT_FOR_UPDATES_TIME, soBcastLogger, soLogger, spawnLogger, STATS, STEAL_WAIT_TIMEOUT, stealLogger, SUPPLIED_ALG, sysprops, THROTTLE_STEALS, UNRELIABLE
 
Constructor Summary
FaultTolerance(Satin s)
           
 
Method Summary
 void addContents(Map<Stamp,GlobalResultTableValue> contents)
           
 void addToAbortAndStoreList(Stamp stamp)
           
 void broadcastCheckpointInfo()
           
 void broadcastCheckpointRequest()
          Sends a CHECKPOINT_REQUEST to all the other nodes.
 boolean checkForDuplicateWork(InvocationRecord parent, InvocationRecord r)
           
 void checkpointAndQuit()
           
 int computeConnectionSpeed()
           
 void coordinatorInit()
          Makes this node coordinator: - start the necessairy threads - initialize the checkpoint file - broadcast checkpoint info to other nodes
 void deleteCluster(String cluster)
           
 void disableConnectionUpcalls()
           
 void doPullCheckpoint()
          Request checkpoints of all the nodes, and takes it's own checkpoint
 void doPushCheckpoint()
          Take own checkpoint in case I am the coordinator.
 void electClusterCoordinator()
           
 void end()
           
 void findNewCoordinator()
           
 Map<Stamp,GlobalResultTableValue> getContents()
           
 ibis.ipl.ReceivePortConnectUpcall getReceivePortConnectHandler()
           
 ibis.ipl.RegistryEventHandler getRegistryEventHandler()
           
 void handleAbortAndStore(ibis.ipl.ReadMessage m)
           
 void handleAbortsAndStores()
           
 void handleCheckpoint(ibis.ipl.ReadMessage m)
           
 void handleCheckpointInfo(ibis.ipl.ReadMessage m)
           
 void handleClusterCoordinatorCrash()
           
 void handleCoordinatorInfo(ibis.ipl.ReadMessage m)
           
 void handleCrashes()
           
 void handleDelayedMessages()
           
 void handleDelete()
           
 void handleDeleteCluster()
           
 void handleFileWriteTime(ibis.ipl.ReadMessage m)
           
 void handleFileWriteTimeReq(ibis.ipl.ReadMessage m)
           
 void handleGRTUpdate(ibis.ipl.ReadMessage m)
           
 void handleMasterCrash()
           
 void handleResultPush(ibis.ipl.ReadMessage m)
           
 void handleResultRequest(ibis.ipl.ReadMessage m)
           
 void init()
           
 void killAndStoreChildrenOf(Stamp targetStamp)
           
 void killAndStoreSubtreeOf(ibis.ipl.IbisIdentifier targetOwner)
           
 void killSubtreeOf(ibis.ipl.IbisIdentifier targetOwner)
           
 ibis.ipl.IbisIdentifier lookupOwner(InvocationRecord r)
           
 void print(PrintStream out)
           
 void sendAbortAndStoreMessage(InvocationRecord r)
           
 void sendAbortMessage(InvocationRecord r)
           
 void setCoordinator()
          Makes the tempCoordinator (i.e.
 void storeResult(InvocationRecord r)
           
 void takeAndSendCheckpoint()
          Retrieves checkpoints from local queue, and sends them to coordinator
 void takeCoordinatorCheckpoint()
          Retrieve checkpoints from local queue, and store them in the global variable 'checkpoints'
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

getTable

public boolean getTable
True if the node needs to download the contents of the global result table; protected by the Satin lock.


takeCheckpoint

public boolean takeCheckpoint
Constructor Detail

FaultTolerance

public FaultTolerance(Satin s)
Method Detail

electClusterCoordinator

public void electClusterCoordinator()

init

public void init()

handleCrashes

public void handleCrashes()

handleMasterCrash

public void handleMasterCrash()

handleClusterCoordinatorCrash

public void handleClusterCoordinatorCrash()

killAndStoreChildrenOf

public void killAndStoreChildrenOf(Stamp targetStamp)

killAndStoreSubtreeOf

public void killAndStoreSubtreeOf(ibis.ipl.IbisIdentifier targetOwner)

killSubtreeOf

public void killSubtreeOf(ibis.ipl.IbisIdentifier targetOwner)

addToAbortAndStoreList

public void addToAbortAndStoreList(Stamp stamp)

handleAbortsAndStores

public void handleAbortsAndStores()

deleteCluster

public void deleteCluster(String cluster)

handleDelete

public void handleDelete()

handleDeleteCluster

public void handleDeleteCluster()

handleDelayedMessages

public void handleDelayedMessages()

checkpointAndQuit

public void checkpointAndQuit()

doPullCheckpoint

public void doPullCheckpoint()
Request checkpoints of all the nodes, and takes it's own checkpoint


doPushCheckpoint

public void doPushCheckpoint()
Take own checkpoint in case I am the coordinator. Otherwise send checkpoint


broadcastCheckpointRequest

public void broadcastCheckpointRequest()
Sends a CHECKPOINT_REQUEST to all the other nodes.


takeCoordinatorCheckpoint

public void takeCoordinatorCheckpoint()
Retrieve checkpoints from local queue, and store them in the global variable 'checkpoints'


takeAndSendCheckpoint

public void takeAndSendCheckpoint()
Retrieves checkpoints from local queue, and sends them to coordinator


broadcastCheckpointInfo

public void broadcastCheckpointInfo()

computeConnectionSpeed

public int computeConnectionSpeed()

setCoordinator

public void setCoordinator()
Makes the tempCoordinator (i.e. the node which has the fastes filewrite time uptill now) the coordinator and lets the other nodes know about the new coordinator


coordinatorInit

public void coordinatorInit()
Makes this node coordinator: - start the necessairy threads - initialize the checkpoint file - broadcast checkpoint info to other nodes


findNewCoordinator

public void findNewCoordinator()

checkForDuplicateWork

public boolean checkForDuplicateWork(InvocationRecord parent,
                                     InvocationRecord r)

storeResult

public void storeResult(InvocationRecord r)

print

public void print(PrintStream out)

lookupOwner

public ibis.ipl.IbisIdentifier lookupOwner(InvocationRecord r)

getContents

public Map<Stamp,GlobalResultTableValue> getContents()

addContents

public void addContents(Map<Stamp,GlobalResultTableValue> contents)

getRegistryEventHandler

public ibis.ipl.RegistryEventHandler getRegistryEventHandler()

getReceivePortConnectHandler

public ibis.ipl.ReceivePortConnectUpcall getReceivePortConnectHandler()

disableConnectionUpcalls

public void disableConnectionUpcalls()

handleAbortAndStore

public void handleAbortAndStore(ibis.ipl.ReadMessage m)

handleResultRequest

public void handleResultRequest(ibis.ipl.ReadMessage m)

handleResultPush

public void handleResultPush(ibis.ipl.ReadMessage m)

sendAbortAndStoreMessage

public void sendAbortAndStoreMessage(InvocationRecord r)

sendAbortMessage

public void sendAbortMessage(InvocationRecord r)

handleGRTUpdate

public void handleGRTUpdate(ibis.ipl.ReadMessage m)

handleCoordinatorInfo

public void handleCoordinatorInfo(ibis.ipl.ReadMessage m)

handleCheckpoint

public void handleCheckpoint(ibis.ipl.ReadMessage m)

handleCheckpointInfo

public void handleCheckpointInfo(ibis.ipl.ReadMessage m)

handleFileWriteTime

public void handleFileWriteTime(ibis.ipl.ReadMessage m)

handleFileWriteTimeReq

public void handleFileWriteTimeReq(ibis.ipl.ReadMessage m)

end

public void end()


The Ibis project