org.jgroups.protocols.pbcast

Class STABLE


public class STABLE
extends Protocol

Computes the broadcast messages that are stable; i.e., have been received by all members. Sends STABLE events up the stack when this is the case. This allows NAKACK to garbage collect messages that have been seen by all members.

Works as follows: periodically we mcast our highest seqnos (seen for each member) to the group. A stability vector, which maintains the highest seqno for each member and initially contains no data, is updated when such a message is received. The entry for a member P is computed set to min(entry[P], digest[P]). When messages from all members have been received, a stability message is mcast, which causes all members to send a STABLE event up the stack (triggering garbage collection in the NAKACK layer).

The stable task now terminates after max_num_gossips if no messages or view changes have been sent or received in the meantime. It will resume when messages are received. This effectively suspends sending superfluous STABLE messages in the face of no activity.
New: when max_bytes is exceeded (unless disabled by setting it to 0), a STABLE task will be started (unless it is already running).

Author:
Bela Ban

Nested Class Summary

static class
STABLE.StableHeader

Field Summary

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

Method Summary

void
down(Event evt)
long
getDesiredAverageGossip()
long
getMaxBytes()
String
getName()
int
getNumberOfGossipMessages()
Vector
requiredDownServices()
void
resetStats()
void
runMessageGarbageCollection()
void
setDesiredAverageGossip(long gossip_interval)
void
setMaxBytes(long max_bytes)
boolean
setProperties(Properties props)
void
start()
void
stop()
void
up(Event evt)

Methods inherited from class org.jgroups.stack.Protocol

destroy, down, downThreadEnabled, dumpStats, enableStats, getDownProtocol, getDownQueue, getName, getProperties, getUpProtocol, getUpQueue, handleSpecialDownEvent, init, isTrace, isWarn, passDown, passUp, printStats, providedDownServices, providedUpServices, receiveDownEvent, receiveUpEvent, requiredDownServices, requiredUpServices, resetStats, setDownProtocol, setObserver, setProperties, setPropertiesInternal, setProtocolStack, setTrace, setUpProtocol, setWarn, start, startDownHandler, startUpHandler, statsEnabled, stop, stopInternal, up, upThreadEnabled

Method Details

down

public void down(Event evt)
Overrides:
down in interface Protocol

getDesiredAverageGossip

public long getDesiredAverageGossip()

getMaxBytes

public long getMaxBytes()

getName

public String getName()
Overrides:
getName in interface Protocol

getNumberOfGossipMessages

public int getNumberOfGossipMessages()

requiredDownServices

public Vector requiredDownServices()
Overrides:
requiredDownServices in interface Protocol

resetStats

public void resetStats()
Overrides:
resetStats in interface Protocol

runMessageGarbageCollection

public void runMessageGarbageCollection()

setDesiredAverageGossip

public void setDesiredAverageGossip(long gossip_interval)

setMaxBytes

public void setMaxBytes(long max_bytes)

setProperties

public boolean setProperties(Properties props)
Overrides:
setProperties in interface Protocol

start

public void start()
            throws Exception
Overrides:
start in interface Protocol

stop

public void stop()
Overrides:
stop in interface Protocol

up

public void up(Event evt)
Overrides:
up in interface Protocol

Copyright B) 1998-2005 Bela Ban. All Rights Reserved.