summaryrefslogtreecommitdiffstats
path: root/documentapi/abi-spec.json
Commit message (Collapse)AuthorAgeFilesLines
* Optimize Java DocumentProtocol encoding memory usageTor Brede Vekterli2024-02-231-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | This commit allows protocol implementations to directly construct and return a payload byte array that contains both the message identifier and the serialized message itself _without_ having to go through a `DocumentSerializer` indirection. A new method has been added to the `RoutableFactory` whose default implementation defers to the legacy `DocumentSerializer`-accepting method. This means the v6 protocol has the same semantics and performance characteristics as before. The new Protobuf protocol implementation now allocates the result byte array once with the correct size and writes both the message ID header and the protobuf data into this. This has the following performance benefits for the new protocol: - Reduces the number of buffer _allocations_ from 3 to 1. - Avoids 2 buffer _copies_ since we now directly allocate and write into the resulting array. - Encoding allocates the exact number of required bytes instead of always allocating 8K at a minimum. This also avoids the need for growing (by realloc and copy) the buffer during encoding.
* Add new Protobuf-based MessageBus DocumentAPI protocolTor Brede Vekterli2024-02-161-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds an entirely new implementation of the internal MessageBus DocumentAPI protocol, which shall be functionally 1-to-1 compatible with the existing legacy protocol. New protobuf schemas have been added to the top-level documentapi module, which are separated into different domains of responsibility: * CRUD messages * Visiting messages * Data inspection messages As well as a schema for shared, common message types. Both C++ and Java protocol implementations separate serialization and deserialization into a codec abstraction per message type, which hides the boilerplate required for Protobuf buffer management. The Java version is a tad more verbose due to generics type-erasure. This protocol does _not_ currently support lazy (de-)serialization in Java, as the existing mechanisms for doing so are inherently tied to the legacy protocol version. Performance tests will decide if we need to introduce such functionality to the new protocol version. To avoid having the new protocol go live in production, this commit changes the semantics of how MessageBus version reporting works (at least for the near future); instead of reporting the current Vespa _release_ version, it reports the highest supported _protocol_ version. This lets us conditionally enable the new protocol by reporting a MessageBus version greater than or equal to the protocol version _iff_ the protocol should be active. The new protocol is disabled by default. Other changes: * Protocol tests have been moved up one package directory level to be aligned with the actual package of the classes they test. This allows for using package-protected constructors in the serialization tests. * `DocumentDeserializer` now exposes the underlying document type repo/manager. This is done to detangle `Document`/`DocumentUpdate` deserialization from the underlying wire buffer management. * `RemoveLocationMessage` at long last contains a bucket space, which was forgotten when we initially added this concept to the other messages, and where the pain of adding it in later was too big (not so anymore!). Unit tests for both C++ and Java have been hoisted from the legacy test suite, cleaned up and extended with additional cases. The C++ tests use the old unit test kit and should receive a good follow-up washing and GTest-rewrite. **Important**: due to how MessageBus protocol versioning works, the final protocol version is _not_ yet decided, as setting it requires syncing against our build systems. A follow-up commit will assign the final version as well as include all required binary test files.
* Update abi-specs after making config class Builders finalgjoranv2023-07-171-5/+10
|
* Use timestamp from Jetty as creation time for Request/HttpRequestBjørn Christian Seime2023-04-271-1/+1
|
* Restore EOL at EOF.Tor Egge2023-04-211-1/+1
|
* Remove (SearchResult|DocumentSummary)(Command|Reply) storage and documentapi ↵Tor Egge2023-04-211-89/+3
| | | | messages.
* add create-if-non-existent flag for document putHåvard Pettersen2023-04-191-2/+4
|
* Update ABI specJon Bratseth2023-01-171-1/+2
|
* Update ABI specJon Bratseth2023-01-161-1/+1
|
* Update ABI spec format, and update all specsjonmv2022-10-251-1134/+1134
|
* Remove on Vespa 8Jon Bratseth2022-06-081-4/+0
|
* Remove maxFirstPass support on Vespa 8Jon Bratseth2022-06-081-2/+0
|
* Remove on Vespa 8Jon Bratseth2022-06-081-1/+0
|
* Remove config version on Vespa 8Jon Bratseth2022-06-081-4/+0
|
* Remove on Vespa 8Jon Bratseth2022-06-081-1/+0
|
* Remove on Vespa 8Jon Bratseth2022-06-081-2/+0
|
* Remove deprecated documentapi Response constructorsjonmv2022-06-081-9/+1
|
* Use DocumentOnly-fieldset by defaultTor Brede Vekterli2022-06-081-2/+0
| | | | Also remove deprecated and unsupported header-only visitor parameter
* Remove explicit operation priority from DocumentAPI session public APIsTor Brede Vekterli2022-06-081-20/+0
|
* Remove top-level <clients> element and LoadType conceptTor Brede Vekterli2022-06-081-13/+4
| | | | | | | Load types have not been properly supported for some time, so remove the remaining API surfaces exposing them. Since load type config was the last remaining use of <clients> in services.xml, remove that one as well.
* Remove deprecated APIs exposing Guava typesBjørn Christian Seime2022-06-081-1/+1
|
* Remove DocumentAccess.createDefaultjonmv2022-06-081-2/+1
|
* Use com.yahoo.messagebus.Error instead of java.lang.ErrorHenning Baldersheim2022-04-191-1/+5
|
* ThrottlePolicyOverride -> ThrottlePolicyHenning Baldersheim2022-04-111-3/+3
|
* Deprecate load types from Java APIsTor Brede Vekterli2022-04-051-1/+3
| | | | | | | | | | | Load types have not been used in practice for years, and supporting them in backend metrics etc. has long since been lacking. Prepare for removing these on Vespa 8. Most callsites are unchanged, aside from presumed safe changes such as constructors used by dependency injection. Have added new overloads without load types where these did not already exist to allow for an orderly transition.
* Update ABI specTor Brede Vekterli2021-12-201-1/+31
|
* update ABI for generated buildersArne H Juul2021-12-091-0/+1
|
* update ABI for generated buildersArne H Juul2021-12-091-0/+2
|
* Allow slicing the bucket space for visitorsJon Marius Venstad2021-10-221-1/+5
|
* Update ABI specJon Marius Venstad2021-05-191-0/+3
|
* Move config to other moduleJon Marius Venstad2021-01-281-0/+132
|
* Revert "Update abi spec more"Jon Marius Venstad2021-01-281-132/+0
| | | | This reverts commit c16712cc670a7a87fb078205030533b6a9b27ef1.
* Revert "Revert "Jonmv/reapply document protocol super config [run-systemtest]""Jon Marius Venstad2021-01-281-16/+138
| | | | This reverts commit 2e2e2edeb3ea99f2c04925070cf44601e2cd94fb.
* Revert "Jonmv/reapply document protocol super config [run-systemtest]"Jon Marius Venstad2021-01-281-138/+16
|
* Update abi spec moreJon Marius Venstad2021-01-271-0/+132
|
* Move new config to already used packageJon Marius Venstad2021-01-271-3/+3
|
* Revert "Revert "Jonmv/document protocol super config""Jon Marius Venstad2021-01-271-16/+6
| | | | This reverts commit d7359f7c72ff06889af594431baf4075e2b4da78.
* Revert "Jonmv/document protocol super config"Harald Musum2021-01-271-6/+16
|
* Update abi specJon Marius Venstad2021-01-191-16/+6
|
* Revert "Revert "Jonmv/remove storage policy""Jon Marius Venstad2021-01-051-105/+69
| | | | This reverts commit 75b2e4c11ea6463c335f1c77dab3fdb5493e5600.
* Revert "Jonmv/remove storage policy"Jon Marius Venstad2021-01-051-69/+105
|
* Revert "Revert "Merge StoragePolicy down into ContentPolicy, and always use ↵Arnstein Ressem2020-12-301-105/+69
| | | | this""
* Revert "Merge StoragePolicy down into ContentPolicy, and always use this"Arnstein Ressem2020-12-221-69/+105
|
* Merge StoragePolicy down into ContentPolicy, and always use thisJon Marius Venstad2020-12-221-105/+69
|
* Revert "Merge pull request #15581 from ↵Jon Bratseth2020-12-021-0/+2
| | | | | | | vespa-engine/revert-15578-bratseth/apply-on-restart-take-10" This reverts commit 4cf13bc7db215e77f7688e429f700880c115fe76, reversing changes made to e21f385bd4f21326608f3a69325df4e96d4a65e5.
* Revert "Bratseth/apply on restart take 10"Jon Bratseth2020-12-021-2/+0
|
* Revert "Merge pull request #15577 from ↵Jon Bratseth2020-12-011-0/+2
| | | | | | | vespa-engine/revert-15575-bratseth/apply-on-restart-take-9" This reverts commit b9f054f862e6fc7bdbf41b9404605e2a8ad6b249, reversing changes made to 535b586bae36880259a792e2292f02b8495950fe.
* Revert "Bratseth/apply on restart take 9"Håkon Hallingstad2020-12-011-2/+0
|
* Revert "Merge pull request #15552 from ↵Jon Bratseth2020-12-011-0/+2
| | | | | | | vespa-engine/revert-15550-bratseth/apply-on-restart-take-8" This reverts commit 916492da87189ff9a07e39b22c64f2e1e31ff53a, reversing changes made to 3e5cf1de4c336c2e8d4f3a380dc242f402cb6dea.
* Revert "Bratseth/apply on restart take 8"Jon Bratseth2020-11-301-2/+0
|