Google Cloud Spanner v1 API - Class SpannerClientBuilder (5.2.0)

public sealed class SpannerClientBuilder : ClientBuilderBase<SpannerClient>

Reference documentation and code samples for the Google Cloud Spanner v1 API class SpannerClientBuilder.

Builder class for SpannerClient to provide simple configuration of credentials, endpoint etc.

Inheritance

object > ClientBuilderBaseSpannerClient > SpannerClientBuilder

Namespace

Google.Cloud.Spanner.V1

Assembly

Google.Cloud.Spanner.V1.dll

Constructors

SpannerClientBuilder()

public SpannerClientBuilder()

Creates a new builder with default settings.

Properties

AffinityChannelPoolConfiguration

public ChannelPoolConfig AffinityChannelPoolConfiguration { get; set; }

Specifies the configuration to use for the affinity channel pool. When set, each session will be bound to a gRPC channel meaning that all commands executed on that session will be executed on that gRPC channel. May be null, in which case there will be no channel affinity. Defaults to null.

Property Value
Type Description
ChannelPoolConfig
Remarks

Each client built will hold its own copy of AffinityChannelPoolConfiguration, which means changes made to this value affect clients built after the change but not clients already built when the change happens.

CanUseChannelPool

protected override bool CanUseChannelPool { get; }

Returns whether or not a channel pool can be used if a channel is required. The default behavior is to return true if and only if no quota project, scopes, credentials or token access method have been specified and if UseJwtAccessWithScopes flag matches the flag in ChannelPool. Derived classes should override this property if there are other reasons why the channel pool should not be used.

Property Value
Type Description
bool
Overrides
Google.Api.Gax.Grpc.ClientBuilderBase<Google.Cloud.Spanner.V1.SpannerClient>.CanUseChannelPool
Remarks

The default channel pool cannot be used when AffinityChannelPoolConfiguration is set.

DirectedReadOptions

public DirectedReadOptions DirectedReadOptions { get; set; }

Specifies which replicas or regions should be used for non-transactional reads or queries.

Property Value
Type Description
DirectedReadOptions
Remarks

These options will be applied to ExecuteSql, ExecuteStreamingSql, Read and StreamingRead operations being executed within a single use or read-only transaction. Otherwise, they will be ignored. For these options to be automatically applied to requests, use PooledSession to execute operations instead of SpannerClient directly.

EmulatorDetection

public EmulatorDetection EmulatorDetection { get; set; }

Specifies how the builder responds to the presence of emulator environment variables.

Property Value
Type Description
EmulatorDetection
Remarks

This property defaults to None, meaning that environment variables are ignored.

EnvironmentVariableProvider

public Func<string, string> EnvironmentVariableProvider { get; set; }

An environment variable provider function (variable -> value) that is used during emulator environment detection. This is provided for testability, so that clients are able to test how they would connect based on emulator environment variables. This is not expected to be used in production code. The default value of null indicates "use the regular process environment variables".

Property Value
Type Description
Funcstringstring

LeaderRoutingEnabled

public bool LeaderRoutingEnabled { get; set; }

Specifies whether leader routing is enabled or not. This is true by default.

Property Value
Type Description
bool
Remarks

If this value is true some operations will always be explicitly routed to the leader, some operations will never be explicitly routed to the leader, and some operations will be routed to the leader depending on the transaction type they are using.

Settings

public SpannerSettings Settings { get; set; }

The settings to use for RPCs, or null for the default settings.

Property Value
Type Description
SpannerSettings

Methods

Build()

public override SpannerClient Build()

Builds the resulting client.

Returns
Type Description
SpannerClient
Overrides
Google.Api.Gax.Grpc.ClientBuilderBase<Google.Cloud.Spanner.V1.SpannerClient>.Build()

BuildAsync(CancellationToken)

public override Task<SpannerClient> BuildAsync(CancellationToken cancellationToken = default)

Builds the resulting client asynchronously.

Parameter
Name Description
cancellationToken CancellationToken
Returns
Type Description
TaskSpannerClient
Overrides
Google.Api.Gax.Grpc.ClientBuilderBase<Google.Cloud.Spanner.V1.SpannerClient>.BuildAsync(System.Threading.CancellationToken)

CreateCallInvoker()

protected override CallInvoker CreateCallInvoker()

Creates a call invoker synchronously. Override this method in a concrete builder type if more call invoker mechanisms are supported. This implementation calls GetChannelCredentials() if no call invoker is specified.

Returns
Type Description
CallInvoker
Overrides
Google.Api.Gax.Grpc.ClientBuilderBase<Google.Cloud.Spanner.V1.SpannerClient>.CreateCallInvoker()

CreateCallInvokerAsync(CancellationToken)

protected override Task<CallInvoker> CreateCallInvokerAsync(CancellationToken cancellationToken)

Creates a call invoker asynchronously. Override this method in a concrete builder type if more call invoker mechanisms are supported. This implementation calls GetChannelCredentialsAsync(CancellationToken) if no call invoker is specified.

Parameter
Name Description
cancellationToken CancellationToken
Returns
Type Description
TaskCallInvoker
Overrides
Google.Api.Gax.Grpc.ClientBuilderBase<Google.Cloud.Spanner.V1.SpannerClient>.CreateCallInvokerAsync(System.Threading.CancellationToken)

GetChannelPool()

protected override ChannelPool GetChannelPool()

Returns the channel pool to use when no other options are specified.

Returns
Type Description
ChannelPool
Overrides
Google.Api.Gax.Grpc.ClientBuilderBase<Google.Cloud.Spanner.V1.SpannerClient>.GetChannelPool()

MaybeCreateEmulatorClientBuilder()

public SpannerClientBuilder MaybeCreateEmulatorClientBuilder()

May return a builder that will connect to the emulator under certain conditions.

Returns
Type Description
SpannerClientBuilder
Remarks

It returns null if the emulator should not be used, e.g. if EmulatorDetection is EmulatorOrProduction but the environment variable isn't configured. Otherwise, returns a builder with the endpoint and credentials set appropriately for the emulator.

Validate()

protected override void Validate()

Validates that the builder is in a consistent state for building. For example, it's invalid to call Build() on an instance which has both JSON credentials and a credentials path specified.

Overrides
Google.Api.Gax.Grpc.ClientBuilderBase<Google.Cloud.Spanner.V1.SpannerClient>.Validate()
Remarks

Setting AffinityChannelPoolConfiguration to true is not compatible with specifying a CallInvoker.

Exceptions
Type Description
InvalidOperationException

The builder is in an invalid state.