aboutsummaryrefslogtreecommitdiffstats
path: root/storage/src/tests/storageapi/mbusprot
Commit message (Collapse)AuthorAgeFilesLines
* Update copyrightJon Bratseth2023-10-092-2/+2
|
* Remove remaining deprecated "revert" functionality from code baseTor Brede Vekterli2023-09-081-14/+0
| | | | | | Serialization code can safely be removed, as no revert-related messages have ever flown across the wire in the new serialization format.
* wire create flagHåvard Pettersen2023-05-031-1/+11
|
* Ensure process-internal message ID uniquenessTor Brede Vekterli2023-04-281-27/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a storage API command is created internally on a node it is always assigned a strictly increasing message ID that is guaranteed to be unique within the process. Some parts of the code use this as a way to distinguish messages from another. However, uniqueness (prior to this commit) did not necessarily hold, as the underlying wire protocol would inherit message IDs _from other nodes_ and override the generated ID with this. I.e. uniqueness no longer holds. This had exciting consequences when the stars aligned and a remote node sent the same ID as one generated at the same time internally on the receiver node. Luckily, in practice this would only be used in a potentially ambiguous context when sanity checking shared read lock sets for the _same bucket_ in the persistence threads. Invariant checks would detect this is as an attempted duplicate lock acquisition and abort the process. This has been latent for many, many years, but we've seen it happen exactly once. This commit introduces an explicit domain separation between the node-internal (locally unique) IDs and the ID used by the originator. The originator ID is maintained and returned over the wire to the caller when sending a response to the incoming request. Curiously, we don't actually need this originator ID at all since the caller maintains explicit state containing the sender command. Unfortunately we can't simply remove it, since versions prior to this commit will still use whatever's on the wire.
* wire document condition probing through protobuf protocolHåvard Pettersen2023-04-191-0/+17
|
* Add backend support for distributed condition evaluationTor Brede Vekterli2023-04-181-1/+1
| | | | | | | | | | | | Lets the "test" part of a test-and-set condition be evaluated locally on individual content nodes. Piggybacks on top of metadata-only Get operations, adding a new condition field to the request and a boolean match result to the response. Decouples the existing TaS utility code from being command-oriented, allowing it to be used in other contexts as well. Not yet wired through any protocols.
* We can only handle unconditional async messages in network thread.Henning Baldersheim2023-01-121-0/+2
|
* Change from typedef to using in storage C++ code.Geir Storli2022-12-211-1/+1
|
* Drop support for old gtest.Tor Egge2022-11-181-1/+1
|
* Add internal content node feature for not implicitly indexing active bucketsTor Brede Vekterli2022-09-151-0/+1
|
* Add support for two-phase document garbage collectionTor Brede Vekterli2022-08-172-72/+44
| | | | | | | | | | | | | | If enabled, garbage collection is performed in two phases (metadata gathering and deletion) instead of just a single phase. Two-phase GC allows for ensuring the same set of documents is deleted across all nodes and explicitly takes write locks on the distributor to prevent concurrent feed ops to GC'd documents from potentially creating inconsistencies. Two-phase GC is only used _iff_ all replica content nodes support the feature _and_ it's enabled in config. An additional field has been added to the feature negotiation functionality to communicate support from content nodes to distributors.
* GC all legacy storage protocol serialization versionsTor Brede Vekterli2022-07-011-46/+4
| | | | | | Legacy version negotiation only happens over MessageBus transport, which is now removed. Current StorageAPI RPC transport always uses the newest version directly since it's built around Protobuf.
* Fold storageapi into storage.Henning Baldersheim2022-05-194-0/+940