Class NAKACK

java.lang.Object
org.jgroups.stack.Protocol
org.jgroups.protocols.pbcast.NAKACK
All Implemented Interfaces:
NakReceiverWindow.Listener, Retransmitter.RetransmitCommand

Negative AcKnowledgement layer (NAKs). Messages are assigned a monotonically increasing sequence number (seqno). Receivers deliver messages ordered according to seqno and request retransmission of missing messages.
Retransmit requests are usually sent to the original sender of a message, but this can be changed by xmit_from_random_member (send to random member) or use_mcast_xmit_req (send to everyone). Responses can also be sent to everyone instead of the requester by setting use_mcast_xmit to true.
Version:
$Id: NAKACK.java,v 1.170.2.16.2.6 2009/05/04 14:11:33 belaban Exp $
Author:
Bela Ban
  • Field Details

    • stability_msgs

      protected final BoundedList<Digest> stability_msgs
      BoundedList, keeps the last 10 stability messages
    • merge_history

      protected final BoundedList<String> merge_history
  • Constructor Details

    • NAKACK

      public NAKACK()
  • Method Details

    • getName

      public String getName()
      Specified by:
      getName in class Protocol
    • getXmitRequestsReceived

      public long getXmitRequestsReceived()
    • getXmitRequestsSent

      public long getXmitRequestsSent()
    • getXmitResponsesReceived

      public long getXmitResponsesReceived()
    • getXmitResponsesSent

      public long getXmitResponsesSent()
    • getMissingMessagesReceived

      public long getMissingMessagesReceived()
    • getPendingRetransmissionRequests

      public int getPendingRetransmissionRequests()
    • getXmitTableSize

      public int getXmitTableSize()
    • getReceivedTableSize

      public int getReceivedTableSize()
    • resetStats

      public void resetStats()
      Overrides:
      resetStats in class Protocol
    • init

      public void init() throws Exception
      Description copied from class: 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.
      Overrides:
      init in class Protocol
      Throws:
      Exception - Thrown if protocol cannot be initialized successfully. This will cause the ProtocolStack to fail, so the channel constructor will throw an exception
    • getGcLag

      public int getGcLag()
    • setGcLag

      public void setGcLag(int gc_lag)
    • isUseMcastXmit

      public boolean isUseMcastXmit()
    • setUseMcastXmit

      public void setUseMcastXmit(boolean use_mcast_xmit)
    • isXmitFromRandomMember

      public boolean isXmitFromRandomMember()
    • setXmitFromRandomMember

      public void setXmitFromRandomMember(boolean xmit_from_random_member)
    • isDiscardDeliveredMsgs

      public boolean isDiscardDeliveredMsgs()
    • setDiscardDeliveredMsgs

      public void setDiscardDeliveredMsgs(boolean discard_delivered_msgs)
    • getMaxXmitBufSize

      public int getMaxXmitBufSize()
    • setMaxXmitBufSize

      public void setMaxXmitBufSize(int max_xmit_buf_size)
    • getMaxXmitSize

      public long getMaxXmitSize()
      Deprecated.
      removed in 2.6
      Returns:
    • setMaxXmitSize

      public void setMaxXmitSize(long max_xmit_size)
      Deprecated.
      removed in 2.6
      Parameters:
      max_xmit_size -
    • isLogDiscardMsgs

      public boolean isLogDiscardMsgs()
    • setLogDiscardMsgs

      public void setLogDiscardMsgs(boolean log_discard_msgs)
    • setProperties

      public boolean setProperties(Properties props)
      Description copied from class: Protocol
      Configures the protocol initially. A configuration string consists of name=value items, separated by a ';' (semicolon), e.g.:
       "loopback=false;unicast_inport=4444"
       
      Overrides:
      setProperties in class Protocol
    • dumpStats

      public Map<String,Object> dumpStats()
      Overrides:
      dumpStats in class Protocol
    • printStats

      public String printStats()
      Overrides:
      printStats in class Protocol
    • printStabilityMessages

      public String printStabilityMessages()
    • printStabilityHistory

      public String printStabilityHistory()
    • printMergeHistory

      public String printMergeHistory()
    • printLossRates

      public String printLossRates()
    • getAverageLossRate

      public double getAverageLossRate()
    • getAverageSmoothedLossRate

      public double getAverageSmoothedLossRate()
    • providedUpServices

      public Vector<Integer> providedUpServices()
      Description copied from class: Protocol
      List of events that are provided to layers above (they will be handled when sent down from above).
      Overrides:
      providedUpServices in class Protocol
      Returns:
      Vector (of Integers)
    • start

      public void start() throws Exception
      Description copied from class: Protocol
      This method is called on a Channel.connect(String). Starts work. Protocols are connected and queues are ready to receive events. Will be called from bottom to top. This call will replace the START and START_OK events.
      Overrides:
      start in class Protocol
      Throws:
      Exception - Thrown if protocol cannot be started successfully. This will cause the ProtocolStack to fail, so Channel.connect(String) will throw an exception
    • stop

      public void stop()
      Description copied from class: Protocol
      This method is called on a Channel.disconnect(). 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
      Overrides:
      stop in class Protocol
    • down

      public Object down(Event evt)
      Callback. Called by superclass when event may be handled.

      Do not use down_prot.down() in this method as the event is passed down by default by the superclass after this method returns !

      Overrides:
      down in class Protocol
    • up

      public Object up(Event evt)
      Callback. Called by superclass when event may be handled.

      Do not use PassUp in this method as the event is passed up by default by the superclass after this method returns !

      Overrides:
      up in class Protocol
    • getDigest

      public Digest getDigest()
      Returns a message digest: for each member P the lowest, highest delivered and highest received seqno is added
    • retransmit

      public void retransmit(long first_seqno, long last_seqno, Address sender)
      Implementation of Retransmitter.RetransmitCommand. Called by retransmission thread when gap is detected.
      Specified by:
      retransmit in interface Retransmitter.RetransmitCommand
      Parameters:
      first_seqno - The sequence number of the first missing message
      last_seqno - The sequence number of the last missing message
      sender - The destination of the member to which the retransmit request will be sent (nak-based scheme), or to which the message will be retransmitted (ack-based scheme).
    • retransmit

      protected void retransmit(long first_seqno, long last_seqno, Address sender, boolean multicast_xmit_request)
    • missingMessageReceived

      public void missingMessageReceived(long seqno, Address original_sender)
      Specified by:
      missingMessageReceived in interface NakReceiverWindow.Listener
    • messageGapDetected

      public void messageGapDetected(long from, long to, Address src)
      Called when a message gap is detected
      Specified by:
      messageGapDetected in interface NakReceiverWindow.Listener
    • printMessages

      public String printMessages()
    • printRetransmissionAvgs

      public String printRetransmissionAvgs()
    • printSmoothedRetransmissionAvgs

      public String printSmoothedRetransmissionAvgs()
    • printRetransmissionTimes

      public String printRetransmissionTimes()
    • getTotalAverageRetransmissionTime

      public double getTotalAverageRetransmissionTime()
    • getTotalAverageSmoothedRetransmissionTime

      public double getTotalAverageSmoothedRetransmissionTime()
    • getSmoothedAverageRetransmissionTime

      public double getSmoothedAverageRetransmissionTime(Address sender)
      Returns the smoothed average retransmission time for a given sender