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
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
SetCreatorStage
public SetCreatorStage()
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