34 lines
633 B
Go
34 lines
633 B
Go
package types
|
|
|
|
import (
|
|
"bytes"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
|
|
"github.com/ethereum/go-ethereum/common"
|
|
)
|
|
|
|
var nullHash = common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000")
|
|
|
|
func IsNullHash(hash common.Hash) bool {
|
|
return bytes.Equal(hash.Bytes(), nullHash.Bytes())
|
|
}
|
|
|
|
func CommitOrRollback(tx Tx, err error) error {
|
|
var rberr error
|
|
defer func() {
|
|
if rberr != nil {
|
|
logrus.Errorf("rollback failed: %s", rberr)
|
|
}
|
|
}()
|
|
if rec := recover(); rec != nil {
|
|
rberr = tx.Rollback()
|
|
panic(rec)
|
|
} else if err != nil {
|
|
rberr = tx.Rollback()
|
|
} else {
|
|
err = tx.Commit()
|
|
}
|
|
return err
|
|
}
|