| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Document type is fetched from the associated `IPersistenceHandler`
on-demand; it is assumed the lifetime of the pointer must be valid
for the entire lifetime of the iterator itself, as the latter holds
a valid handler snapshot.
For simplicity, it's possible to _not_ pass in a handler, in which
case the doc type name will be implicitly empty.
Some expected `DocEntry` sizes have been adjusted, as we now
report the size of the document type and GID alongside the
base type size.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
- Consistently use DocEntryList as type for std::vector<spi::DocEntry::UP>
|
|
|
|
| |
and gid
|
| |
|
| |
|
|
|
|
|
|
| |
instead of an mutant.
Also add tests for the different variations a DocEntry can have.
|
|
|
|
|
|
|
| |
* For C++ code this introduces a "document::config" namespace, which will
sometimes conflict with the global "config" namespace.
* Move all forward-declarations of the types DocumenttypesConfig and
DocumenttypesConfigBuilder to a common header file.
|
|
|
|
|
|
|
|
|
|
|
| |
Only skip deactivating buckets if the entire _node_ is marked as
maintenance state, i.e. the node has maintenance state across all
bucket spaces provided in the bundle. Otherwise treat the state
transition as if the node goes down, deactivating all buckets.
Also ensure that the bucket deactivation logic above the SPI is
identical to that within Proton. This avoids bucket DBs getting
out of sync between the two.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, entering maintenance state would implicitly deactivate
all buckets on the searchnode and cause empty responses to be returned
for searches.
However, container query dispatch uses async health pings to decide
which nodes to route queries to, so it would be possible for a node to
still be used for queries for a few seconds until the ping discovered
that the node should not be used. In the case of multiple groups without
multiple ready replicas within the group, this would cause transient
coverage loss since the dispatcher would not realize it should route
queries to other groups instead.
With this commit, maintenance edge behavior is changed as follows:
- Buckets are _not_ deactivated when going from an available state
to the maintenance state. However, they _are_ deactivate when going
from maintenance state to an available state in order to avoid transient
query duplicates immediately after the change.
- Searches are executed as normal instead of returning empty replies
when the node is in maintenance state.
The following behavior is intentionally _not_ changed:
- The search interface is still marked as offline when in maintenance
state, as this signals that the node should be taken out of rotation.
In particular, it's critical that the RPC health ping response is
explicitly tagged as having zero active docs when the search interface
is offline, even though many buckets may now actually be active.
Otherwise, queries would not be gracefully drained from the node.
|
|
|
|
| |
[run-systemtest]"
|
|
|
|
|
|
|
|
|
|
|
| |
Only skip deactivating buckets if the entire _node_ is marked as
maintenance state, i.e. the node has maintenance state across all
bucket spaces provided in the bundle. Otherwise treat the state
transition as if the node goes down, deactivating all buckets.
Also ensure that the bucket deactivation logic above the SPI is
identical to that within Proton. This avoids bucket DBs getting
out of sync between the two.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, entering maintenance state would implicitly deactivate
all buckets on the searchnode and cause empty responses to be returned
for searches.
However, container query dispatch uses async health pings to decide
which nodes to route queries to, so it would be possible for a node to
still be used for queries for a few seconds until the ping discovered
that the node should not be used. In the case of multiple groups without
multiple ready replicas within the group, this would cause transient
coverage loss since the dispatcher would not realize it should route
queries to other groups instead.
With this commit, maintenance edge behavior is changed as follows:
- Buckets are _not_ deactivated when going from an available state
to the maintenance state. However, they _are_ deactivate when going
from maintenance state to an available state in order to avoid transient
query duplicates immediately after the change.
- Searches are executed as normal instead of returning empty replies
when the node is in maintenance state.
The following behavior is intentionally _not_ changed:
- The search interface is still marked as offline when in maintenance
state, as this signals that the node should be taken out of rotation.
In particular, it's critical that the RPC health ping response is
explicitly tagged as having zero active docs when the search interface
is offline, even though many buckets may now actually be active.
Otherwise, queries would not be gracefully drained from the node.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
using a true repo.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Make default (aka. placeholder) bucket space index 1, not 0.
Bucket space index 0 is now considered an invalid space.
|
|
|
|
| |
storage::spi::PersistenceProvider::setClusterState() method.
|
| |
|
|
|
|
| |
argument to more storage commands.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|