ostore.archive.dissemination
Class SetCreatorStage

java.lang.Object
  |
  +--ostore.archive.dissemination.SetCreatorStage
All Implemented Interfaces:
EventHandlerIF, ProfilableIF, SingleThreadedEventHandlerIF

public class SetCreatorStage
extends Object
implements SingleThreadedEventHandlerIF, EventHandlerIF, ProfilableIF

The SetCreatorStage creates dissemination sets, sets of StorageServers that fail together with low correlation.

To create dissemination sets the SetCreatorStage probes the system collecting information about a sufficiently large set of StorageServers. The SetCreatorStage relies on the properties of dd to discover new servers. dd routes a TypeRequestMsg to the node that most closely matches the requested destination. Thus, even though the dd address space is sparse, the SetCreatorStage can use a scan of the address space to reach a random set of StorageServers. StorageServers that are willing to store Disseminatables respond with a signed (i.e. MAC'd Message Authentication Certificate) statement of their type.

Once the SetCreatorStage has collected a sufficiently large pool of servers (e.g.. several hundred), it analyzes the probability for correlated failures using the result of the Model Builder and creates sets of StorageServers that fail with low correlation. Resulting dissemination sets should be large enough that each Disseminatable of an object may be sent to a different, unique node in the set with a few additional StorageServers to replace failed StorageServers. Because the model is constantly evolving and the properties of StorageServers are constantly changing, dissemination sets eventually expire. If no sets of sufficient size can be found, the SetCreatorStage seeks out other StorageServers to replace some members of the pool.

USAGE

To receive a dissemination set, dispatch a dissemination set request (i.e. RequestDisseminationSetMsg). When the SetCreatorStage receives the message, it will respond with a RequestDisseminationSetResponseMsg containing a set of dissemination sets.

INITIALIZATION PARAMETERS

node_id
NodeId of the local server where this stage is running.
SetSize
Should be the same size as the number of Disseminatables used in the inner stage.
RandomSeed
Random seed for randomizing starting place in scan of address space.

Version:
$Id: SetCreatorStage.java,v 1.30 2004/05/13 20:13:06 hweather Exp $
Author:
Hakim Weatherspoon
See Also:
DisseminatorStage, ArchivalStorageStage, TypeRequestMsg, TypeResponseMsg, RequestDisseminationSetMsg, RequestDisseminationSetResponseMsg

Constructor Summary
SetCreatorStage()
           
 
Method Summary
 void destroy()
           
 void handleEvent(QueueElementIF item)
           
 void handleEvents(QueueElementIF[] items)
           
 void init(ConfigDataIF config)
           
 int profileSize()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SetCreatorStage

public SetCreatorStage()
Method Detail

handleEvent

public void handleEvent(QueueElementIF item)
                 throws EventHandlerException
Specified by:
handleEvent in interface EventHandlerIF
EventHandlerException

handleEvents

public void handleEvents(QueueElementIF[] items)
                  throws EventHandlerException
Specified by:
handleEvents in interface EventHandlerIF
EventHandlerException

init

public void init(ConfigDataIF config)
          throws Exception
Specified by:
init in interface EventHandlerIF
Exception

destroy

public void destroy()
             throws Exception
Specified by:
destroy in interface EventHandlerIF
Exception

profileSize

public int profileSize()
Specified by:
profileSize in interface ProfilableIF