Proto commits in couchbase/couchbase-jvm-clients

These 21 commits are when the Protocol Buffers files have changed:

Commit:b15eaef
Author:David Nault
Committer:David Nault

JCBC-2229 SCBC-531 KCBC-220 FTS custom score/filter search queries Motivation ---------- RFC-52 revision 15 adds two search query types: CustomScoreQuery and CustomFilterQuery. Each passes the results of an inner query through a user-defined JavaScript function, which either rescores or filters them. Before sending a query, the SDK must check that the cluster has the "udfQuery" search capability. Modifications ------------- Core: - Add the SEARCH_UDF_QUERY cluster capability, and CoreCustomScoreQuery and CoreCustomFilterQuery with a shared base class. - Add CoreSearchQuery.childQueries() and ownRequiredCapabilities(). addRequiredCapabilities() walks the query tree and collects the capabilities each query requires. - ClassicCoreSearchOps.requiredCapabilities() now requires a non-null CoreSearchRequest and walks its query tree. The legacy searchQuery* methods wrap their query in a CoreSearchRequest for this check. - Protostellar: these queries throw unsupportedInProtostellar. Java, Scala and Kotlin: - Add SearchQuery.customScore() and SearchQuery.customFilter(), with settings for fields, parameters and boost. - FIT performers: support the new query types and declare SDK_SEARCH_CUSTOM_SCRIPT_QUERIES. Result ------ Users can search with custom score and custom filter queries on Couchbase Server 8.5 and later. On older clusters the SDK throws FeatureNotAvailableException without sending the request. Limitations ----------- These new queries do not support boost (server ignores it if present) but the Java and Kotlin type hierarchies require the boost method to exist. The best we can do is document that boosting these queries has no effect. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

The documentation is generated from this commit.

Commit:a5a931e
Author:David Nault
Committer:David Nault

JCBC-2229 SCBC-531 KCBC-220 FTS custom score/filter search queries Motivation ---------- RFC-52 revision 15 adds two search query types: CustomScoreQuery and CustomFilterQuery. Each passes the results of an inner query through a user-defined JavaScript function, which either rescores or filters them. Before sending a query, the SDK must check that the cluster has the "udfQuery" search capability. Modifications ------------- Core: - Add the SEARCH_UDF_QUERY cluster capability, and CoreCustomScoreQuery and CoreCustomFilterQuery with a shared base class. - Add CoreSearchQuery.childQueries() and ownRequiredCapabilities(). addRequiredCapabilities() walks the query tree and collects the capabilities each query requires. - ClassicCoreSearchOps.requiredCapabilities() now requires a non-null CoreSearchRequest and walks its query tree. The legacy searchQuery* methods wrap their query in a CoreSearchRequest for this check. - If the server says custom script queries are disabled, throw FeatureNotAvailableException explaining how to enable them. - Protostellar: these queries throw unsupportedInProtostellar. Java, Scala and Kotlin: - Add SearchQuery.customScore() and SearchQuery.customFilter(), with settings for fields, parameters and boost. - FIT performers: support the new query types and declare SDK_SEARCH_CUSTOM_SCRIPT_QUERIES. Result ------ Users can search with custom score and custom filter queries on Couchbase Server 8.5 and later. On older clusters the SDK throws FeatureNotAvailableException without sending the request. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

The documentation is generated from this commit.

Commit:bcbb8c6
Author:Graham Pople

SCBC-527: Replica Read from Specific Replica Change-Id: I675793d1623e2dd501a5fd26695f771c2d770ff6

Commit:54b2484
Author:David Nault
Committer:David Nault

TEST: Upgrade FIT protocol to 8e706b7 Change-Id: I8bd52e3adfc9c418051750a2d56ffd41eb8ccdd8 Reviewed-on: https://review.couchbase.org/c/couchbase-jvm-clients/+/251702 Tested-by: David Nault <david.nault@couchbase.com> Reviewed-by: David Nault <david.nault@couchbase.com>

Commit:29952c6
Author:Graham Pople
Committer:Graham Pople

JCBC-2222: Handle Query Error 2120 Change-Id: Ib0003d2601c07284f128089cbd91dc7ea9af7bf7 Reviewed-on: https://review.couchbase.org/c/couchbase-jvm-clients/+/249597 Tested-by: Build Bot <build@couchbase.com> Reviewed-by: David Nault <david.nault@couchbase.com>

Commit:7c417ee
Author:David Nault
Committer:David Nault

Gardening: Update FIT protocol couchbaselabs/fit-protocol@47f8a173f908e6700318d9f0f45cc5bc32170df7 Change-Id: Icac487c5712a7b65691cbf70712cd6955cc8c916 Reviewed-on: https://review.couchbase.org/c/couchbase-jvm-clients/+/248505 Tested-by: David Nault <david.nault@couchbase.com> Reviewed-by: David Nault <david.nault@couchbase.com>

