| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If a cluster state bundle contains distribution config, this is
internally propagated via the `StateManager` component to all registered
state listeners. One such state listener is `FileStorManager`, which
updates the content node-internal bucket space repository.
All `SetSystemStateCommand` and internal config-aware components
(`StateManager` and `ChangedBucketOwnershipHandler`) now explicitly
track whether the cluster controller provides distribution config,
or if the internally provided config should be used (including
fallback to internal config if necessary).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adds a (live) config that specifies if content nodes and distributors
shall reject cluster state versions that are lower than the one that
is currently active on the node. This prevents "last write wins"
ordering problems when multiple cluster controllers have partially
overlapping leadership periods.
In the name of pragmatism, we try to auto-detect the case where
ZooKeeper state must have been lost on the cluster controller cluster,
and accept the state even with lower version number. Otherwise,
the content cluster would be effectively stalled until all its
processes had been manually restarted.
Adds wiring of live config to the `StateManager` component on both
content and distributor nodes.
|
|
|
|
|
|
| |
Introduce a distinct `StorageConfigSet` which wraps the actual
underlying config objects and exposes them through a unified
`ConfigUri`.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
It is not well defined what to do if an implementation of the propagation
callback throws, so make it noexcept to core the process if it does happen.
|
|
|
|
|
|
|
| |
Neither distributors nor content nodes ever report their state as
Initializing as part of their startup sequence; they go straight
from Down to Up. Remove complicated init progress delta reporting
that is no longer needed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
bundles
If an application uses deferred cluster state activations, do not report
back a given cluster state version as being in use by the node until the
state version has been explicitly activated by the cluster controller.
This change is due to the fact that the replication invalidation happens
upon recovery mode entry, and for deferred state bundles this takes place
when a cluster state is _activated_, not when the distributor is otherwise
done gathering bucket info (for a non-deferred bundle the activation happens
implicitly at this point). If the state manager reports that the new cluster
state is in effect even though it has not been activated, the cluster
controller could still end up using stale replication stats, as the invalidation
logic has not yet run at this point in time.
The cluster controller will ignore any host info responses for older
versions, so any stale replication statistics should not be taken into
account with this change.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Conflicts:
messagebus/src/vespa/messagebus/testlib/testserver.cpp
|
| |
|
|
|
|
|
|
|
|
| |
Bonus: no more spurious "we have removed buckets" log messages caused
by ownership changes.
Also ensure that we BUSY-bounce operations in `ExternalOperationHandler`
when there is no actual state to send back in a `WrongDistributionReply`.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Deals with the edge case where a node explicitly triggers a node state
response to be sent (generally due to updated host info to the controller(s))
but where there is no pending request to immediately reply to. We now maintain
state per controller which lets us infer whether it needs to immediately
observe a reply when the next request is received for it. This avoids having to
wait for an entire RPC timeout cycle before a response is sent to the controller.
This feature is predominantly to avoid keeping nodes in the default bucket space
in implicit maintenance mode for longer than is necessary when merges in the
global space are completed.
|
| |
|
| |
|
|
|
|
| |
storage module.
|
|
|
|
| |
(later) a derived cluster state for each bucket space.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
- Move htmltable code to implementation file and add add override.
- No virtual on override.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|