Class/Object

com.comcast.xfinity.sirius.api.impl.bridge

PaxosStateBridge

Related Docs: object PaxosStateBridge | package bridge

Permalink

class PaxosStateBridge extends Actor with MonitoringHooks

Actor responsible for bridging the gap between the Paxos layer and the persistence layer.

This Actor contains the necessary logic for assuring that events are only applied to the persistence layer in order. As designed currently (on purpose) the Paxos system will blindly deliver decisions, even if they have already been decided. This allows nodes that are behind to catch up. Also, there is no guarantee that events will arrive in order, so a later event may arrive before a current event.

To accomplish this we buffer events that come before their time, only keeping the first copy of each.

XXX: in its current form it does not wait for confirmation that an event has been committed to disk by the persistence layer, we should really add that, but for now this should be good enough.

Linear Supertypes
MonitoringHooks, Actor, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. PaxosStateBridge
  2. MonitoringHooks
  3. Actor
  4. AnyRef
  5. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new PaxosStateBridge(startingSeq: Long, stateSupervisor: ActorRef, siriusSupervisor: ActorRef, childProvider: ChildProvider, catchupFreq: FiniteDuration, config: SiriusConfiguration)

    Permalink

    startingSeq

    the sequence number to start with

    stateSupervisor

    reference to the subsystem encapsulating system state. In the future as the code settles down we may want to have this directly point to the persistence layer, but for now we funnel everything through the state subsystem supervisor for abstraction, such that we can easily refactor and not worry about messing stuff up.

    siriusSupervisor

    reference to the Sirius Supervisor Actor for routing DecisionHints to the Paxos Subsystem

Type Members

  1. class PaxosStateBridgeInfo extends PaxosStateBridgeInfoMBean

    Permalink
  2. trait PaxosStateBridgeInfoMBean extends AnyRef

    Permalink

    Monitoring hooks

  3. type Receive = PartialFunction[Any, Unit]

    Permalink
    Definition Classes
    Actor

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. def aroundPostRestart(reason: Throwable): Unit

    Permalink
    Attributes
    protected[akka]
    Definition Classes
    Actor
  5. def aroundPostStop(): Unit

    Permalink
    Attributes
    protected[akka]
    Definition Classes
    Actor
  6. def aroundPreRestart(reason: Throwable, message: Option[Any]): Unit

    Permalink
    Attributes
    protected[akka]
    Definition Classes
    Actor
  7. def aroundPreStart(): Unit

    Permalink
    Attributes
    protected[akka]
    Definition Classes
    Actor
  8. def aroundReceive(receive: akka.actor.Actor.Receive, msg: Any): Unit

    Permalink
    Attributes
    protected[akka]
    Definition Classes
    Actor
  9. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  10. val catchupSchedule: Cancellable

    Permalink
  11. val catchupSupervisor: ActorRef

    Permalink
  12. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  13. implicit val context: ActorContext

    Permalink
    Definition Classes
    Actor
  14. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  15. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  16. var eventBuffer: RichJTreeMap[Long, OrderedEvent]

    Permalink
  17. implicit val executionContext: ExecutionContextExecutor

    Permalink
  18. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  19. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  20. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  21. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  22. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  23. var nextSeq: Long

    Permalink
  24. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  25. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  26. def postRestart(reason: Throwable): Unit

    Permalink
    Definition Classes
    Actor
    Annotations
    @throws( classOf[java.lang.Exception] )
  27. def postStop(): Unit

    Permalink
    Definition Classes
    PaxosStateBridge → Actor
  28. def preRestart(reason: Throwable, message: Option[Any]): Unit

    Permalink
    Definition Classes
    Actor
    Annotations
    @throws( classOf[java.lang.Exception] )
  29. def preStart(): Unit

    Permalink
    Definition Classes
    PaxosStateBridge → Actor
  30. def receive: PartialFunction[Any, Unit]

    Permalink
    Definition Classes
    PaxosStateBridge → Actor
  31. def registerMonitor(mbean: ⇒ Any, siriusConfig: SiriusConfiguration)(implicit context: ActorContext): Unit

    Permalink

    If sirius is configured to do such, register mbean as an MBean

    If sirius is configured to do such, register mbean as an MBean

    The object name derived for this object is kept locally on this instance, and will be unregistered when unregisterMonitors is called.

    mbean

    A call-by-name parameter to get the mbean to register, if sirisConfiguration is not configured with an MBeanFactory, then this is not used, and thus not called

    siriusConfig

    Sirius's configuration, from which it is decided if mbean should be registered as an MBean

    context

    the ActorContext this is run from, note it is necessary that this is run within an Actor for this to be available

    Definition Classes
    MonitoringHooks
  32. implicit final val self: ActorRef

    Permalink
    Definition Classes
    Actor
  33. final def sender(): ActorRef

    Permalink
    Definition Classes
    Actor
  34. var startupCatchupDuration: Option[Long]

    Permalink
  35. val startupTimestamp: Long

    Permalink
  36. def supervisorStrategy: SupervisorStrategy

    Permalink
    Definition Classes
    Actor
  37. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  38. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  39. def unhandled(message: Any): Unit

    Permalink
    Definition Classes
    Actor
  40. def unregisterMonitors(siriusConfig: SiriusConfiguration): Unit

    Permalink

    Unregister all MBeans registered by this instance

    Unregister all MBeans registered by this instance

    siriusConfig

    Sirius's configuration, from which it is decided if mbean should be registered as an MBean

    Definition Classes
    MonitoringHooks
  41. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  42. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  43. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from MonitoringHooks

Inherited from Actor

Inherited from AnyRef

Inherited from Any

Ungrouped