package protocol.shared

Mouse Melon logoGet desktop application:
View/edit binary Protocol Buffers messages

enum API

shared.basic.proto:86

When an implementation supports multiple APIs, this enum allows sending which is preferred to be used for a given test. This is an abstraction that allows us to test e.g. Java's blocking vs reactive APIs. Declaration in supportedApis: For implementations with just one API: Only declare DEFAULT. For implementations with separate blocking & async APIs: declare both. When the performer receives a preferred API: For implementations with just one API: ignore it. For implementations with separate blocking & async APIs: use the appropriate one.

Used in: performer.PerformerCapsFetchResponse, sdk.Command, transactions.CreateConnectionResponse, transactions.TransactionCreateRequest, transactions.TransactionSingleQueryRequest

message Authenticator

shared.cluster.proto:105

Used in: sdk.ClusterLevelCommand, ClusterConnectionCreateRequest

message Authenticator.CertificateAuthenticator

shared.cluster.proto:111

Used in: Authenticator

message Authenticator.JwtAuthenticator

shared.cluster.proto:138

Used in: Authenticator

message Authenticator.PasswordAuthenticator

shared.cluster.proto:106

Used in: Authenticator

message Bounds

shared.bounds.proto:39

Controls how a given workload is bounded. A simple bounding would be to just run X operations as fast as possible, and then stop. In future we will support more advanced bounds, such as the performer maintaining a target throughput of 100 ops/sec and seeing what the latency is, for 60 seconds.

Used in: meta.Workload, sdk.Workload, transactions.Workload

message ClearAllCountersRequest

shared.bounds.proto:56

Clear all counters for a given performer.

Used as request type in: PerformerService.clearAllCounters

(message has no fields)

message ClearAllCountersResponse

shared.bounds.proto:61

Empty but included anyway per GRPC best practices.

Used as response type in: PerformerService.clearAllCounters

(message has no fields)

message ClusterConfig

shared.cluster.proto:15

Used in: ClusterConnectionCreateRequest

message ClusterConnectionCloseRequest

shared.cluster.proto:190

Used as request type in: PerformerService.clusterConnectionClose

message ClusterConnectionCloseResponse

shared.cluster.proto:194

Used as response type in: PerformerService.clusterConnectionClose

message ClusterConnectionCreateRequest

shared.cluster.proto:151

Only sent to ExtSDKIntegration-supporting performers. Creates a cluster connection, with an optional cluster & transactions configuration.

Used as request type in: PerformerService.clusterConnectionCreate

message ClusterConnectionCreateResponse

shared.cluster.proto:185

Used as response type in: PerformerService.clusterConnectionCreate

message Collection

shared.collection.proto:15

Used in: sdk.CollectionLevelCommand, sdk.kv.rangescan.Scan, DocLocationPool, DocLocationSpecific, DocLocationUuid, TransactionsCleanupConfig, TransactionsConfig, transactions.CleanupSet, transactions.TransactionOptions, transactions.TransactionsFactoryCreateRequest

message Content

shared.content.proto:12

Used in: sdk.kv.Insert, sdk.kv.Replace, sdk.kv.Upsert, sdk.kv.mutate_in.ContentOrMacro, transactions.CommandInsert, transactions.CommandReplace, transactions.Insert, transactions.Replace

message ContentAs

shared.content.proto:36

The user is doing someResult.contentAs[Something]() - this allows specifying the Something. The protocol generally then requires that content to be converted into bytes to be streamed back.

Used in: sdk.kv.Get, sdk.kv.GetAllReplicas, sdk.kv.GetAndLock, sdk.kv.GetAndTouch, sdk.kv.GetAnyReplica, sdk.kv.GetOrNull, sdk.kv.lookup_in.LookupInSpec, sdk.kv.mutate_in.MutateInSpec, sdk.kv.rangescan.Scan, sdk.query.Command, sdk.search.Search, sdk.search.SearchWrapper, ContentAsPerformerValidation, transactions.Get

message ContentAsPerformerValidation

shared.content.proto:112

For subsystems (such as transactions) that rely on performer-side validation. Many result types have a `SomeResult.contentAs[SomeType]()` call, and this message controls how the performer executes those, and what validation it performs.

Used in: transactions.CommandGet, transactions.CommandGetMulti.TransactionGetMultiSpec, transactions.CommandGetOptional, transactions.CommandGetReplicaFromPreferredServerGroup

message ContentOrError

shared.content.proto:82

Used in: sdk.kv.lookup_in.LookupInSpecResult, sdk.kv.mutate_in.MutateInSpecResult

message ContentTypes

shared.content.proto:89

Used in: sdk.kv.GetReplicaResult, sdk.kv.GetResult, sdk.kv.rangescan.ScanResult, sdk.query.QueryResult, sdk.search.SearchRow, ContentOrError

message ContentTypes.NullValue

shared.content.proto:90

Used in: ContentTypes

(message has no fields)

message CouchbaseExceptionEx

shared.exceptions.proto:119

An exception derived from CouchbaseException "Ex" naming as transactions already has CouchbaseException in an enum.

Used in: Exception

