// pushTxn attempts to abort the txn via push. The wait group is signaled on // completion. func pushTxn(db *client.DB, now hlc.Timestamp, txn *roachpb.Transaction, typ roachpb.PushTxnType) { // Attempt to push the transaction which created the intent. pushArgs := &roachpb.PushTxnRequest{ Span: roachpb.Span{ Key: txn.Key, }, Now: now, PusherTxn: roachpb.Transaction{TxnMeta: enginepb.TxnMeta{Priority: math.MaxInt32}}, PusheeTxn: txn.TxnMeta, PushType: typ, } b := &client.Batch{} b.AddRawRequest(pushArgs) if err := db.Run(b); err != nil { log.Warningf(context.TODO(), "push of txn %s failed: %s", txn, err) return } br := b.RawResponse() // Update the supplied txn on successful push. *txn = br.Responses[0].GetInner().(*roachpb.PushTxnResponse).PusheeTxn }