Package-level declarations

Types

Link copied to clipboard
class QueryCountCache(checkpoint: SnapshotWriteCheckpoint, val options: QueryCountCacheOptions = QueryCountCacheOptions(), ticker: () -> Long = System::nanoTime)

The count cache of snapshot queries: the counts of QueryGateway.count queries, and the totals of QueryGateway.paged ones when QueryCountCacheOptions.pagedTotals says so, shared by the gateways of a node. A cached count may lag the rows by up to QueryCountCacheOptions.ttl after another node's write.

Link copied to clipboard
class QueryCountCacheOptions @InternalWowApi constructor(val maxEntries: Int = DEFAULT_MAX_ENTRIES, val ttl: Duration = DEFAULT_TTL, val pagedTotals: Boolean = false)

The bounds of a QueryCountCache: at most maxEntries counts, the least recently used evicted first, each served for at most ttl after it was counted, however long its checkpoint holds. The ttl bounds what the checkpoint cannot see: a snapshot written but not yet checkpointed (on another node, up to the checkpoint interval), or written outside the snapshot subscription. pagedTotals lets it serve the totals of paged queries too, off by default: a total served from this node's cache while another node's write is already in the page's rows would not agree with them, so by default a total is counted with its page.

Link copied to clipboard

The snapshot write checkpoint of an aggregate type: a value that does not change while no snapshot of the type is written, so a count taken at one value is still the count while the value holds. The host gives the snapshot subscription's progress over the type's partitions; it may move without a write of the type (a write of another type in the same partitions), which only costs a recount.