aboutsummaryrefslogtreecommitdiffstats
path: root/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller
Commit message (Collapse)AuthorAgeFilesLines
* Include distribution config as part of cluster state bundleTor Brede Vekterli22 hours8-18/+126
| | | | | | | | | | | | Opaque config Slime representation is encoded as part of the existing bundle object. New cluster state version and broadcast is triggered if the distribution config changes. Including distribution config is controlled by a dedicated config parameter, which currently defaults to `false` (i.e. disabled).
* Add metric for number of nodes not converged to the latest cluster state versionTor Brede Vekterli2024-06-064-9/+85
| | | | | | | | | | | | | | | | | | There is a grace period (currently hard-coded to 30s) between the time a new state version is published and before nodes are counted as not converging. This state is not sticky for a given node, so if the state keeps changing constantly it's possible that we under- count the number of non-converging nodes. But this can be improved over time; for now it's primarily a source from which we can generate alerts, as failures to converge can manifest itself as other failures in the content cluster. Also move out of sync ratio computations to the periodic metric update functionality and reset it if the current controller is not the believed cluster leader. Start moving some CC timer code to use `Instant` instead `long`s with implicit units.
* Emit single metric for how out of sync the cluster data isTor Brede Vekterli2024-05-066-6/+150
| | | | | | | | | | | | | | With these changes the cluster controller continuously maintains a global aggregate across all content nodes that represents the number of pending and total buckets per bucket space. This aggregate can be sampled in O(1) time. An explicit metric `cluster-buckets-out-of-sync-ratio` has been added, and the value is also emitted as part of the cluster state REST API. Note: only emitted when statistics have been received from _all_ distributors for a particular cluster state, as it would otherwise potentially represent a state somewhere arbitrary between two or more distinct states.
* Replace all usages of Arrays.asList with List.of where possible.Henning Baldersheim2024-04-122-4/+5
|
* Unify on Set.ofHenning Baldersheim2024-04-111-4/+3
|
* Unify on Map.ofHenning Baldersheim2024-04-113-8/+7
|
* Explicitly report docs, tombstones and buckets in disallow-messageTor Brede Vekterli2024-01-291-2/+2
|
* Use stored entry count rather than bucket count for (dis-)allowing permanent ↵Tor Brede Vekterli2024-01-261-102/+131
| | | | | | | | | | | | | | | | | node down edge The stored entry count encompasses both visible documents and tombstones. Using this count rather than bucket count avoids any issues where a node only containing empty buckets (i.e. no actual data) is prohibited from being marked as permanently down. Entry count is cross-checked with the visible document count; if the former is zero, the latter should always be zero as well. Since entry/doc counts were only recently introduced as part of the HostInfo payload, we have to handle the case where these do not exist. If entry count is not present, the decision to allow or disallow the transition falls back to the bucket count check.
* Use fake ZooKeeper database implementation for subset of CC testsTor Brede Vekterli2023-12-044-8/+159
| | | | | | The fake impl acts "as if" a single-node ZK quorum is present, so it cannot be directly used with most multi-node tests that require multiple nodes to actually participate in leader elections.
* Move Jackson util from vespajlib to container-core.Henning Baldersheim2023-11-241-1/+1
|
* jackson 2.16 changes some of its default settings so we consolidate our use ↵Henning Baldersheim2023-11-233-11/+11
| | | | | | of the ObjectMapper. Unless special options are used, use a common instance, or create via factory metod.
* Update copyrightJon Bratseth2023-10-0981-80/+82
|
* Consolidate hamcrest usage to 2.x and remove cthul-matchersBjørn Christian Seime2023-08-299-18/+1
|
* Add content cluster name to generated feed block messageTor Brede Vekterli2023-07-262-28/+30
| | | | | | | | | | | Messages now prefixed with content cluster name to help disambiguate which cluster is exceeding its limits in multi-cluster deployments. Example message: ``` in content cluster 'my-cool-cluster': disk on node 1 [my-node-1.example.com] is 81.0% full (the configured limit is 80.0%). See https://docs.vespa.ai/en/operations/feed-block.html ```
* Make generated automatic feed block error messages more user-friendlyTor Brede Vekterli2023-07-263-34/+49
| | | | | | | | | | | | | | | | | | Messages are generated centrally by the cluster controller and pushed to content nodes as part of a cluster state bundle; the distributors nodes merely repeat back what they have been told. This changes the cluster controller feed block error message code to be less ambiguous and to include a URL to our public documentation about feed blocks. Example of _old_ message: ``` disk on node 1 [storage.1.local] (0.510 > 0.500) ``` Same feed block with _new_ message: ``` disk on node 1 [storage.1.local] is 51.0% full (the configured limit is 50.0%). See https://docs.vespa.ai/en/operations/feed-block.html ```
* Check min replication seen from all distributors that are UPHarald Musum2023-07-171-1/+1
| | | | | This means we will also check distributors that are on same node as a retired storage node
* Fix minor issues after code reviewsHarald Musum2023-07-171-2/+0
|
* Check redundancy also for groups that are upHarald Musum2023-07-161-18/+27
| | | | | | | When we allow several groups to go down for maintenance we should check nodes in the groups that are up if they have the required redundancy. They might be up but have not yet synced all buckets after coming up. We want to wait with allowing more nodes to be taken down until that is done.
* Renames and minor refactorings, no funcational changesHarald Musum2023-07-092-109/+109
|
* SimplifyHarald Musum2023-07-051-1/+1
|
* Minor refactoring and start of some new testHarald Musum2023-07-051-11/+32
|
* Move fetchStatusPageHarald Musum2023-06-191-0/+30
|
* ModernizeHarald Musum2023-06-071-3/+4
|
* Require non-null MetricUpdaterHarald Musum2023-06-052-16/+7
|
* Add back some testing of getMaster()Harald Musum2023-06-051-0/+60
|
* Remove support for RPC method getMaster, only used in testsHarald Musum2023-06-052-135/+1
|
* Simplify and remove some test methodsHarald Musum2023-06-015-25/+16
|
* ZooKeeper is always used, simplifyHarald Musum2023-06-013-35/+9
|
* Require non-null zooKeeperServerAddress in FleetControllerOptionsHarald Musum2023-06-014-125/+134
|
* Copy options when reconfiguringHarald Musum2023-06-011-20/+10
|
* Require distribution to be non-null and fix testsHarald Musum2023-05-261-0/+1
|
* Remove RPC method only used in testsHarald Musum2023-05-261-44/+1
|
* Simplify and minor cleanupHarald Musum2023-05-151-125/+133
|
* Avoid duplicating codeHarald Musum2023-05-133-23/+21
|
* Set waiter in createFleetControllerHarald Musum2023-05-131-4/+4
|
* Create slobrok in constructor and simplify setupHarald Musum2023-05-1211-50/+45
|
* Inject timer from test classes instead of inheritingHarald Musum2023-05-1213-124/+152
|
* Move methodHarald Musum2023-05-122-10/+11
|
* Fix exception messageHarald Musum2023-05-121-1/+1
|
* Remove testname and logging related to starting and stoppingHarald Musum2023-05-1210-59/+7
| | | | Not used, reintroduce using junit TestInfo class if needed
* Remove advanceTime callHarald Musum2023-05-121-1/+0
| | | | | | | The timer used in fleetcontroller in these tests (except one in a disabled test) are instances of RealTimer, whereas the one used in this call is a FakeTimer from the superclass, so this call makes no sense IMHO.
* Minor cleanupHarald Musum2023-05-0814-40/+20
| | | | GC dead code, optimize imports, fix unnecessary throws statements
* Implement toString for implementations of UnitStateHarald Musum2023-04-201-0/+3
|
* FIx retiredOrNotUpGroups()Harald Musum2023-04-181-1/+1
|
* Handle case where a node has another description for wanted stateHarald Musum2023-04-181-11/+24
| | | | Also add group indexes for disallow messages where relevant
* Check state down later and simplifyHarald Musum2023-04-171-5/+28
|
* Parameterize testsHarald Musum2023-04-141-109/+140
|
* Merge branch 'master' into hmusum/allow-groups-to-be-downHarald Musum2023-04-141-1/+1
|\
| * Restore isControlledShutdown and simplify tests a bitHarald Musum2023-04-131-9/+25
| |
| * Fix bug in distributuon config generationHarald Musum2023-04-131-1/+2
| |