summaryrefslogtreecommitdiffstats
path: root/storage
Commit message (Collapse)AuthorAgeFilesLines
* Remove remaining deprecated "revert" functionality from code baseTor Brede Vekterli2023-09-0821-203/+6
| | | | | | Serialization code can safely be removed, as no revert-related messages have ever flown across the wire in the new serialization format.
* Remove deprecated "revert" functionality from distributor codeTor Brede Vekterli2023-09-089-136/+7
| | | | | | 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.
* Disambiguate outcome of replica pruning by using an explicit enumTor Brede Vekterli2023-09-082-7/+18
|
* Wire distributor operation cancelling to state change edgesTor Brede Vekterli2023-09-0748-327/+965
| | | | | | | | | | | | | | | | | | | | | | | | 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.
* Merge pull request #28414 from ↵Tor Brede Vekterli2023-09-063-62/+155
|\ | | | | | | | | vespa-engine/vekterli/add-predicated-bucket-msg-fn-to-message-tracker Enumerate pending message IDs on a bucket predicate basis
| * Enumerate pending message IDs on a bucket predicate basisTor Brede Vekterli2023-09-053-62/+155
| | | | | | | | | | | | | | | | | | 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.
* | Make modification evident by renaming entry to set_entryHenning Baldersheim2023-09-053-5/+5
| |
* | GC unused includeHenning Baldersheim2023-09-051-1/+0
| |
* | Constify the context and control acces to the Context._entry fieldHenning Baldersheim2023-09-057-141/+146
|/
* ReformatHenning Baldersheim2023-09-051-27/+53
|
* Test for empty stringHenning Baldersheim2023-09-051-10/+10
|
* - Rename method for readabilityHenning Baldersheim2023-09-054-7/+7
| | | | - Use explicit index based vector iteration as we are exposing index.
* Unify on uint16_t.Henning Baldersheim2023-09-051-2/+2
|
* Unify on uint16_t and repair intellij auto conversion.Henning Baldersheim2023-09-051-10/+5
|
* Use faster lookup interface.Henning Baldersheim2023-09-043-4/+19
|
* Use the stored index into the BucketInfoList for direct lookup.Henning Baldersheim2023-09-044-12/+12
|
* Find index and store it in ActiveCopy.Henning Baldersheim2023-09-044-5/+20
|
* Iterate once calling getNode()Henning Baldersheim2023-09-041-13/+14
|
* Move shouldSkipActivationDueToMaintenance to anonymous namespaceHenning Baldersheim2023-09-042-8/+11
|
* - push_back => emplace_backHenning Baldersheim2023-09-0410-180/+91
| | | | | - noexcept - less default values in methods
* Merge pull request #28376 from vespa-engine/balder/minor-cleanupHenning Baldersheim2023-09-041-4/+4
|\ | | | | Unify and modernize code and layout
| * Better namingHenning Baldersheim2023-09-041-2/+2
| |
| * Unify and modernize code and layoutHenning Baldersheim2023-09-041-4/+4
| |
* | When pruning unavailable replicas, use intersection of cluster state and ↵Tor Brede Vekterli2023-09-043-7/+47
|/ | | | | | | | | | | | 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 dead code from FileStorManager unit test.Tor Egge2023-08-311-27/+0
|
* Do not generate metrics at all for distributor, there are none.Henning Baldersheim2023-08-292-4/+5
|
* GC stor-bucket-init.defHenning Baldersheim2023-08-304-40/+0
|
* GC traces of messageforwarderHenning Baldersheim2023-08-303-7/+0
|
* GC stor-integritychecker configHenning Baldersheim2023-08-303-41/+0
|
* GC unused configHenning Baldersheim2023-08-303-40/+0
|
* Unify code layout and use autoHenning Baldersheim2023-08-291-139/+67
|
* Remove void statementHenning Baldersheim2023-08-291-1/+0
|
* Let node info for cluster controller be explicit, and not a metric consumer.Henning Baldersheim2023-08-2913-75/+150
|
* Modernize codeHenning Baldersheim2023-08-282-4/+4
|
* Remove incorrect _doneInitialized check.Henning Baldersheim2023-08-281-25/+20
|
* Add noexecptHenning Baldersheim2023-08-282-5/+5
|
* - Remove methods not used.Henning Baldersheim2023-08-282-72/+68
| | | | | - Remove parameters not used. - Make template parameter runtime parameter.
* Simplify spec SeqToSet definitionTor Brede Vekterli2023-08-241-3/+3
| | | | | | 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.
* Merge pull request #28111 from vespa-engine/vekterli/minor-spec-simplificationsTor Brede Vekterli2023-08-231-5/+5
|\ | | | | Minor spec simplifications
| * Minor spec simplificationsTor Brede Vekterli2023-08-221-5/+5
| | | | | | | | | | | | | | | | - 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.
* | Revert "Revert "Move condition variable notifications inside critical ↵Henning Baldersheim2023-08-221-6/+1
| | | | | | | | sections" MERGEOK"
* | Revert "Move condition variable notifications inside critical sections"Henning Baldersheim2023-08-221-1/+6
| |
* | Move condition variable notifications inside critical sectionsTor Brede Vekterli2023-08-221-6/+1
|/ | | | | | | | | | | | 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.
* Merge pull request #28086 from ↵Tor Brede Vekterli2023-08-2232-89/+854
|\ | | | | | | | | vespa-engine/vekterli/distributor-operation-cancelling Implement edge-triggered distributor operation cancelling
| * Improve naming and make branching more obviousTor Brede Vekterli2023-08-214-18/+21
| |
| * Simplify `CancelScope` handling by moving out of optionalTor Brede Vekterli2023-08-214-31/+14
| |
| * Make partial cancellelation state part of the APITor Brede Vekterli2023-08-219-13/+16
| | | | | | | | | | Also rename factory function to avoid explicit coupling to higher level semantics.
| * Early return of empty node vector when fully canceledTor Brede Vekterli2023-08-211-0/+3
| |
| * Implement edge-triggered distributor operation cancellingTor Brede Vekterli2023-08-1832-89/+862
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | Merge pull request #28098 from vespa-engine/toregge/include-stream-header-filesv8.215.17Tor Egge2023-08-215-0/+5
|\ \ | | | | | | Include sstream or ostream header file.