Package org.jgroups.protocols.pbcast
Class STATE_TRANSFER
java.lang.Object
org.jgroups.stack.Protocol
org.jgroups.protocols.pbcast.STATE_TRANSFER
- All Implemented Interfaces:
Lifecycle,ProcessingQueue.Handler<Address>
STATE_TRANSFER protocol based on byte array transfer. A state request is sent
to a chosen member (coordinator if null). That member makes a copy D of its
current digest and asks the application for a copy of its current state S.
Then the member returns both S and D to the requester. The requester first
sets its digest to D and then returns the state to the application.
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classWraps data for a state request/response. -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected doubleprotected booleanprotected final LongAdderprotected final LongAdderprotected longprotected final ProcessingQueue<Address> List of members requesting stateprotected longprotected Viewprotected booleanset to true while waiting for a STATE_RSPFields inherited from class org.jgroups.stack.Protocol
after_creation_hook, down_prot, ergonomics, id, local_addr, log, policies, stack, stats, up_prot -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidprotected voidcloseHoleFor(Address member) protected AddressReturn the first element of members which is not me.An event is to be sent down the stack.doubleDeprecated.longDeprecated.longDeprecated.protected voidgetStateFromApplication(Address requester, Digest digest) voidprotected voidhandleException(Throwable exception) protected voidhandleStateReq(Address requester) protected voidhandleStateRsp(Digest digest, Address sender, byte[] state) Set the digest and the send the state up to the applicationprotected voidprotected booleanWhen FLUSH is used we do not need to pass digests between members see JGroups/doc/design/PartialStateTransfer.txt see JGroups/doc/design/FLUSH.txtvoidvoidprotected voidpunchHoleFor(Address member) List of events that are required to be answered by some layer belowvoidvoidprotected voidsendException(Address requester, Throwable exception) voidstart()This method is called on aJChannel.connect(String); starts work.voidstop()Called on aJChannel.disconnect(); stops work (e.g.An event was received from the protocol below.A single message was received.Methods inherited from class org.jgroups.stack.Protocol
accept, addPolicy, addr, addr, afterCreationHook, destroy, down, down, enableStats, getAddress, getComponents, getDownProtocol, getDownServices, getId, getIdsAbove, getLevel, getLog, getName, getPolicies, getProtocolStack, getSocketFactory, getThreadFactory, getTransport, getUpProtocol, getUpServices, getValue, init, isErgonomics, level, parse, policies, providedDownServices, providedUpServices, removePolicy, requiredUpServices, resetStatistics, setAddress, setDownProtocol, setErgonomics, setId, setLevel, setPolicies, setProtocolStack, setSocketFactory, setUpProtocol, setValue, statsEnabled, toString, up
-
Field Details
-
start
protected long start -
stop
protected long stop -
num_state_reqs
-
num_bytes_sent
-
avg_state_size
protected double avg_state_size -
view
-
members
-
state_requesters
List of members requesting state -
waiting_for_state_response
protected volatile boolean waiting_for_state_responseset to true while waiting for a STATE_RSP -
flushProtocolInStack
protected boolean flushProtocolInStack
-
-
Constructor Details
-
STATE_TRANSFER
public STATE_TRANSFER()
-
-
Method Details
-
getNumberOfStateRequests
Deprecated.Don't remove! https://issues.redhat.com/browse/JGRP-2814 -
getNumberOfStateBytesSent
Deprecated.Don't remove! https://issues.redhat.com/browse/JGRP-2814 -
getAverageStateSize
Deprecated.Don't remove! https://issues.redhat.com/browse/JGRP-2814 -
requiredDownServices
Description copied from class:ProtocolList of events that are required to be answered by some layer below- Overrides:
requiredDownServicesin classProtocol
-
resetStats
public void resetStats()- Overrides:
resetStatsin classProtocol
-
start
Description copied from class:ProtocolThis method is called on aJChannel.connect(String); starts work. Protocols are connected ready to receive events. Will be called from bottom to top. -
stop
public void stop()Description copied from class:ProtocolCalled on aJChannel.disconnect(); stops work (e.g. by closing multicast socket). Will be called from top to bottom. -
closeBarrierAndSuspendStable
public void closeBarrierAndSuspendStable() -
openBarrierAndResumeStable
public void openBarrierAndResumeStable() -
openBarrier
public void openBarrier() -
resumeStable
public void resumeStable() -
up
Description copied from class:ProtocolAn event was received from the protocol below. Usually the current protocol 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 usingdown_prot.down()or c) the event (or another event) is sent up the stack usingup_prot.up(). -
up
Description copied from class:ProtocolA single message was received. Protocols may examine the message and do something (e.g. add a header) with it before passing it up. -
down
Description copied from class:ProtocolAn event is to be sent down the stack. A protocol 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 protocol may need to add a header to it (or do nothing at all) before sending it down the stack usingdown_prot.down(). -
isDigestNeeded
protected boolean isDigestNeeded()When FLUSH is used we do not need to pass digests between members see JGroups/doc/design/PartialStateTransfer.txt see JGroups/doc/design/FLUSH.txt- Returns:
- true if use of digests is required, false otherwise
-
punchHoleFor
-
closeHoleFor
-
determineCoordinator
Return the first element of members which is not me. Otherwise return null. -
handleViewChange
-
handleException
-
handle
- Specified by:
handlein interfaceProcessingQueue.Handler<Address>
-
handleStateReq
-
getStateFromApplication
-
sendException
-
handleStateRsp
Set the digest and the send the state up to the application
-