summaryrefslogtreecommitdiffstats
path: root/storage
Commit message (Collapse)AuthorAgeFilesLines
* Remove unused codeHenning Baldersheim2018-08-204-33/+0
|
* Deinline for gcc 8Henning Baldersheim2018-08-152-0/+3
|
* Remove whitespaceHenning Baldersheim2018-08-127-10/+10
|
* Pass stringref by valueHenning Baldersheim2018-08-113-3/+3
|
* Pass stringref by valueHenning Baldersheim2018-08-107-10/+10
|
* Deactivate all buckets in content layer bucket db when derived clusterTor Egge2018-08-074-12/+30
| | | | | state indicates that node changes from up to down state even if node remains up according to baseline cluster state.
* Remove stringref::c_str()Tor Brede Vekterli2018-07-2513-39/+40
| | | | | | | | | | | | | The expected semantics of c_str() (a null-terminated string) cannot be satisfied with a string reference, so remove the function entirely to prevent people from using it in buggy ways. Replaces c_str() with data() in places where it is presumed safe, otherwise constructs temporary string instances. Certain callsites have been de-stringref'd in favor of regular strings, in particular where C APIs have been transitively called. The vast majority of these were called with string parameters anyway, so should not cause much extra allocation.
* Test operation batch barrier with different lock modesTor Brede Vekterli2018-07-162-1/+20
|
* Add tests of shared/exclusive persistence queue lockingTor Brede Vekterli2018-07-165-74/+156
|
* Use shared locking for Get/CreateIterator/GetIter operationsTor Brede Vekterli2018-07-121-0/+6
|
* Add support for exclusive/shared persistence bucket lockingTor Brede Vekterli2018-07-125-56/+143
| | | | | | | | | | | | | 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.
* Hardcode visitor iterators per bucket to 1Tor Brede Vekterli2018-07-123-30/+19
| | | | | | | | | | 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.
* Merge pull request #6180 from vespa-engine/arnej/use-log-abortHenning Baldersheim2018-06-2112-17/+31
|\ | | | | use LOG_ABORT not just abort()
| * some more cleanupArne Juul2018-06-201-1/+0
| |
| * move LOG_SETUP after other includesArne Juul2018-06-204-7/+11
| |
| * add and use HDR_ABORT insteadArne Juul2018-06-204-9/+13
| |
| * Merge branch 'master' into arnej/use-log-abortArne Juul2018-06-2012-69/+74
| |\
| * | use LOG_ABORT not just abort()Arne Juul2018-06-1210-13/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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).
* | | Log config changes from Bouncer componentTor Brede Vekterli2018-06-205-13/+37
| |/ |/| | | | | | | Also change debug output to be Slime structure, since the encoded string does not seem to have had the intended semantics.
* | Merge pull request #6233 from ↵Geir Storli2018-06-191-26/+29
|\ \ | | | | | | | | | | | | vespa-engine/vekterli/debug-log-when-config-is-received-on-content-node Debug log when new config is received on content node
| * | Debug log when new config is received on content nodeTor Brede Vekterli2018-06-191-26/+29
| | |
* | | Use std::max, and do it on the correct place.Henning Baldersheim2018-06-151-1/+1
| | |
* | | Control threadpool and dispatch of encode/decode by config.Henning Baldersheim2018-06-152-4/+20
|/ /
* / 1 - Use a backing buffer for the DocumentUpdate that always is source of truth.Henning Baldersheim2018-06-129-39/+25
|/ | | | | | | | | | | 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.
* Last style changes before lazy documentupdate PR.Henning Baldersheim2018-06-123-37/+13
|
* Merge branch 'master' into balder/reduce-code-visibility-rebasedHenning Baldersheim2018-06-122-8/+0
|\
| * clean up remnants of .mak filesArne Juul2018-06-112-8/+0
| |
* | Reduce code visibilityHenning Baldersheim2018-06-128-179/+90
|/
* Don't assume visitor threads immediately destroy visitorsTor Brede Vekterli2018-06-011-11/+7
|
* Clean up some old codeTor Brede Vekterli2018-06-011-79/+44
|
* Clean up visitors that we've already initiatedTor Brede Vekterli2018-06-011-10/+37
|
* Simplify testsTor Brede Vekterli2018-06-011-45/+2
|
* Wait for all started visitors to finishTor Brede Vekterli2018-06-011-14/+30
| | | | Also correct wrong expected number of busy bounces in test
* Revert "Ensure visitormanager tests clean up after themselves"Henning Baldersheim2018-05-311-113/+148
|
* Merge pull request #6035 from ↵Henning Baldersheim2018-05-311-148/+113
|\ | | | | | | | | vespa-engine/vekterli/ensure-visitormanager-tests-clean-up-after-themselves Ensure visitormanager tests clean up after themselves
| * Clean up some old codeTor Brede Vekterli2018-05-311-79/+44
| |
| * Clean up visitors that we've already initiatedTor Brede Vekterli2018-05-311-10/+37
| |
| * Simplify testsTor Brede Vekterli2018-05-311-45/+2
| |
| * Wait for all started visitors to finishTor Brede Vekterli2018-05-311-14/+30
| | | | | | | | Also correct wrong expected number of busy bounces in test
* | Implicitly enable multiple bucket spaces in content backendTor Brede Vekterli2018-05-311-7/+3
|/ | | | | Config can still force new protocol version to be used even if version handshake indicates it should not be.
* Remap missing bucket space for DocumentAPI Gets to "Not Found"Tor Brede Vekterli2018-05-303-9/+51
| | | | | | 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.
* Use fallthrough attributes.Tor Egge2018-05-271-2/+2
|
* Disperse bucket bits using FNV-1 prime when choosing thread stripeTor Brede Vekterli2018-05-231-1/+7
| | | | | This avoids an inherent affinity between the LSB of a bucket's bits and the stripe an operation ends up on.
* Catch by referenceHenning Baldersheim2018-05-111-2/+2
|
* Remove redundant typedefHenning Baldersheim2018-05-111-7/+1
|
* Ensure commands are processed before shutting down persistence threadsTor Brede Vekterli2018-04-272-24/+28
| | | | | | | 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.
* Make test names less ambiguousTor Brede Vekterli2018-04-261-6/+6
|
* Don't be silly and deref an iterator after it has been erasedTor Brede Vekterli2018-04-261-1/+1
|
* Handle explicit node state response case without pending requestTor Brede Vekterli2018-04-263-19/+105
| | | | | | | | | | | | | 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.
* Make rpc target cache ttl configurable with a deafult lifted from 30s to 10 ↵Henning Baldersheim2018-04-182-2/+6
| | | | minutes.