Commit:e6cee33
Author:Will Broadbelt
Committer:Graham Pople

SDKQE-3082: FIT Core Performer - support new bounds counter type and set/clear counter rpc's Change-Id: Ib8083208bea40e9dfa1a173e8102d9482d9a6b1f Reviewed-on: https://review.couchbase.org/c/couchbase-jvm-clients/+/195818 Tested-by: Build Bot <build@couchbase.com> Reviewed-by: Graham Pople <graham.pople@couchbase.com> (cherry picked from commit a101715133e35ad264401b101df2738e3a80e756) Reviewed-on: https://review.couchbase.org/c/couchbase-jvm-clients/+/248214 Tested-by: Graham Pople <graham.pople@couchbase.com>

Commit:a101715
Author:Will Broadbelt
Committer:Graham Pople

SDKQE-3082: FIT Core Performer - support new bounds counter type and set/clear counter rpc's Change-Id: Ib8083208bea40e9dfa1a173e8102d9482d9a6b1f Reviewed-on: https://review.couchbase.org/c/couchbase-jvm-clients/+/195818 Tested-by: Build Bot <build@couchbase.com> Reviewed-by: Graham Pople <graham.pople@couchbase.com>

Commit:61cc352
Author:Graham Pople
Committer:Graham Pople

Sync with latest FIT GRPC Change-Id: I4acfdcb04b9ebdbb6e4009f554839baa33a06f12 Reviewed-on: https://review.couchbase.org/c/couchbase-jvm-clients/+/244912 Tested-by: Build Bot <build@couchbase.com> Reviewed-by: David Nault <david.nault@couchbase.com>

Commit:605f50e
Author:David Nault
Committer:David Nault

SDKQE-3839 Streamline JVM FIT performer build process Motivation ---------- Remove external dependencies so we can easily build the FIT performers alongside the SDKs. Modifications ------------- Add a `fit-performer-protocol` module to use instead of the `fit-grpc` module from `transactions-fit-performer`. NOTE: The name of this module includes "fit-performer" so the `BuildDockerJVMPerformer` script from jenkins-sdk will uncomment it along with the other FIT modules. Add an `update-protobuf.sh` script that copies the latest Protobuf files from `couchbaselabs/fit-protocol` so they can be checked in to this project. NOTE: `git submodule` is arguably a more natural way to share the files, but existing FIT infrastructure does not expect submodules. Add the FIT Protobuf files. Add a `fit` profile to the parent POM. When active, the FIT modules are included in the build; it's no longer necessary to uncomment the FIT modules. The commented-out definitions remain for short-term compatibility with jenkins-sdk's BuildDockerJVMPerformer. Update the SDK-specific Dockerfiles so they no longer depend on transactions-fit-peformer. To simplify new workflows, add a shared Dockerfile that uses the repository root as the Docker context. It has an `SDK` build argument for specifying which SDK's performer to build. Change-Id: Icb34758fde1dac5f982b364d7ae5f9969eb718f4 Reviewed-on: https://review.couchbase.org/c/couchbase-jvm-clients/+/241823 Reviewed-by: Graham Pople <graham.pople@couchbase.com> Tested-by: Build Bot <build@couchbase.com>

Commit:b2fc62b
Author:Graham Pople
Committer:Graham Pople

JVMCBC-1421: Protostellar: support compression GRPC changes Updated couchbase2 GRPC to 098bcb8a548f4a2560874ae289cede3a3e142e69 Change-Id: Ic5fe13f25eab1b9630d25fbe37079b98f7d46681 Reviewed-on: https://review.couchbase.org/c/couchbase-jvm-clients/+/199995 Reviewed-by: David Nault <david.nault@couchbase.com> Tested-by: Build Bot <build@couchbase.com>

Commit:1fc2872
Author:Graham Pople
Committer:David Nault

Updating couchbase2 GRPC to latest Commit: f0c1611474aa6122d3427db0991cedc81b5f6b3d Change-Id: I046b5bfa64ae446c7d7a2a9c7000352c5c180688 Reviewed-on: https://review.couchbase.org/c/couchbase-jvm-clients/+/199770 Reviewed-by: David Nault <david.nault@couchbase.com> Tested-by: Build Bot <build@couchbase.com>

Commit:f372e50
Author:Graham Pople
Committer:Graham Pople

Updating Protostellar GRPC to latest Using Protostellar commit 06ba503. Change-Id: I873486d192fbf5aa72b210bdd051ab5b0f719428 Reviewed-on: https://review.couchbase.org/c/couchbase-jvm-clients/+/198146 Reviewed-by: David Nault <david.nault@couchbase.com> Tested-by: Build Bot <build@couchbase.com>

