Package org.jgroups.protocols
Class NAKACK4
- java.lang.Object
- 
- org.jgroups.stack.Protocol
- 
- org.jgroups.protocols.ReliableMulticast
- 
- org.jgroups.protocols.NAKACK4
 
 
 
- 
- All Implemented Interfaces:
- Lifecycle,- DiagnosticsHandler.ProbeHandler
 
 public class NAKACK4 extends ReliableMulticast New multicast protocol based on fixed-size xmit windows and message ACKs
 Details: https://issues.redhat.com/browse/JGRP-2780- Since:
- 5.4
- Author:
- Bela Ban
 
- 
- 
Nested Class Summary- 
Nested classes/interfaces inherited from class org.jgroups.protocols.ReliableMulticastReliableMulticast.Entry, ReliableMulticast.LastSeqnoResender, ReliableMulticast.RetransmitTask
 
- 
 - 
Field SummaryFields Modifier and Type Field Description protected AckTableack_tableprotected intack_thresholdprotected java.util.concurrent.atomic.LongAdderacks_receivedprotected java.util.function.IntBinaryOperatoradd_acksprotected intcapacity- 
Fields inherited from class org.jgroups.protocols.ReliableMulticastavg_batch_size, BATCH_ACCUMULATOR, become_server_queue, become_server_queue_size, cached_batches, digest_history, discard_delivered_msgs, DUMMY_OOB_MSG, HAS_HEADER, is_server, is_trace, last_seqno_resender, leaving, local_send_entry, local_xmit_table, log_discard_msgs, log_not_found_msgs, max_batch_size, max_xmit_req_size, members, no_dummy_and_no_oob_delivered_msgs_and_no_dont_loopback_msgs, num_messages_received, num_messages_sent, remove_filter, reuse_message_batches, running, send_atomically, sends_can_block, seqno, SEQNO_GETTER, stability_msgs, stable_xmit_map, suppress_log_non_member, suppress_time_non_member_warnings, timer, use_mcast_xmit, use_mcast_xmit_req, view, xmit_from_random_member, xmit_interval, xmit_reqs_received, xmit_reqs_sent, xmit_rsps_received, xmit_rsps_sent, xmit_table, xmit_task, xmit_task_map
 - 
Fields inherited from class org.jgroups.stack.Protocolafter_creation_hook, down_prot, ergonomics, id, local_addr, log, policies, stack, stats, up_prot
 
- 
 - 
Constructor SummaryConstructors Constructor Description NAKACK4()
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Modifier and Type Method Description intackThreshold()NAKACK4ackThreshold(int t)protected booleanaddToSendBuffer(Buffer<Message> win, long seq, Message msg, java.util.function.Predicate<Message> filter)Adds the message to the send buffer.protected voidadjustReceivers(java.util.List<Address> members)Removes old members from xmit-table and adds new members to xmit-table (at seqnos hd=0, hr=0).intcapacity()NAKACK4capacity(int c)voidchangeCapacity(int new_capacity)Changes the capacity of the buffer, basically by creating a new buffer and copying the messages from the old one.protected Buffer<Message>createXmitWindow(long initial_seqno)voiddestroy()This method is called on aJChannel.close().AverageMinMaxgetAvgTimeBlocked()longgetNumBlockings()longgetNumDroppedMessages()longgetNumUnackedMessages()longgetNumUnackedMessages(Address dest)protected voidhandleAck(Address sender, long ack)voidinit()Called after a protocol has been created and before the protocol is started.protected booleanneedToSendAck(ReliableMulticast.Entry e)protected booleanneedToSendAck(ReliableMulticast.Entry e, int num_acks)java.lang.StringprintAckTable()protected voidreset()voidresetStats()protected voidsendAck(Address to, Buffer<Message> win)voidsendAcks()protected voidsendAcks(boolean always_send)booleansendBufferCanBlock()Whether addition of a message to the send buffer can blockvoidsendPendingAcks()protected voidstable(Digest digest)Garbage collect messages that have been seen by all members.- 
Methods inherited from class org.jgroups.protocols.ReliableMulticastbecomeServerQueue, clearCachedBatches, clearNonMemberCache, deliver, deliverBatch, discardDeliveredMsgs, discardDeliveredMsgs, down, down, flushBecomeServerQueue, getBecomeServerQueueSize, getBecomeServerQueueSizeActual, getBuf, getCurrentSeqno, getDigest, getDigest, getEntry, getMaxXmitReqSize, getNonMemberMessages, getNumMessagesReceived, getNumMessagesSent, getSizeOfAllMessages, getSizeOfAllMessagesInclHeaders, getSuppressTimeNonMemberWarnings, getXmitInterval, getXmitRequestsReceived, getXmitRequestsSent, getXmitResponsesReceived, getXmitResponsesSent, getXmitTableCapacity, getXmitTableMissingMessages, getXmitTableUndeliveredMsgs, handleHighestSeqno, handleMessage, handleMessageBatch, handleProbe, handleXmitReq, handleXmitRsp, isTrace, isTrace, isXmitTaskRunning, logDiscardMessages, logDiscardMessages, logNotFoundMessages, logNotFoundMessages, mergeDigest, msgFromXmitRsp, overwriteDigest, printBatches, printCachedBatches, printDigestHistory, printMessages, printStabilityMessages, providedUpServices, queueMessage, removeAndDeliver, resend, retransmit, retransmit, reuseMessageBatches, reuseMessageBatches, send, sendAtomically, sendAtomically, sendBuf, sendEntry, sendsCanBlock, sendsCanBlock, sendXmitRsp, setBecomeServerQueueSize, setDigest, setDigest, setDiscardDeliveredMsgs, setLevel, setMaxXmitReqSize, setSuppressTimeNonMemberWarnings, setTimer, setXmitFromRandomMember, setXmitInterval, sizeOfAllMessages, start, startRetransmitTask, stop, stopRetransmitTask, supportedKeys, triggerXmit, unknownMember, up, up, up, useMcastXmit, useMcastXmit, useMcastXmitReq, useMcastXmitReq, xmitFromRandomMember, xmitFromRandomMember
 - 
