Class TcpFailureDetector
- java.lang.Object
- 
- org.apache.catalina.tribes.group.ChannelInterceptorBase
- 
- org.apache.catalina.tribes.group.interceptors.TcpFailureDetector
 
 
- 
- All Implemented Interfaces:
- ChannelInterceptor,- TcpFailureDetectorMBean,- Heartbeat,- MembershipListener
 
 public class TcpFailureDetector extends ChannelInterceptorBase implements TcpFailureDetectorMBean The TcpFailureDetector is a useful interceptor that adds reliability to the membership layer.If the network is busy, or the system is busy so that the membership receiver thread is not getting enough time to update its table, members can be "timed out" This failure detector will intercept the memberDisappeared message(unless its a true shutdown message) and connect to the member using TCP. The TcpFailureDetector works in two ways: - It intercepts memberDisappeared events
- It catches send errors
 
- 
- 
Nested Class Summary- 
Nested classes/interfaces inherited from interface org.apache.catalina.tribes.ChannelInterceptorChannelInterceptor.InterceptorEvent
 
- 
 - 
Field SummaryFields Modifier and Type Field Description protected java.util.HashMap<Member,java.lang.Long>addSuspectsprotected longconnectTimeoutprotected Membershipmembershipprotected booleanperformReadTestprotected booleanperformSendTestprotected longreadTestTimeoutprotected java.util.HashMap<Member,java.lang.Long>removeSuspectsprotected intremoveSuspectsTimeoutprotected static StringManagersmprotected static byte[]TCP_FAIL_DETECT- 
Fields inherited from class org.apache.catalina.tribes.group.ChannelInterceptorBaseoptionFlag
 
- 
 - 
Constructor SummaryConstructors Constructor Description TcpFailureDetector()
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcheckMembers(boolean checkAll)longgetConnectTimeout()MembergetLocalMember(boolean incAlive)Return the member that represents this node.MembergetMember(Member mbr)Intercepts theChannel.getMember(Member)methodMember[]getMembers()Get all current cluster membersbooleangetPerformReadTest()booleangetPerformSendTest()longgetReadTestTimeout()intgetRemoveSuspectsTimeout()booleanhasMembers()has membersvoidheartbeat()Theheartbeat()method gets invoked periodically to allow interceptors to clean up resources, time out object and perform actions that are unrelated to sending/receiving data.voidmemberAdded(Member member)A member was added to the groupprotected booleanmemberAlive(Member mbr)protected booleanmemberAlive(Member mbr, byte[] msgData, boolean sendTest, boolean readTest, long readTimeout, long conTimeout, int optionFlag)voidmemberDisappeared(Member member)A member was removed from the group
 If the member left voluntarily, the Member.getCommand will contain the Member.SHUTDOWN_PAYLOAD datavoidmessageReceived(ChannelMessage msg)themessageReceivedis invoked when a message is received.protected voidperformBasicCheck()protected voidperformForcedCheck()voidsendMessage(Member[] destination, ChannelMessage msg, InterceptorPayload payload)ThesendMessagemethod is called when a message is being sent to one more destinations.voidsetConnectTimeout(long connectTimeout)voidsetPerformReadTest(boolean performReadTest)voidsetPerformSendTest(boolean performSendTest)voidsetReadTestTimeout(long readTestTimeout)voidsetRemoveSuspectsTimeout(int removeSuspectsTimeout)protected voidsetupMembership()- 
Methods inherited from class org.apache.catalina.tribes.group.ChannelInterceptorBasefireInterceptorEvent, getChannel, getNext, getOptionFlag, getPrevious, okToProcess, setChannel, setNext, setOptionFlag, setPrevious, start, stop
 - 
Methods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 - 
Methods inherited from interface org.apache.catalina.tribes.group.interceptors.TcpFailureDetectorMBeangetOptionFlag
 
- 
 
- 
- 
- 
Field Detail- 
smprotected static final StringManager sm 
 - 
TCP_FAIL_DETECTprotected static final byte[] TCP_FAIL_DETECT 
 - 
connectTimeoutprotected long connectTimeout 
 - 
performSendTestprotected boolean performSendTest 
 - 
performReadTestprotected boolean performReadTest 
 - 
readTestTimeoutprotected long readTestTimeout 
 - 
membershipprotected Membership membership 
 - 
removeSuspectsprotected final java.util.HashMap<Member,java.lang.Long> removeSuspects 
 - 
addSuspectsprotected final java.util.HashMap<Member,java.lang.Long> addSuspects 
 - 
removeSuspectsTimeoutprotected int removeSuspectsTimeout 
 
- 
 - 
Method Detail- 
sendMessagepublic void sendMessage(Member[] destination, ChannelMessage msg, InterceptorPayload payload) throws ChannelException Description copied from interface:ChannelInterceptorThesendMessagemethod is called when a message is being sent to one more destinations. The interceptor can modify any of the parameters and then pass on the message down the stack by invokinggetNext().sendMessage(destination,msg,payload)
 Alternatively the interceptor can stop the message from being sent by not invokinggetNext().sendMessage(destination,msg,payload)
 If the message is to be sent asynchronous the application can be notified of completion and errors by passing in an error handler attached to a payload object.
 The ChannelMessage.getAddress contains Channel.getLocalMember, and can be overwritten to simulate a message sent from another node.- Specified by:
- sendMessagein interface- ChannelInterceptor
- Overrides:
- sendMessagein class- ChannelInterceptorBase
- Parameters:
- destination- Member[] - the destination for this message
- msg- ChannelMessage - the message to be sent
- payload- InterceptorPayload - the payload, carrying an error handler and future useful data, can be null
- Throws:
- ChannelException- if a serialization error happens.
- See Also:
- ErrorHandler,- InterceptorPayload
 
 - 
