func()

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",
				},
			},
		},
	}
}