aboutsummaryrefslogtreecommitdiffstats
path: root/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer6.java
Commit message (Collapse)AuthorAgeFilesLines
* Add new Protobuf-based MessageBus DocumentAPI protocolTor Brede Vekterli2024-02-161-0/+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 copyrightJon Bratseth2023-10-091-1/+1
|
* * refactor to get just one method for struct readingArne Juul2023-01-191-50/+17
| | | | * also, use two simple arrays instead of arraylist of tuples
* no real need to use a temporary bufferArne Juul2023-01-191-25/+6
|
* check complete span node typeArne Juul2023-01-181-6/+6
| | | | * this matches actual serialization format and C++ implementation
* Don't warn when 1 node is downJon Bratseth2022-12-291-3/+2
|
* Further GC document level compression. Avoids a buffer copy that is no ↵Henning Baldersheim2022-06-081-43/+8
| | | | longer relevant.
* cleanup some unneccessary cruftArne H Juul2022-06-081-1/+0
|
* avoid using getHeader() in serialization codeArne H Juul2022-02-161-10/+6
|
* GC deprecated junit assertThat.Henning Baldersheim2021-12-211-1/+0
|
* always try reading annotation payloadArne H Juul2021-12-081-6/+11
| | | | | | | | * even if the serialized datatype ID doesn't match our config, it's quite possible the payload is OK. * does it really make sense to "handle it gracefully" and just ignore the payload? This seems wrong to me, but keep old behavior for now.
* Update 2017 copyright notices.gjoranv2021-10-071-1/+1
|
* keep serialized tensor in TensorFieldValueArne Juul2021-02-011-6/+5
| | | | | * do lazy deserialization in getTensor() and getTensorType() * avoid re-serializing when forwarding a TensorFieldValue
* Extend tensor remove update to support not fully specified addresses and ↵Geir Storli2020-11-171-1/+1
| | | | | | | update JSON parser. Previously, all the sparse dimensions of the sparse or mixed tensor type (to remove from) had to be specified in the addresses to remove.
* - Removing body struct from our own usage.Henning Baldersheim2020-06-161-16/+4
| | | | | - Deprecate public methods using body struct. - Update expected generated config.
* Remove "Vespa 6" from error messagesgjoranv2019-09-231-3/+3
|
* Remove v6 and v7 from java side.Henning Baldersheim2019-08-211-91/+26
|
* Revert "Revert "doc: -> id:""Henning Baldersheim2019-08-211-3/+2
|
* Revert "doc: -> id:"Henning Baldersheim2019-08-211-2/+3
|
* doc: -> id:Henning Baldersheim2019-08-191-3/+2
| | | | | Unify documentid java/cpp GC old formats v6 and v7
* Add serialization for TensorRemoveUpdateLester Solbakken2019-02-151-0/+6
|
* Implement serialization and de-serialization for TensorAddUpdate.Geir Storli2019-02-071-1/+7
|
* Add TensorModifyUpdate to document module (Java).Tor Egge2019-01-301-0/+6
|
* Repair serialization of boolean fields.Tor Egge2019-01-211-2/+1
|
* Follow api changeHenning Baldersheim2019-01-211-0/+8
|
* remove split header/body buffers supportArne Juul2019-01-211-20/+3
|
* add class with complete deserializer for the 6.x formatArne Juul2019-01-211-0/+890