| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Operations that are tagged as only requiring shared locking may run
concurrently with other shared lock operations. Operations requiring
exclusive locking (all mutations) can't run concurrently with any
other operations, shared or not.
Let operations be able to explicitly specify their locking requirements.
Default is exclusive locking, which shall give the same behavior as before.
Since this locking happens at a stripe granularity, it's vital that operations
are routed deterministically to the correct stripe based on their bucket.
|
|
|
|
|
|
|
|
|
|
| |
We have an SPI iterate() invariant that states the provider shall never
observe concurrent calls for the same iterator ID. If GetIter operations
can operate in shared locking mode, this invariant will no longer hold
if multiple GetIters for a single iterator ID can be pipelined in the
queue. We therefore ignore the config entirely.
This is not expected to cause any performance regressions in practice.
|
|\
| |
| | |
use LOG_ABORT not just abort()
|
| | |
|
| | |
|
| | |
|
| |\ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* abort() has the unfortunate effect that nothing is seen in the log,
just an event (which is usually not displayed); so ops people don't
see that the program is crashing at all.
* LOG_ABORT("message") will log an error with the message (and the file
and line) before calling abort(), so it's easy to see what happened.
* add or move <vespa/log/log.h> include and LOG_SETUP lines before
LOG_ABORT is used (or included).
|
| |/
|/|
| |
| |
| | |
Also change debug output to be Slime structure, since the encoded
string does not seem to have had the intended semantics.
|
|\ \
| | |
| | |
| | |
| | | |
vespa-engine/vekterli/debug-log-when-config-is-received-on-content-node
Debug log when new config is received on content node
|
| | | |
|
| | | |
|
|/ / |
|
|/
|
|
|
|
|
|
|
|
|
| |
2 - Use this buffer for re-serialization.
3 - Make deserialization lazy where possible.
Currently lazy on replay and when arriving over the storageapi.
Still needs to eager over documentapi.
4 - Deserialize eagerly in the persistence thread since those are plentyfull and not bottlenecked,
instead of in the single master thread.
Use real repo.
|
| |
|
|\ |
|
| | |
|
|/ |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Also correct wrong expected number of busy bounces in test
|
| |
|
|\
| |
| |
| |
| | |
vespa-engine/vekterli/ensure-visitormanager-tests-clean-up-after-themselves
Ensure visitormanager tests clean up after themselves
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
Also correct wrong expected number of busy bounces in test
|
|/
|
|
|
| |
Config can still force new protocol version to be used even if
version handshake indicates it should not be.
|
|
|
|
|
|
| |
Lets legacy routing of Gets to all clusters successfully merge responses
even if a recipient cluster does not have a valid mapping for the requested
bucket space.
|
| |
|
|
|
|
|
| |
This avoids an inherent affinity between the LSB of a bucket's bits
and the stripe an operation ends up on.
|
| |
|
| |
|
|
|
|
|
|
|
| |
Prevents race condition where test cleanup closes persistence threads while
there are still enqueued operations. Normally the content layer shall ensure
that all enqueued operations are aborted before reaching this step, but this
does not take place in the simplified testing setup.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
minutes.
|
| |
|
| |
|
|
|
|
|
|
|
| |
Overriding unary & is potentially dangerous and the code does not
give any justification for why it is done. Nor should it be necessary,
since passing an rvalue as a const ref into the LoadMetric to be used
as a template should suffice plenty.
|
| |
|
|
|
|
| |
Request size is approximated by the network payload size for the commands.
|
| |
|
| |
|