enum CouchbaseExceptionType

shared.exceptions.proto:33

All errors derived from CouchbaseException. The performer should return the most specific error possible. E.g. not SDK_COUCHBASE_EXCEPTION, unless a raw CouchbaseException is what the SDK raised. From https://github.com/couchbaselabs/sdk-rfcs/blob/master/rfc/0058-error-handling.md Go specific notes: Go deviates from the error handling RFC in a few ways, and gets some special handling in the performer to map it into the RFC model so it can work with the FIT GRPC: 1. It doesn't really have `ErrorContext` in the same way. Instead it has `KeyValueError`, `QueryError` et al., which perform a similar purpose to `ErrorContext`. 2. It doesn't have a base `CouchbaseException` error. Errors don't derive from `CouchbaseException`, and generic errors that would be just a `CouchbaseException` in another SDK, become a `KeyValueError`, `QueryError` etc. (Assuming the error did originate from the SDK.) We accommodate (2)) in the FIT model by having the Go performer check for all specific exceptions first with e.g. `errors.Is(err, ErrTimeout)`. If these all fail, it then checks if the error is a `QueryError` etc. with `errors.As()`. If one of those succeeds, it's regarded as a generic CouchbaseException. If all those checks fail, the error is classified as `ExceptionOther`. (1) is accommodated by just converted `QueryError` et al. into a serialized `ErrorContext`-esque string, as they are serving very similar purposes.

Used in: CouchbaseExceptionEx

message Counter

shared.bounds.proto:19

Used as request type in: PerformerService.setCounter

Used as field type in: Bounds, PoolSelectionStrategyCounter

message CounterGlobal

shared.bounds.proto:14

We may need the flexibility to do various forms of counter, e.g.: 1. Aim to do 1m operations across all threads. 2. Each thread does 1m operations. (1) is the simplest and most useful, so is the only one supported for now. And `counterId` lets us do (2) with it anyway.

Used in: Counter

message DisconnectConnectionsRequest

shared.cluster.proto:199

Used as request type in: PerformerService.disconnectConnections

(message has no fields)

message DisconnectConnectionsResponse

shared.cluster.proto:202

Used as response type in: PerformerService.disconnectConnections

(message has no fields)

message DocLocation

shared.doc_location.proto:58

Used in: sdk.kv.Append, sdk.kv.Decrement, sdk.kv.Exists, sdk.kv.Get, sdk.kv.GetAllReplicas, sdk.kv.GetAndLock, sdk.kv.GetAndTouch, sdk.kv.GetAnyReplica, sdk.kv.GetOrNull, sdk.kv.Increment, sdk.kv.Insert, sdk.kv.Prepend, sdk.kv.Remove, sdk.kv.Replace, sdk.kv.Touch, sdk.kv.Unlock, sdk.kv.Upsert, sdk.kv.lookup_in.LookupIn, sdk.kv.lookup_in.LookupInAllReplicas, sdk.kv.lookup_in.LookupInAnyReplica, sdk.kv.mutate_in.MutateIn, transactions.CommandGetMulti.TransactionGetMultiSpec, transactions.Get, transactions.Insert, transactions.Remove, transactions.Replace

message DocLocationPool

shared.doc_location.proto:43

The performer will pick a document from a pool. The performer should generate an integer in [0-poolSize) following selectionStrategy. Then append that to `idPreface` e.g. "${idPreface}${selectedInt}" to get the document id.

Used in: DocLocation

message DocLocationSpecific

shared.doc_location.proto:14

The performer will access the document in this exact location

Used in: DocLocation

message DocLocationUuid

shared.doc_location.proto:20

The performer will generate a random UUID for the document id

Used in: DocLocation

enum Durability

shared.basic.proto:43

Used in: sdk.cluster.bucket_manager.BucketSettings, sdk.query.SingleQueryTransactionOptions, DurabilityType, TransactionsConfig, transactions.TransactionOptions, transactions.TransactionsFactoryCreateRequest

message DurabilityType

shared.basic.proto:51

Awkward name as Durability already taken

Used in: sdk.kv.AppendOptions, sdk.kv.DecrementOptions, sdk.kv.IncrementOptions, sdk.kv.InsertOptions, sdk.kv.PrependOptions, sdk.kv.RemoveOptions, sdk.kv.ReplaceOptions, sdk.kv.UpsertOptions, sdk.kv.mutate_in.MutateInOptions

message EchoRequest

shared.echo.proto:11

Request that the performer Echo a string to the performer logs.

Used as request type in: fit.columnar.ColumnarService.Echo, PerformerService.echo

message EchoResponse

shared.echo.proto:16

Used as response type in: fit.columnar.ColumnarService.Echo, PerformerService.echo

(message has no fields)

message Exception

shared.exceptions.proto:141

Used in: sdk.Result, sdk.kv.lookup_in.BooleanOrError, ContentOrError, CouchbaseExceptionEx, streams.Error

message ExceptionOther

shared.exceptions.proto:133

If the exception is not represented in SdkException, can return it in raw form here

Used in: Exception

message Expiry

shared.basic.proto:28