Commit:23c722d
Author:David Nault
Committer:David Nault

JVMCBC-1266 Handle breaking FTS changes Sync to protostellar commit 3d727a523445b58c3 Change-Id: I6d9b53aa1c04b765a9cd7ad5a9c6f83c1aab91ff Reviewed-on: https://review.couchbase.org/c/couchbase-jvm-clients/+/189624 Tested-by: Build Bot <build@couchbase.com> Reviewed-by: Michael Reiche <michael.reiche@couchbase.com>

Commit:e6cc660
Author:David Nault
Committer:David Nault

Protostellar: Sync to commit 028217e35712 Modifications ------------- ING-388: Use content flags instead of content type enums. Change-Id: I49622e4124eae8c885757ae7b0a8e0367484ee89 Reviewed-on: https://review.couchbase.org/c/couchbase-jvm-clients/+/188915 Tested-by: Build Bot <build@couchbase.com> Reviewed-by: Graham Pople <graham.pople@couchbase.com>

Commit:df8002d
Author:David Nault
Committer:David Nault

Protostellar: Sync to commit 93e0fcd43b62 Modifications ------------- Add support for expiry to mutatein. Change-Id: Id61fd89eeaba080f4f4a8641819363059712ea67 Reviewed-on: https://review.couchbase.org/c/couchbase-jvm-clients/+/188914 Tested-by: Build Bot <build@couchbase.com> Reviewed-by: Michael Reiche <michael.reiche@couchbase.com>

Commit:251ed45
Author:David Nault
Committer:David Nault

Protostellar: Sync with Protostellar commit 8efb02c3 - Added prefixes to enum values - Updated Get* methods to have distinct response types. - Appended Service to service names - Added support for collection maxTTL in collection manager Change-Id: I00b2fe1c1a29bed6a3aa4588e782823efc6c679e Reviewed-on: https://review.couchbase.org/c/couchbase-jvm-clients/+/188401 Tested-by: Build Bot <build@couchbase.com> Reviewed-by: Michael Reiche <michael.reiche@couchbase.com>

Commit:f91dc74
Author:David Nault
Committer:David Nault

Protostellar: Update for relative/absolute expiry Sync with Protostellar commit 1234176d3b20c6 (ING-333: Added support for relative and absolute expiries.) Set relative/absolute expiry when creating Protostellar requests Change-Id: I1bba2ba7f848009f44d0f84f37db7217f986f0d7 Reviewed-on: https://review.couchbase.org/c/couchbase-jvm-clients/+/188392 Tested-by: Build Bot <build@couchbase.com> Reviewed-by: Michael Reiche <michael.reiche@couchbase.com>

Commit:7450be9
Author:David Nault
Committer:David Nault

Gardening: Protostellar protobuf sync Syncing to protostellar commit 83c86ea Just changes to Ruby and PHP options. Commiting them separately to avoid the noise. Change-Id: Ieb0cfb478d267b42392aa56b232b9ddf48126da4 Reviewed-on: https://review.couchbase.org/c/couchbase-jvm-clients/+/188382 Tested-by: Build Bot <build@couchbase.com> Reviewed-by: David Nault <david.nault@couchbase.com>

Commit:83e6c3f
Author:David Nault
Committer:David Nault

Gardening: Update Protostellar protocol definition Only significant change is addition of the health check API. Change-Id: I08558ef725012b39cec1b232aabf75d408cac645 Reviewed-on: https://review.couchbase.org/c/couchbase-jvm-clients/+/186003 Tested-by: David Nault <david.nault@couchbase.com> Reviewed-by: David Nault <david.nault@couchbase.com>

Commit:5569274
Author:David Nault
Committer:David Nault

JVMCBC-1185 Move KV CRUD operations into core Motivation ---------- Adding a CoreKvOps interface paves the way for slotting in alternative protocols. This is groundwork for the Protostellar protocol. Pushing functionality down into core-io means less work for the JVM language wrappers (currently Scala & Kotlin). Modifications ------------- Add a CoreKvOps interface, and a "Classic" implementation that uses the existing Memcached protocol code. CoreKvOps currently covers the basic KV CRUD operations. Subdocument and binary operations are still todo. Add a repackaged version of gRPC to core-io, along with prototype stubs for the Protostellar protocol. Migrate the test code in AsyncScopeTest to KeyValueCollectionIntegrationTest, because mocking is a pain. Change-Id: I54fe6ab472398b8adcdd0cf1d83b6a25326c13fd Reviewed-on: https://review.couchbase.org/c/couchbase-jvm-clients/+/184307 Tested-by: Build Bot <build@couchbase.com> Reviewed-by: Graham Pople <graham.pople@couchbase.com>