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 set
s
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 set
s.
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