| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Serialization code can safely be removed, as no revert-related
messages have ever flown across the wire in the new serialization
format.
|
|
|
|
|
|
| |
This is a remnant from the VDS days and can only work when the
backend is a multi-version store. Code has been explicitly config
model-disabled for Proton since day one.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This introduces cancellation of pending operations/messages to
content nodes in the following scenarios:
* One or more content nodes become unavailable in a newly
received cluster state version (triggered when first received,
i.e. at the pending state start edge).
* One or more nodes are removed from the distribution config.
* The set of available distributors changes, which in turn
changes the ownership of a fraction of the set of super buckets.
Pending operations to buckets that were owned by the current
distributor in the previous state, but not in the new state,
are all cancelled.
Introduce cancellation support for internal maintenance operations.
As part of this, move `CancelScope` tracking out into the parent
`Operation` class to unify cancellation tracking across both
client and maintenance operations.
Remove interface vs. impl indirection for `PersistenceMessageTracker`
since it's only ever had a single implementation and it likely never
will have another.
|
|\
| |
| |
| |
| | |
vespa-engine/vekterli/add-predicated-bucket-msg-fn-to-message-tracker
Enumerate pending message IDs on a bucket predicate basis
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Lets a caller selectively enumerate all IDs of messages pending
towards buckets that match a caller-provided predicate function.
A separate message ID callback is invoked per distinct message.
Also remove hard-coded multi-index numeric indices in favor of
named constants.
|
| | |
|
| | |
|
|/ |
|
| |
|
| |
|
|
|
|
| |
- Use explicit index based vector iteration as we are exposing index.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
- noexcept
- less default values in methods
|
|\
| |
| | |
Unify and modernize code and layout
|
| | |
|
| | |
|
|/
|
|
|
|
|
|
|
|
|
|
| |
distribution config
For a node to be considered available, it needs to be present and
available in the current cluster state, as well as be part of a
valid group in the distribution config itself.
If either of these conditions are not satisfied, the node will be
considered unavailable. The distributor will remove all knowledge
of replicas on such nodes from its internal bucket DB.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
- Remove parameters not used.
- Make template parameter runtime parameter.
|
|
|
|
|
|
| |
A sequence of length n is defined as a function whose domain is
equal to 1..n (note: 1-indexing), so just use the domain directly
instead of manually constructing the range.
|
|\
| |
| | |
Minor spec simplifications
|
| |
| |
| |
| |
| |
| |
| |
| | |
- Nat (the set of natural numbers) is already present in Integers,
so no need to extend Naturals.
- Instead of computing cardinality of constant sets to verify that
that the provided set has at least one element, just compare against
the empty set.
|
| |
| |
| |
| | |
sections" MERGEOK"
|
| | |
|
|/
|
|
|
|
|
|
|
|
|
|
| |
Opportunistic notifications outside lock may not properly (from the
perspective of the memory model) synchronize visibility across threads.
Observed by TSan during node shutdown when destruction of a
`condition_variable` in a `Stripe` (from the main thread) was not
properly synchronized with a broadcast on the same cond var that
was previously done by an async result handling task (from a task
executor thread), even though destruction is sequenced after first
acquiring all the relevant locks.
|
|\
| |
| |
| |
| | |
vespa-engine/vekterli/distributor-operation-cancelling
Implement edge-triggered distributor operation cancelling
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
Also rename factory function to avoid explicit coupling to higher
level semantics.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Will be used for ensuring active operations do not mutate
the bucket database upon completion with stale entries for
buckets that may no longer be valid for that distributor to
handle. Removes the need for today's "always-on" implicit
checks for node state and bucket ownership upon every single
DB update (which is potentially ABA-susceptible). Moving to
edge-triggering is intentionally done to avoid ABA problems.
Cancellation cases are:
* Distributor ownership of bucket changed
* Subset of target nodes has become unavailable
Note: cancellation is not yet wired in; this code is cold.
|
|\ \
| | |
| | | |
Include sstream or ostream header file.
|