Package-level declarations

Types

Link copied to clipboard
class DatasetQueryLimits(val maxConcurrent: Int = DEFAULT_MAX_CONCURRENT, val maxWait: Duration? = null, val maxQueued: Int? = null)

The dataset queries' bound (wow.query.dataset.*): maxConcurrent at once, 0 for none, waiting at most maxWait in a queue of at most maxQueued, each the global one when null.

Link copied to clipboard

The events queries of one store's logs (StoreQueries.events): the binding of each aggregate type's backend over its log and, for a backend that manages the indexes of the log's access attributes, how it prepares an aggregate's log and manageIndexes them at startup: each attribute the aggregate declares and the built-in owner and space (me.ahoo.wow.query.index.QueryIndexDeclaration.BUILT_IN_ACCESS), so a query under an access policy is served by an index rather than a scan of the log.

Link copied to clipboard
class QueryIndexReport(val created: List<String> = emptyList(), val missing: List<String> = emptyList(), val invalid: List<String> = emptyList())

What managing one aggregate's indexes did: the indexes it created, and those it found missing or invalid.

Link copied to clipboard
class QueryStoreLimits(val maxConcurrent: Int? = null, val maxWait: Duration? = null, val maxQueued: Int? = null, val floor: Int? = null, val ceiling: Int? = null)

One store's bounds (wow.stores.<name>.query.*), each null when the store sets none and the global one holds.

Link copied to clipboard
class QueryStores(val bulkheads: Map<String, QueryBulkhead> = emptyMap(), val limits: List<AdaptiveQueryLimit> = emptyList(), val datasets: QueryBulkhead? = null, unpinned: (AggregateType) -> UnpinnedEvents = { UnpinnedEvents.ALLOW })

How the queries of a node's stores run, composed once, in wow-query, so every host gets the same bounds: the bulkheads of the stores, by name, their adaptive limits, the bulkhead every dataset query runs under (datasets), and whether each aggregate type's events queries that name no aggregate run (unpinned). A state read's replay of a log runs under the bulkhead of the log's store too (replay).

Link copied to clipboard
class QueryStoreSettings(val maxConcurrent: Int? = null, val maxWait: Duration = QueryBulkhead.DEFAULT_MAX_WAIT, val maxQueued: Int? = null, val adaptive: AdaptiveLimitOptions = AdaptiveLimitOptions(), val adaptiveCeiling: Int? = null, val stores: Map<String, QueryStoreLimits> = emptyMap(), val datasets: DatasetQueryLimits = DatasetQueryLimits())

What QueryStores.of bounds the queries by: wow.query.max-concurrent (maxConcurrent, null to let each store's provider derive it), max-wait and max-queued, the adaptive bounds' options (adaptive, its floor wow.query.adaptive.floor, the others constants; adaptiveCeiling), each store's own (wow.stores.<name>.query.*, stores) and the dataset queries' (datasets).

Link copied to clipboard

The snapshot queries of one store: the binding of each aggregate type's backend and storage facts and, for a backend that manages the indexes an aggregate's x-wow-index declares, how it prepares the aggregate's storage and manageIndexes them at startup.

Link copied to clipboard

The query side of a Store: a facet of the store (Store.facet) whose backend serves queries, giving the snapshot queries over the snapshots it holds and the events queries over the logs it holds, each aggregate type's routed to the store its snapshots or log are on. A store without it, or whose facet gives null, is not queried: its snapshot and events routes are not served.

Link copied to clipboard

How many queries of a store run at once when its configuration names no limit (wow.stores.<name>.query. max-concurrent, wow.query.max-concurrent), and how high the adaptive limit may rise when it names no ceiling (wow.stores.<name>.query.adaptive.ceiling, wow.query.adaptive.ceiling), from the store's StorePool: the snapshot and events queries of every aggregate type on it share the bound, and one beyond it is wow.query.busy.

Link copied to clipboard
class StoreQueryOptions @InternalWowApi constructor(val indexDdl: Ddl = Ddl.AUTO)

The query settings a store's queries are opened with: indexDdl, how the indexes the Manifest declares are managed, the ddl of the store (wow.stores.<name>.ddl, else wow.ddl). A backend's own query settings, such as MongoDB's read preference, are options of its store (me.ahoo.wow.spi.store.StoreProvider.options).