Methods inherited from class org.jgroups.stack.Protocolaccept, addPolicy, addr, addr, afterCreationHook, down, enableStats, getAddress, getComponents, getDownProtocol, getDownServices, getId, getIdsAbove, getLevel, getLog, getName, getPolicies, getProtocolStack, getSocketFactory, getThreadFactory, getTransport, getUpProtocol, getUpServices, getValue, isErgonomics, level, parse, policies, providedDownServices, removePolicy, requiredDownServices, requiredUpServices, resetStatistics, setAddress, setDownProtocol, setErgonomics, setId, setPolicies, setProtocolStack, setSocketFactory, setUpProtocol, setValue, statsEnabled, toString
 
- 
 
- 
- 
- 
Field Detail- 
ack_tableprotected final AckTable ack_table 
 - 
capacityprotected int capacity 
 - 
ack_thresholdprotected int ack_threshold 
 - 
acks_receivedprotected final java.util.concurrent.atomic.LongAdder acks_received 
 - 
add_acksprotected final java.util.function.IntBinaryOperator add_acks 
 
- 
 - 
Method Detail- 
capacitypublic int capacity() 
 - 
capacitypublic NAKACK4 capacity(int c) 
 - 
ackThresholdpublic int ackThreshold() 
 - 
ackThresholdpublic NAKACK4 ackThreshold(int t) 
 - 
getNumUnackedMessagespublic long getNumUnackedMessages() 
 - 
getNumUnackedMessagespublic long getNumUnackedMessages(Address dest) 
 - 
getNumBlockingspublic long getNumBlockings() 
 - 
getNumDroppedMessagespublic long getNumDroppedMessages() 
 - 
getAvgTimeBlockedpublic AverageMinMax getAvgTimeBlocked() 
 - 
createXmitWindowprotected Buffer<Message> createXmitWindow(long initial_seqno) - Specified by:
- createXmitWindowin class- ReliableMulticast
 
 - 
sendBufferCanBlockpublic boolean sendBufferCanBlock() Description copied from class:ReliableMulticastWhether addition of a message to the send buffer can block- Overrides:
- sendBufferCanBlockin class- ReliableMulticast
 
 - 
resetStatspublic void resetStats() - Overrides:
- resetStatsin class- ReliableMulticast
 
 - 
initpublic void init() throws java.lang.ExceptionDescription copied from class:ProtocolCalled after a protocol has been created and before the protocol is started. Attributes are already set. Other protocols are not yet connected and events cannot yet be sent.- Specified by:
- initin interface- Lifecycle
- Overrides:
- initin class- ReliableMulticast
- Throws:
- java.lang.Exception- Thrown if protocol cannot be initialized successfully. This will cause the ProtocolStack to fail, so the the channel constructor will throw an exception
 
 - 
destroypublic void destroy() Description copied from class:ProtocolThis method is called on aJChannel.close(). Does some cleanup; after the call, the VM will terminate
 - 
printAckTablepublic java.lang.String printAckTable() 
 - 
sendAckspublic void sendAcks() 
 - 
sendPendingAckspublic void sendPendingAcks() 
 - 
sendAcksprotected void sendAcks(boolean always_send) 
 - 
changeCapacitypublic void changeCapacity(int new_capacity) Changes the capacity of the buffer, basically by creating a new buffer and copying the messages from the old one. This method is only supposed to be used by perf testing, so DON'T USE!
 - 
adjustReceiversprotected void adjustReceivers(java.util.List<Address> members) Description copied from class:ReliableMulticastRemoves old members from xmit-table and adds new members to xmit-table (at seqnos hd=0, hr=0). This method is not called concurrently- Overrides:
- adjustReceiversin class- ReliableMulticast
 
 - 
resetprotected void reset() - Overrides:
- resetin class- ReliableMulticast
 
 - 
stableprotected void stable(Digest digest) Description copied from class:ReliableMulticastGarbage collect messages that have been seen by all members. Update sent_msgs: for the sender P in the digest which is equal to the local address, garbage collect all messages <= seqno at digest[P]. Update xmit_table: for each sender P in the digest and its highest seqno seen SEQ, garbage collect all delivered_msgs in the retransmit buffer corresponding to P which are <= seqno at digest[P].- Overrides:
- stablein class- ReliableMulticast
 
 - 
handleAckprotected void handleAck(Address sender, long ack) - Overrides:
- handleAckin class- ReliableMulticast
 
 - 
needToSendAckprotected boolean needToSendAck(ReliableMulticast.Entry e) - Overrides:
- needToSendAckin class- ReliableMulticast
 
 - 
needToSendAckprotected boolean needToSendAck(ReliableMulticast.Entry e, int num_acks) - Overrides:
- needToSendAckin class- ReliableMulticast
 
 - 
sendAckprotected void sendAck(Address to, Buffer<Message> win) - Overrides:
- sendAckin class- ReliableMulticast
 
 - 
addToSendBufferprotected boolean addToSendBuffer(Buffer<Message> win, long seq, Message msg, java.util.function.Predicate<Message> filter) Description copied from class:ReliableMulticastAdds the message to the send buffer. The loop tries to handle temporary OOMEs by retrying if add() failed- Overrides:
- addToSendBufferin class- ReliableMulticast
 
 
- 
 
-