Package-level declarations

Types

Link copied to clipboard
class Checkpoint @InternalWowApi constructor(val subscription: String, val partition: Int, val position: Long)

The checkpoint of subscription in partition, at position, as CheckpointStore.saveAll saves it.

Link copied to clipboard

The checkpoints of subscriptions (documentation/designs/04-subscriptions.md §1): one per (subscription group, subscription, partition), the lowest log sequence up to which every entry of the partition is completed.

Link copied to clipboard

How a subscription answers a failure of its handler (9.x RecoverableType).

Link copied to clipboard

Classifies the failures of subscription handlers (9.x RecoverableExceptionProvider): the failures of what the handlers call directly (a driver, a client of another system).

Link copied to clipboard

Where a context's log ends the history migrate-data imported from 9.x: in each partition, the log's head after the latest import or tail pass, kept as a checkpoint row of the store beside the log (group groupOf, subscription SUBSCRIPTION), which each pass moves forward. A context that was never migrated has none.

Link copied to clipboard
class Lease @InternalWowApi constructor(val group: String, val partition: Int, val owner: String, val epoch: Long, val expiresAt: Long)

owner holds partition for subscription group group until expiresAt (epoch milliseconds, exclusive).

Link copied to clipboard
interface LeaseStore

Partition ownership within a subscription group, the deployment unit whose nodes share the partitions of a log (documentation/designs/04-subscriptions.md §1, 02-write-path.md §3). Leases live in storage: no ZooKeeper, consumer group or registry.

Link copied to clipboard
class Member @InternalWowApi constructor(val service: String, val node: String, val address: String, val expiresAt: Long, val groups: Set<String> = emptySet())

node is a live member of service until expiresAt (epoch milliseconds, exclusive), serving the lease groups: a node records its membership once per service, not once per lease group, and the groups it takes part in are a field of that one record. address is the node's internal address (host:port of its internal port, never the public one): where the cluster channel reaches it, so commands can be routed to the owners of partitions.

Link copied to clipboard
class SubscriptionId @InternalWowApi constructor(val context: String, val name: String) : Comparable<SubscriptionId>

A subscription by the bounded context it belongs to and its name (processor.function, or a built-in's wow.…): names are unique within a context only, so two contexts of one service may each have a subscription of one name, such as their wow.snapshot. It keys the failure ledger's entries (me.ahoo.wow.spi.ledger.FailureLedger), so the contexts of a service that share a store keep their entries apart; and it identifies a subscription to the operator (the parked entries' routes) and in the host's configuration, as its key <context>.<name> (wow.subscriptions.[shop.CartSaga.onOrderCreated]): a context's name has no dot, so the key splits at its first.