@Stability.Internal
public class ClientRecord
extends java.lang.Object
ClientRecord isn't as contended as it appears. It's only read and written to by each client once per cleanup window (default for this is 60 seconds). It does remain a single point of failure, but with a sensible number of replicas this is unlikely to be a problem.
All writes are non-durable. If a write is rolled back then it's not critical, it will just take a little longer to find lost txns.
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
CLIENT_RECORD_DOC_ID |
static java.lang.String |
FIELD_CLIENTS |
static java.lang.String |
FIELD_OVERRIDE |
static java.lang.String |
FIELD_OVERRIDE_ENABLED |
static java.lang.String |
FIELD_OVERRIDE_EXPIRES |
static java.lang.String |
FIELD_RECORDS |
Constructor and Description |
---|
ClientRecord(ClusterData clusterData,
TransactionConfig config) |
Modifier and Type | Method and Description |
---|---|
protected reactor.core.publisher.Mono<java.lang.Integer> |
beforeCreateRecord(ClientRecord self) |
protected reactor.core.publisher.Mono<java.lang.Integer> |
beforeGetRecord(ClientRecord self) |
protected reactor.core.publisher.Mono<java.lang.Integer> |
beforeRemoveClient(ClientRecord self) |
protected reactor.core.publisher.Mono<java.lang.Integer> |
beforeUpdateCAS(ClientRecord self)
Deprecated.
|
protected reactor.core.publisher.Mono<java.lang.Integer> |
beforeUpdateRecord(ClientRecord self) |
static reactor.core.publisher.Mono<com.couchbase.client.java.kv.LookupInResult> |
getClientRecord(com.couchbase.client.java.ReactiveCollection collection) |
reactor.core.publisher.Mono<ClientRecordDetails> |
getClientRecord(java.lang.String bucketName) |
static ClientRecordDetails |
parseClientRecord(com.couchbase.client.java.kv.LookupInResult clientRecord,
java.lang.String clientUuid) |
reactor.core.publisher.Mono<ClientRecordDetails> |
processClient(java.lang.String clientUuid,
com.couchbase.client.java.ReactiveCollection collection,
TransactionConfig config) |
reactor.core.publisher.Flux<java.lang.Void> |
removeClientFromAllBuckets(java.lang.String clientUuid) |
reactor.core.publisher.Flux<java.lang.Void> |
removeClientFromAllBuckets(java.lang.String clientUuid,
java.time.Duration timeout)
Called on shutdown to cleanly remove a client from the client-record.
|
public static java.lang.String CLIENT_RECORD_DOC_ID
public static final java.lang.String FIELD_RECORDS
public static final java.lang.String FIELD_CLIENTS
public static final java.lang.String FIELD_OVERRIDE
public static final java.lang.String FIELD_OVERRIDE_ENABLED
public static final java.lang.String FIELD_OVERRIDE_EXPIRES
public ClientRecord(ClusterData clusterData, TransactionConfig config)
public reactor.core.publisher.Flux<java.lang.Void> removeClientFromAllBuckets(java.lang.String clientUuid)
public reactor.core.publisher.Flux<java.lang.Void> removeClientFromAllBuckets(java.lang.String clientUuid, java.time.Duration timeout)
public static ClientRecordDetails parseClientRecord(com.couchbase.client.java.kv.LookupInResult clientRecord, java.lang.String clientUuid)
public reactor.core.publisher.Mono<ClientRecordDetails> getClientRecord(java.lang.String bucketName)
public static reactor.core.publisher.Mono<com.couchbase.client.java.kv.LookupInResult> getClientRecord(com.couchbase.client.java.ReactiveCollection collection)
public reactor.core.publisher.Mono<ClientRecordDetails> processClient(java.lang.String clientUuid, com.couchbase.client.java.ReactiveCollection collection, TransactionConfig config)
protected reactor.core.publisher.Mono<java.lang.Integer> beforeCreateRecord(ClientRecord self)
protected reactor.core.publisher.Mono<java.lang.Integer> beforeRemoveClient(ClientRecord self)
@Deprecated protected reactor.core.publisher.Mono<java.lang.Integer> beforeUpdateCAS(ClientRecord self)
protected reactor.core.publisher.Mono<java.lang.Integer> beforeGetRecord(ClientRecord self)
protected reactor.core.publisher.Mono<java.lang.Integer> beforeUpdateRecord(ClientRecord self)