summaryrefslogtreecommitdiffstats
path: root/storage/src/tests/distributor/idealstatemanagertest.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Never block statecheckersHenning Baldersheim2024-02-021-27/+0
|
* Update copyrightJon Bratseth2023-10-091-1/+1
|
* Only block bucket remove operation if overlapping with pending message ↵Tor Brede Vekterli2021-10-151-2/+2
| | | | | | | | | | target node Previously we'd block if there were pending messages to _any_ replica node for the bucket, which is a massive pessimization. This behavior also made it likely that a merge operation with one or more source-only replicas would end up being tagged as failed due to concurrent client load to the other replicas.
* Update 2017 copyright notices.gjoranv2021-10-071-1/+1
|
* Rename BucketDBUpdater to TopLevelBucketDBUpdater.Geir Storli2021-09-061-1/+1
|
* Rename Distributor to TopLevelDistributor.Geir Storli2021-09-061-1/+1
|
* Rewrite ideal state manager tests to not use legacy test util.Geir Storli2021-08-271-26/+22
|
* Block ideal state ops when a pending cluster state is presentTor Brede Vekterli2021-06-091-41/+35
| | | | | | | | | | | | Since distributor stripes no longer have access to the top-level pending message tracking info, it's no longer possible to infer if a pending cluster state is happening by looking at the sent messages. Instead, do this more generally (and efficiently) by looking at the potential pending cluster state directly. Rewire the `isBlocked` logic to take in an operation context instead of just a `PendingMessageTracker`, giving it access to a lot more relevant information.
* Make more Distributor internals only available to friended testsTor Brede Vekterli2021-05-031-12/+7
| | | | Also add more assertions that such functions are only called in legacy mode.
* Revert "Make more Distributor internals only available to friended tests"Harald Musum2021-05-031-7/+12
|
* Make more Distributor internals only available to friended testsTor Brede Vekterli2021-04-301-12/+7
| | | | Also add more assertions that such functions are only called in legacy mode.
* Stop exposing DistributorStripeComponent from IdealStateManager.Geir Storli2021-03-231-8/+8
|
* First steps of splitting distributor logic up into disjoint stripesTor Brede Vekterli2021-03-191-0/+1
| | | | For now only a single stripe may be used.
* Prefer activating ready replicas with more documentsTor Brede Vekterli2021-02-221-4/+5
| | | | | | | | | | | | | | | | | This goes contrary to the old behavior where we activated the replica the distributor thinks is "probably" most up to date, but where the information needed to make such a decision disappears upon bucket ownership transfer. In turn, this can cause highly sub-optimal replica activation if the distributors makes the wrong decision. Remove using the "trusted" concept entirely from the bucket activation heuristic in favor of a much more deterministic one based on replica readiness, document count and ideal state order. Also fixes an incidentally discovered old bug where an edge case in the cluster state's handling of node counts had the potential of not clearing pending maintenance operations if the newly unavailable node had a distribution key equal to `node count - 1`.
* add ClusterContext APIArne Juul2020-12-161-12/+10
| | | | | | * instead of asking various components for clustername (as reference to string) and then taking the pointer to it, add an API for getting the pointer which has the correct contract documented.
* Merge pull request #15795 from ↵Tor Brede Vekterli2020-12-141-1/+1
|\ | | | | | | | | vespa-engine/vekterli/use-random-bucket-lock-passthrough-token-for-reindexing-visitors Only let reindexing puts through locked bucket if their TaS token matches that of the lock
| * Only let reindexing puts through locked bucket if their token matches that ↵Tor Brede Vekterli2020-12-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | of the lock Avoids race condition edge case where reindexing puts from an outdated visitor may pass through a bucket lock intended for a newly created visitor operation Tokens are 128-bit values derived from a CSPRNG, so uniqueness is for all intents and purposes guaranteed.
* | - Wire the clustername through as a reference to avoid referencing temporaries.Henning Baldersheim2020-12-111-5/+5
|/
* Block ideal state operations towards buckets that are lockedTor Brede Vekterli2020-12-071-9/+35
| | | | | | | Prevents ideal state ops from modifying buckets that are being used in a read-for-write context. Move `OperationSequencer` to main `Distributor` to more easily facilitate sharing of it across components.
* As we have have now removed the expensive Route member we can further ↵Henning Baldersheim2020-11-261-4/+7
| | | | | | | | | | compact the message objects. - Compact StorageMessageAddress to 16 bytes by - using reference to cluster name. - Use small enums for protocol and node type. - Avoid having StorageMessage as separate allocation. - Avoid default values
* Convert remaining CppUnit tests to GTestTor Brede Vekterli2019-06-251-105/+69
| | | | | | Move base message sender stub out to common test module to avoid artificial dependency from persistence tests to the distributor tests.
* Enable cluster state bundle in distributor.Tor Egge2018-02-261-1/+1
|
* Adjust distributor unit tests to handle global distributor bucket space.Tor Egge2018-02-141-5/+26
|
* Add bucket spaces to bucket DB status pagesTor Brede Vekterli2018-01-121-1/+3
|
* Add configurable bucket resolver and fixed space repoTor Brede Vekterli2017-12-151-6/+6
| | | | | Make default (aka. placeholder) bucket space index 1, not 0. Bucket space index 0 is now considered an invalid space.
* Use document::Bucket instead of document::BucketId in apiTor Egge2017-10-261-2/+2
| | | | | | checking for pending messages in PendingMessageTracker. Bucket space portion is still ignored by implementation.
* Use document::Bucket in ideal state operation.Tor Egge2017-10-261-10/+10
|
* Revert "Revert "Use existing bucket space instead of placeholder value""Håkon Hallingstad2017-10-231-2/+4
|
* Revert "Use existing bucket space instead of placeholder value"Håkon Hallingstad2017-10-231-4/+2
|
* Add bucket space to create visitor command.Tor Egge2017-10-231-1/+1
|
* Add bucket space to request bucket info command.Tor Egge2017-10-231-1/+3
|
* Move test function makeDocumentBucket to document module.Tor Egge2017-10-201-2/+2
|
* Take document::Bucket instead of document::BucketId as constructorTor Egge2017-10-171-1/+3
| | | | argument to storage commands that inherit from BucketCommand.
* Add ready state to bucket meta info printingTor Brede Vekterli2017-06-191-4/+4
|
* Update copyright headersJon Bratseth2017-06-141-1/+1
|
* Revert "Update copyright headers"Jon Bratseth2017-06-141-1/+1
|
* Update copyright headersJon Bratseth2017-06-141-1/+1
|
* Revert "Copyright header"Jon Bratseth2017-06-131-1/+1
|
* Copyright headerJon Bratseth2017-06-131-1/+1
|
* - Optimize includes.Henning Baldersheim2017-04-251-1/+0
| | | | | - Move htmltable code to implementation file and add add override. - No virtual on override.
* Revert "Balder/enforce override 2"Arne H Juul2017-04-241-0/+1
|
* Including storage now builds fine with override enforcement.Henning Baldersheim2017-04-231-1/+0
|
* add override in storage testsArne H Juul2017-04-111-2/+2
|
* Further decouple some hpp files, config and the attributevector.Henning Baldersheim2016-12-201-10/+3
|
* PublishJon Bratseth2016-06-151-0/+268