Browse Source

add PrepareAndSubmit

pull/159/head
yedf2 4 years ago
parent
commit
ec8d2832d0
  1. 34
      dtmcli/barrier.go

34
dtmcli/barrier.go

@ -100,3 +100,37 @@ func (bb *BranchBarrier) CallWithDB(db *sql.DB, busiCall BarrierBusiFunc) error
}
return bb.Call(tx, busiCall)
}
func (bb *BranchBarrier) QueryPrepared(db *sql.DB) error {
affected, err := insertBarrier(db, bb.TransType, bb.Gid, bb.BranchID, BranchAction, bb.BranchID, bb.Op)
if err != nil {
return err
}
if affected > 0 {
return ErrFailure
}
return nil
}
func (bb *BranchBarrier) PrepareAndSubmit(msg *Msg, queryPrepared string, db *sql.DB, busiCall BarrierBusiFunc) (err error) {
var tx *sql.Tx
tx, err = db.Begin()
if err == nil {
defer func() {
if err != nil {
_ = tx.Rollback()
}
}()
err = busiCall(tx)
}
if err == nil {
err = msg.Prepare(queryPrepared)
}
if err == nil {
err = tx.Commit()
}
if err == nil {
return msg.Submit() // should not assign err. or else defer may try to rollback a committed tx
}
return err
}

Loading…
Cancel
Save