in spanner_prober/prober/proberlib.go [768:791]
func (ReadWriteProbe) probe(ctx context.Context, p *Prober) error {
// Random row within the range.
k := rand.Intn(p.numRows)
payload, payloadHash, err := p.generatePayload(p.payloadSize)
if err != nil {
return err
}
_, err = p.spannerClient.ReadWriteTransaction(ctx, func(ctx context.Context, txn *spanner.ReadWriteTransaction) error {
iter := txn.Read(ctx, "ProbeTarget", spanner.Key{k}, []string{"Id", "Payload", "PayloadHash"})
defer iter.Stop()
_, err := validateRows(iter)
if err != nil {
return err
}
return txn.BufferWrite([]*spanner.Mutation{
spanner.InsertOrUpdate("ProbeTarget", []string{"Id", "Payload", "PayloadHash"}, []interface{}{k, payload, payloadHash}),
})
})
return err
}