TailPacer
How often a tail polls: every interval while it finds entries, backing off when it finds none, each empty poll doubling the wait up to maxInterval. A commit this log made in the partition wakes its tails at once, so an idle partition's next entry is not held up by the backoff on the node that appends it; entries other nodes append are read within maxInterval.
A poll a commit of this log woke, which found entries and is not behind the partition's counter, keeps the backoff as it was instead of polling again after interval (B.D diagnostics): this log's next commit wakes the tail anyway, so on a partition only this node appends to ('s partitioned routing) a commit costs one read of the tail, not a run of short polls backing off again. Entries found without a wake, from another node, still bring the tail back to interval.
A backend whose EventLog polls its storage for the tails (EventLog.tail) paces them with one of these, of TailPolling's intervals (wow.log.poll-interval, wow.log.max-poll-interval), counting each commit of its own.
Constructors
Types
Functions
Waits after a poll of partition that found entries (found) or none, idle being the wait after the last empty one, woken whether a commit of this log woke the poll (and it is not behind the counter): the interval after entries found unwoken, else idle; cut short when this log commits in the partition after mark. Returns the wait after the next empty poll (the interval after entries found unwoken, idle after entries found woken, else idle doubled, up to the longest) and whether a commit cut this wait short.