Used in: sdk.kv.DecrementOptions, sdk.kv.GetAndTouch, sdk.kv.IncrementOptions, sdk.kv.InsertOptions, sdk.kv.ReplaceOptions, sdk.kv.Touch, sdk.kv.UpsertOptions, sdk.kv.mutate_in.MutateInOptions, transactions.TransactionInsertOptions, transactions.TransactionReplaceOptions

message ForTime

shared.bounds.proto:31

The performer will run the bounded item until this much time has elapsed.

Used in: Bounds

message JsonSerializer

shared.transcoders.proto:34

* CustomSerializer defines different serialization strategies using a `oneof`. Currently, it includes a boolean option but is designed to be extended with other serialization methods in the future.

Used in: sdk.search.SearchOptions

message JsonTranscoder

shared.transcoders.proto:11

Used in: Transcoder

(message has no fields)

message Latch

shared.latch.proto:15

Note these latches don't work like real CountdownLatches (or equivalent). Each concurrent transaction gets its own version of the latch, and they are synchronized by the driver. Latches are bound to the rpc they are created in. E.g. it should be possible to have two concurrent `transactionStream` rpcs going on, each using the same latch name, but referring to two separate underlying CountdownLatches (or equivalents).

Used in: transactions.TransactionCreateRequest

message LegacyTranscoder

shared.transcoders.proto:10

Used in: Transcoder

(message has no fields)

message MutationState

shared.basic.proto:71

Used in: sdk.kv.rangescan.ScanOptions, sdk.query.QueryOptions, sdk.search.SearchOptions

message MutationToken

shared.basic.proto:63

Used in: sdk.kv.CounterResult, sdk.kv.MutationResult, sdk.kv.mutate_in.MutateInResult, MutationState, transactions.TransactionResult

message ObserveBased

shared.basic.proto:37

Used in: DurabilityType

enum PersistTo

shared.basic.proto:12

Used in: ObserveBased

message PoolSelectionStategyRandom

shared.doc_location.proto:29

Generate a random id in [0-poolSize).

Used in: DocLocationPool

message PoolSelectionStrategyCounter

shared.doc_location.proto:36

Use a counter to select the next document in the pool, starting at 0. The performer should increment the counter each time it uses it. The performer should modulo `poolSize`. E.g. `realCounterResult = currentCounterValue % poolSize`.

Used in: DocLocationPool

enum RandomDistribution

shared.doc_location.proto:24

Used in: PoolSelectionStategyRandom

message RawBinaryTranscoder

shared.transcoders.proto:14

Used in: Transcoder

(message has no fields)

message RawJsonTranscoder

shared.transcoders.proto:12

Used in: Transcoder

(message has no fields)

message RawStringTranscoder

shared.transcoders.proto:13

Used in: Transcoder

(message has no fields)

enum ReadPreference

shared.basic.proto:92

Zone Aware Read from Replica options

Used in: sdk.kv.GetAllReplicasOptions, sdk.kv.GetAnyReplicaOptions, sdk.kv.lookup_in.LookupInAllReplicasOptions, sdk.kv.lookup_in.LookupInAnyReplicaOptions

enum ReplicateTo

shared.basic.proto:21

Used in: ObserveBased

enum ScanConsistency

shared.basic.proto:58

Used in: sdk.cluster.eventing_function_manager.EventingFunctionSettings, sdk.query.QueryOptions, TransactionsConfigQuery, transactions.CommandQueryParameters, transactions.TransactionQueryOptions

message Scope

shared.collection.proto:10

Used in: sdk.ScopeLevelCommand, transactions.CommandQuery

message SetCounterResponse

shared.bounds.proto:51

Empty but included anyway per GRPC best practices.

Used as response type in: PerformerService.setCounter

(message has no fields)

message TransactionsCleanupConfig

shared.transaction_config.proto:34

Used in: TransactionsConfig

message TransactionsConfig

shared.transaction_config.proto:18

Options that can be overridden at the individual transaction level. Note that pre-ExtSDKIntegration, this struct was empty. Not in the implementation, where PerTransactionConfig existed, but here at the FIT level. So, it will only be populated for ExtSDKIntegration performers.

Used in: ClusterConfig, transactions.TransactionsFactoryCreateRequest

message TransactionsConfigQuery

shared.transaction_config.proto:49

Used in: TransactionsConfig

message Transcoder

shared.transcoders.proto:18

All the transcoders required by https://github.com/couchbaselabs/sdk-rfcs/blob/master/rfc/0055-serializers-transcoders.md

Used in: sdk.kv.GetAllReplicasOptions, sdk.kv.GetAndLockOptions, sdk.kv.GetAndTouchOptions, sdk.kv.GetAnyReplicaOptions, sdk.kv.GetOptions, sdk.kv.InsertOptions, sdk.kv.ReplaceOptions, sdk.kv.UpsertOptions, sdk.kv.rangescan.ScanOptions, ClusterConfig, transactions.CommandGetMulti.TransactionGetMultiSpec, transactions.TransactionGetOptions, transactions.TransactionInsertOptions, transactions.TransactionReplaceOptions