QueryProperties

@ConfigurationProperties(prefix = "wow.query")
class QueryProperties

The query plane's configuration, wow.query.*, read by QueryAutoConfiguration: the query routes and gateways, the budgets they run under, who may query what, and how many queries each store runs at once.

Constructors

Link copied to clipboard
constructor()

Types

Link copied to clipboard

How a store's query bound adapts to its write pressure, when neither wow.query.max-concurrent nor wow.stores.<name>.query.max-concurrent fixes it: pressing periods in a row halve it, down to floor; a calm period in which a query waited or was refused raises it by one, up to ceiling. wow.stores.<name>.query.adaptive.* overrides floor and ceiling for one store.

Link copied to clipboard

A query entry's budget (QueryBudget) and the limit of a list that names none, from its defaults. A limit of 0 is off.

Link copied to clipboard

The budget of each query entry.

Link copied to clipboard
Link copied to clipboard

The cache of the snapshot counts, valid while the type's snapshot write checkpoint holds and for at most ttl.

Link copied to clipboard

The datasets, and the bound of their queries.

Link copied to clipboard

The events model's queries.

Link copied to clipboard

The budget of the query routes, wow.query.budgets.http.*.

Link copied to clipboard

The budget of the in-process me.ahoo.wow.api.read.QueryApi, wow.query.budgets.in-process.*.

Link copied to clipboard

Queries of the snapshots and logs kept in memory.

Link copied to clipboard

What the queries may do with sensitive fields.

Link copied to clipboard

The reads of an aggregate's state at a version or a point in time.

Link copied to clipboard

How a list streamed as server-sent events reads its chunks and how long it runs. Neither budgets.http.max-list-size nor budgets.http.default-list-size bounds such a stream. A list whose sort cannot order a cursor streams without positions, under those bounds, and cannot be resumed.

Properties

Link copied to clipboard

How the bound of a store adapts to its write pressure, when neither wow.query.max-concurrent nor wow.stores.<name>.query.max-concurrent fixes it.

Link copied to clipboard

Whether a caller that may act across scopes may query across tenants on the query routes (Wow-Scope: tenant=* or tenant=("t1" "t2")); 403 wow.auth.forbidden while not. A type whose tenant is fixed is still read in that tenant alone, and each such query is logged at INFO (me.ahoo.wow.query.CrossTenantAudit). The commands and the state reads never cross tenants.

Link copied to clipboard

The budget (QueryBudget) each query entry runs under: the query routes' and the in-process queries'.

Link copied to clipboard

The cache of the snapshot counts.

Link copied to clipboard

The datasets, and the bound of their queries.

Link copied to clipboard

Whether the query routes and gateways are wired at all.

Link copied to clipboard

The events model, served from each aggregate's log store, or the store its wow.aggregates.[<context>.<aggregate>].query.events.store names.

Link copied to clipboard

How many snapshot and events queries each store runs at once, whichever entry asks; beyond it a query waits, then is wow.query.busy (429, with Retry-After). Not set, each store derives one from the pool it reports: a quarter of a pool its queries share with the appends, at least 2 (MongoDB's, and PostgreSQL's or Elasticsearch's own pool), or the whole of a pool of their own (PostgreSQL's query-data-source, Elasticsearch's query-client); 16 for a store that reports none. That bound then adapts to the store's write pressure (adaptive). 0 for no bound; wow.stores.<name>.query.max-concurrent overrides it for one store.

Link copied to clipboard

How many queries may wait for a permit before the next one is refused at once; 4 per permit when not set. wow.stores.<name>.query.max-queued overrides it for one store.

Link copied to clipboard

How long a query beyond max-concurrent waits in a FIFO queue for a permit before it is refused; wow.stores.<name>.query.max-wait overrides it for one store.

Link copied to clipboard

Queries of the snapshots and logs kept in memory.

Link copied to clipboard

Whether an HTTP query of a built-in model is refused unless the caller's authenticated scope pins its tenant; off, a declared scope, such as a tenant header, is trusted.

Link copied to clipboard

Whether a query must say whether it comes over HTTP or in process; off, a query that does not say is taken as in-process.

Link copied to clipboard

What the queries may do with sensitive fields.

Link copied to clipboard

The reads of an aggregate's state at a version or a point in time.

Link copied to clipboard

How a list streamed as server-sent events reads its chunks and how long it runs.

Link copied to clipboard

The timeout of a trusted in-process query that dropped its budget (NodeQueryApi.trusted().unbounded()); 0 for none.

Functions

Link copied to clipboard

The entry policy these settings give every gateway.