messageReceivedpublic void messageReceived(ChannelMessage msg) Description copied from interface:ChannelInterceptorthemessageReceivedis invoked when a message is received.ChannelMessage.getAddress()is the sender, or the reply-to address if it has been overwritten.- Specified by:
- messageReceivedin interface- ChannelInterceptor
- Overrides:
- messageReceivedin class- ChannelInterceptorBase
- Parameters:
- msg- ChannelMessage
 
 - 
memberAddedpublic void memberAdded(Member member) Description copied from interface:MembershipListenerA member was added to the group- Specified by:
- memberAddedin interface- MembershipListener
- Overrides:
- memberAddedin class- ChannelInterceptorBase
- Parameters:
- member- Member - the member that was added
 
 - 
memberDisappearedpublic void memberDisappeared(Member member) Description copied from interface:MembershipListenerA member was removed from the group
 If the member left voluntarily, the Member.getCommand will contain the Member.SHUTDOWN_PAYLOAD data- Specified by:
- memberDisappearedin interface- MembershipListener
- Overrides:
- memberDisappearedin class- ChannelInterceptorBase
- Parameters:
- member- Member
- See Also:
- Member.SHUTDOWN_PAYLOAD
 
 - 
hasMemberspublic boolean hasMembers() Description copied from class:ChannelInterceptorBasehas members- Specified by:
- hasMembersin interface- ChannelInterceptor
- Overrides:
- hasMembersin class- ChannelInterceptorBase
- Returns:
- boolean - if the channel has members in its membership group
- See Also:
- Channel.hasMembers()
 
 - 
getMemberspublic Member[] getMembers() Description copied from class:ChannelInterceptorBaseGet all current cluster members- Specified by:
- getMembersin interface- ChannelInterceptor
- Overrides:
- getMembersin class- ChannelInterceptorBase
- Returns:
- all members or empty array
- See Also:
- Channel.getMembers()
 
 - 
getMemberpublic Member getMember(Member mbr) Description copied from interface:ChannelInterceptorIntercepts theChannel.getMember(Member)method- Specified by:
- getMemberin interface- ChannelInterceptor
- Overrides:
- getMemberin class- ChannelInterceptorBase
- Parameters:
- mbr- Member
- Returns:
- Member
- See Also:
- Channel.getMember(Member)
 
 - 
getLocalMemberpublic Member getLocalMember(boolean incAlive) Description copied from class:ChannelInterceptorBaseReturn the member that represents this node.- Specified by:
- getLocalMemberin interface- ChannelInterceptor
- Overrides:
- getLocalMemberin class- ChannelInterceptorBase
- Parameters:
- incAlive- boolean
- Returns:
- Member
- See Also:
- Channel.getLocalMember(boolean)
 
 - 
heartbeatpublic void heartbeat() Description copied from interface:ChannelInterceptorTheheartbeat()method gets invoked periodically to allow interceptors to clean up resources, time out object and perform actions that are unrelated to sending/receiving data.- Specified by:
- heartbeatin interface- ChannelInterceptor
- Specified by:
- heartbeatin interface- Heartbeat
- Overrides:
- heartbeatin class- ChannelInterceptorBase
 
 - 
checkMemberspublic void checkMembers(boolean checkAll) - Specified by:
- checkMembersin interface- TcpFailureDetectorMBean
 
 - 
performForcedCheckprotected void performForcedCheck() 
 - 
performBasicCheckprotected void performBasicCheck() 
 - 
setupMembershipprotected void setupMembership() 
 - 
memberAliveprotected boolean memberAlive(Member mbr) 
 - 
memberAliveprotected boolean memberAlive(Member mbr, byte[] msgData, boolean sendTest, boolean readTest, long readTimeout, long conTimeout, int optionFlag) 
 - 
getReadTestTimeoutpublic long getReadTestTimeout() - Specified by:
- getReadTestTimeoutin interface- TcpFailureDetectorMBean
 
 - 
getPerformSendTestpublic boolean getPerformSendTest() - Specified by:
- getPerformSendTestin interface- TcpFailureDetectorMBean
 
 - 
getPerformReadTestpublic boolean getPerformReadTest() - Specified by:
- getPerformReadTestin interface- TcpFailureDetectorMBean
 
 - 
getConnectTimeoutpublic long getConnectTimeout() - Specified by:
- getConnectTimeoutin interface- TcpFailureDetectorMBean
 
 - 
getRemoveSuspectsTimeoutpublic int getRemoveSuspectsTimeout() - Specified by:
- getRemoveSuspectsTimeoutin interface- TcpFailureDetectorMBean
 
 - 
setPerformReadTestpublic void setPerformReadTest(boolean performReadTest) - Specified by:
- setPerformReadTestin interface- TcpFailureDetectorMBean
 
 - 
setPerformSendTestpublic void setPerformSendTest(boolean performSendTest) - Specified by:
- setPerformSendTestin interface- TcpFailureDetectorMBean
 
 - 
setReadTestTimeoutpublic void setReadTestTimeout(long readTestTimeout) - Specified by:
- setReadTestTimeoutin interface- TcpFailureDetectorMBean
 
 - 
setConnectTimeoutpublic void setConnectTimeout(long connectTimeout) - Specified by:
- setConnectTimeoutin interface- TcpFailureDetectorMBean
 
 - 
setRemoveSuspectsTimeoutpublic void setRemoveSuspectsTimeout(int removeSuspectsTimeout) - Specified by:
- setRemoveSuspectsTimeoutin interface- TcpFailureDetectorMBean
 
 
- 
 
-