|
|||||||||
| Home >> All >> org >> jgroups >> [ protocols overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
org.jgroups.protocols
Class FD

java.lang.Objectorg.jgroups.stack.Protocol
org.jgroups.protocols.FD
- public class FD
- extends org.jgroups.stack.Protocol
Failure detection based on simple heartbeat protocol. Regularly polls members for liveness. Multicasts SUSPECT messages when a member is not reachable. The simple algorithms works as follows: the membership is known and ordered. Each HB protocol periodically sends an 'are-you-alive' message to its *neighbor*. A neighbor is the next in rank in the membership list, which is recomputed upon a view change. When a response hasn't been received for n milliseconds and m tries, the corresponding member is suspected (and eventually excluded if faulty).
FD starts when it detects (in a view change notification) that there are at least 2 members in the group. It stops running when the membership drops below 2.
When a message is received from the monitored neighbor member, it causes the pinger thread to 'skip' sending the next are-you-alive message. Thus, traffic is reduced.
When we receive a ping from a member that's not in the membership list, we shun it by sending it a
NOT_MEMBER message. That member will then leave the group (and possibly rejoin). This is only done if
shun is true.
- Version:
- $Revision: 1.29 $
| Nested Class Summary | |
private class |
FD.Broadcaster
Task that periodically broadcasts a list of suspected members to the group. |
private class |
FD.BroadcastTask
|
static class |
FD.FdHeader
|
private class |
FD.Monitor
|
| Field Summary | |
(package private) FD.Broadcaster |
bcast_task
Transmits SUSPECT message until view change or UNSUSPECT is received |
(package private) java.util.Hashtable |
invalid_pingers
|
(package private) long |
last_ack
|
(package private) org.jgroups.Address |
local_addr
|
(package private) int |
max_tries
|
(package private) java.util.Vector |
members
|
(package private) FD.Monitor |
monitor
|
private java.lang.Object |
monitor_mutex
|
(package private) static java.lang.String |
name
|
private int |
num_heartbeats
|
private int |
num_suspect_events
|
(package private) int |
num_tries
|
(package private) org.jgroups.Address |
ping_dest
|
(package private) java.util.Vector |
pingable_mbrs
Members from which we select ping_dest. |
(package private) boolean |
shun
|
(package private) org.jgroups.util.BoundedList |
suspect_history
|
(package private) long |
timeout
|
(package private) org.jgroups.util.TimeScheduler |
timer
|
| Fields inherited from class org.jgroups.stack.Protocol |
down_handler, down_prot, down_queue, down_thread, down_thread_prio, log, observer, props, stack, stats, trace, up_handler, up_prot, up_queue, up_thread, up_thread_prio, warn |
| Constructor Summary | |
FD()
|
|
| Method Summary | |
void |
down(org.jgroups.Event evt)
An event is to be sent down the stack. |
int |
getCurrentNumTries()
|
java.lang.String |
getLocalAddress()
|
int |
getMaxTries()
|
java.lang.String |
getMembers()
|
java.lang.String |
getName()
|
int |
getNumberOfHeartbeatsSent()
|
int |
getNumSuspectEventsGenerated()
|
java.lang.String |
getPingableMembers()
|
java.lang.String |
getPingDest()
|
(package private) java.lang.Object |
getPingDest(java.util.Vector mbrs)
|
long |
getTimeout()
|
void |
init()
Called after instance has been created (null constructor) and before protocol is started. |
boolean |
isShun()
|
java.lang.String |
printSuspectHistory()
|
void |
resetStats()
|
void |
setMaxTries(int max_tries)
|
boolean |
setProperties(java.util.Properties props)
Configures the protocol initially. |
void |
setShun(boolean flag)
|
void |
setTimeout(long timeout)
|
(package private) void |
shunInvalidHeartbeatSender(org.jgroups.Address hb_sender)
If sender is not a member, send a NOT_MEMBER to sender (after n pings received) |
private void |
startMonitor()
|
void |
stop()
This method is called on a Channel.disconnect()> Channel.disconnect() 55 . |
private void |
stopMonitor()
|
(package private) void |
unsuspect(org.jgroups.Address mbr)
|
void |
up(org.jgroups.Event evt)
An event was received from the layer below. |
| Methods inherited from class org.jgroups.stack.Protocol |
destroy, downThreadEnabled, dumpStats, enableStats, getDownProtocol, getDownQueue, getProperties, getUpProtocol, getUpQueue, handleSpecialDownEvent, isTrace, isWarn, passDown, passUp, printStats, providedDownServices, providedUpServices, receiveDownEvent, receiveUpEvent, requiredDownServices, requiredUpServices, setDownProtocol, setObserver, setPropertiesInternal, setProtocolStack, setTrace, setUpProtocol, setWarn, start, startDownHandler, startUpHandler, statsEnabled, stopInternal, upThreadEnabled |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
ping_dest
org.jgroups.Address ping_dest
local_addr
org.jgroups.Address local_addr
timeout
long timeout
last_ack
long last_ack
num_tries
int num_tries
max_tries
int max_tries
members
final java.util.Vector members
invalid_pingers
final java.util.Hashtable invalid_pingers
pingable_mbrs
final java.util.Vector pingable_mbrs
- Members from which we select ping_dest. may be subset of
members55
shun
boolean shun
timer
org.jgroups.util.TimeScheduler timer
monitor
FD.Monitor monitor
monitor_mutex
private final java.lang.Object monitor_mutex
num_heartbeats
private int num_heartbeats
num_suspect_events
private int num_suspect_events
bcast_task
final FD.Broadcaster bcast_task
- Transmits SUSPECT message until view change or UNSUSPECT is received
name
static final java.lang.String name
- See Also:
- Constant Field Values
suspect_history
org.jgroups.util.BoundedList suspect_history
| Constructor Detail |
FD
public FD()
| Method Detail |
getName
public java.lang.String getName()
getLocalAddress
public java.lang.String getLocalAddress()
getMembers
public java.lang.String getMembers()
getPingableMembers
public java.lang.String getPingableMembers()
getPingDest
public java.lang.String getPingDest()
getNumberOfHeartbeatsSent
public int getNumberOfHeartbeatsSent()
getNumSuspectEventsGenerated
public int getNumSuspectEventsGenerated()
getTimeout
public long getTimeout()
setTimeout
public void setTimeout(long timeout)
getMaxTries
public int getMaxTries()
setMaxTries
public void setMaxTries(int max_tries)
getCurrentNumTries
public int getCurrentNumTries()
isShun
public boolean isShun()
setShun
public void setShun(boolean flag)
printSuspectHistory
public java.lang.String printSuspectHistory()
setProperties
public boolean setProperties(java.util.Properties props)
- Description copied from class:
org.jgroups.stack.Protocol - Configures the protocol initially. A configuration string consists of name=value
items, separated by a ';' (semicolon), e.g.:
"loopback=false;unicast_inport=4444"
resetStats
public void resetStats()
init
public void init()
throws java.lang.Exception
- Description copied from class:
org.jgroups.stack.Protocol - Called after instance has been created (null constructor) and before protocol is started.
Properties are already set. Other protocols are not yet connected and events cannot yet be sent.
stop
public void stop()
- Description copied from class:
org.jgroups.stack.Protocol - This method is called on a Channel.disconnect()>
Channel.disconnect()55 . Stops work (e.g. by closing multicast socket). Will be called from top to bottom. This means that at the time of the method invocation the neighbor protocol below is still working. This method will replace the STOP, STOP_OK, CLEANUP and CLEANUP_OK events. The ProtocolStack guarantees that when this method is called all messages in the down queue will have been flushed
getPingDest
java.lang.Object getPingDest(java.util.Vector mbrs)
startMonitor
private void startMonitor()
stopMonitor
private void stopMonitor()
up
public void up(org.jgroups.Event evt)
- Description copied from class:
org.jgroups.stack.Protocol - An event was received from the layer below. Usually the current layer will want to examine
the event type and - depending on its type - perform some computation
(e.g. removing headers from a MSG event type, or updating the internal membership list
when receiving a VIEW_CHANGE event).
Finally the event is either a) discarded, or b) an event is sent down
the stack using
passDown()or c) the event (or another event) is sent up the stack usingpassUp().
down
public void down(org.jgroups.Event evt)
- Description copied from class:
org.jgroups.stack.Protocol - An event is to be sent down the stack. The layer may want to examine its type and perform
some action on it, depending on the event's type. If the event is a message MSG, then
the layer may need to add a header to it (or do nothing at all) before sending it down
the stack using
passDown(). In case of a GET_ADDRESS event (which tries to retrieve the stack's address from one of the bottom layers), the layer may need to send a new response event back up the stack usingpassUp().
unsuspect
void unsuspect(org.jgroups.Address mbr)
shunInvalidHeartbeatSender
void shunInvalidHeartbeatSender(org.jgroups.Address hb_sender)
- If sender is not a member, send a NOT_MEMBER to sender (after n pings received)
|
|||||||||
| Home >> All >> org >> jgroups >> [ protocols overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
JAVADOC