in spanner_prober/prober/proberlib.go [91:163]
func (o ProberOptions) grpcGcpConfig() *gpb.ApiConfig {
return &gpb.ApiConfig{
ChannelPool: &gpb.ChannelPoolConfig{
// Creates a fixed-size gRPC-GCP channel pool.
MinSize: uint32(o.ChannelPoolSize),
MaxSize: uint32(o.ChannelPoolSize),
// This option repeats(preserves) the strategy used by the Spanner
// client to distribute BatchCreateSessions calls across channels.
BindPickStrategy: gpb.ChannelPoolConfig_ROUND_ROBIN,
// When issuing RPC call within Spanner session fallback to a ready
// channel if the channel mapped to the session is not ready.
FallbackToReady: true,
// Establish a new connection for a channel where
// no response/messages were received within last 1 second and
// at least 3 RPC calls (started after the last response/message
// received) timed out (deadline_exceeded).
UnresponsiveDetectionMs: 1000,
UnresponsiveCalls: 3,
},
// Configuration for all Spanner RPCs that create, use or remove
// Spanner sessions. gRPC-GCP channel pool uses this configuration
// to provide session to channel affinity. If Spanner introduces any new
// method that creates/uses/removes sessions, it must be added here.
Method: []*gpb.MethodConfig{
{
Name: []string{"/google.spanner.v1.Spanner/CreateSession"},
Affinity: &gpb.AffinityConfig{
Command: gpb.AffinityConfig_BIND,
AffinityKey: "name",
},
},
{
Name: []string{"/google.spanner.v1.Spanner/BatchCreateSessions"},
Affinity: &gpb.AffinityConfig{
Command: gpb.AffinityConfig_BIND,
AffinityKey: "session.name",
},
},
{
Name: []string{"/google.spanner.v1.Spanner/DeleteSession"},
Affinity: &gpb.AffinityConfig{
Command: gpb.AffinityConfig_UNBIND,
AffinityKey: "name",
},
},
{
Name: []string{"/google.spanner.v1.Spanner/GetSession"},
Affinity: &gpb.AffinityConfig{
Command: gpb.AffinityConfig_BOUND,
AffinityKey: "name",
},
},
{
Name: []string{
"/google.spanner.v1.Spanner/BeginTransaction",
"/google.spanner.v1.Spanner/Commit",
"/google.spanner.v1.Spanner/ExecuteBatchDml",
"/google.spanner.v1.Spanner/ExecuteSql",
"/google.spanner.v1.Spanner/ExecuteStreamingSql",
"/google.spanner.v1.Spanner/PartitionQuery",
"/google.spanner.v1.Spanner/PartitionRead",
"/google.spanner.v1.Spanner/Read",
"/google.spanner.v1.Spanner/Rollback",
"/google.spanner.v1.Spanner/StreamingRead",
},
Affinity: &gpb.AffinityConfig{
Command: gpb.AffinityConfig_BOUND,
AffinityKey: "session",
},
},
},
}
}