in cloudprober/spannerprobers.go [261:305]
func partitionProber(client *spanner.Client, metrics map[string]int64) error {
ctx := context.Background()
session := createSession(client)
defer deleteSession(client, session)
selector := &spannerpb.TransactionSelector{
Selector: &spannerpb.TransactionSelector_Begin{
Begin: &spannerpb.TransactionOptions{
Mode: &spannerpb.TransactionOptions_ReadOnly_{
ReadOnly: &spannerpb.TransactionOptions_ReadOnly{},
},
},
},
}
// PartitionQuery
reqQuery := &spannerpb.PartitionQueryRequest{
Session: session.Name,
Sql: "select * FROM " + table,
Transaction: selector,
}
start := time.Now()
_, err := client.PartitionQuery(ctx, reqQuery)
if err != nil {
return err
}
metrics["partition_query_latency_ms"] = int64(time.Now().Sub(start) / time.Millisecond)
// PartitionRead
reqRead := &spannerpb.PartitionReadRequest{
Session: session.Name,
Table: table,
KeySet: &spannerpb.KeySet{
All: true,
},
Columns: []string{"username", "firstname", "lastname"},
Transaction: selector,
}
start = time.Now()
_, err = client.PartitionRead(ctx, reqRead)
if err != nil {
return err
}
metrics["partition_read_latency_ms"] = int64(time.Now().Sub(start) / time.Millisecond)
return nil
}