dtmimp

package
v1.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 6, 2022 License: BSD-3-Clause Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// ResultFailure for result of a trans/trans branch
	ResultFailure = "FAILURE"
	// ResultSuccess for result of a trans/trans branch
	ResultSuccess = "SUCCESS"
	// ResultOngoing for result of a trans/trans branch
	ResultOngoing = "ONGOING"
	// DBTypeMysql const for driver mysql
	DBTypeMysql = "mysql"
	// DBTypePostgres const for driver postgres
	DBTypePostgres = "postgres"
	// DBTypeRedis const for driver redis
	DBTypeRedis = "redis"
)

Variables

View Source
var BarrierTableName = "dtm_barrier.barrier"

BarrierTableName the table name of barrier table

View Source
var ErrFailure = errors.New("FAILURE")

ErrFailure error of FAILURE

View Source
var ErrOngoing = errors.New("ONGOING")

ErrOngoing error of ONGOING

View Source
var FatalIfError = logger.FatalIfError

FatalIfError fatal if error is not nil Deprecated: use logger.FatalIfError

View Source
var LogIfFatalf = logger.FatalfIf

LogIfFatalf fatal if cond is true Deprecated: use logger.FatalfIf

View Source
var LogRedf = logger.Errorf

LogRedf an alias of Errorf Deprecated: use logger.Errorf

View Source
var Logf = logger.Infof

Logf an alias of Infof Deprecated: use logger.Errorf

View Source
var MapFailure = map[string]interface{}{"dtm_result": ResultFailure}

MapFailure HTTP result of FAILURE

View Source
var MapSuccess = map[string]interface{}{"dtm_result": ResultSuccess}

MapSuccess HTTP result of SUCCESS

View Source
var PassthroughHeaders = []string{}

PassthroughHeaders will be passed to every sub-trans call

View Source
var RestyClient = resty.New()

RestyClient the resty object

View Source
var XaSqlTimeoutMs = 15000

XaSqlTimeoutMs milliseconds for Xa sql to timeout

Functions

func AsError

func AsError(x interface{}) error

AsError wrap a panic value as an error

func CatchP

func CatchP(f func()) (rerr error)

CatchP catch panic to error

func CheckResponse

func CheckResponse(resp *resty.Response, err error) error

CheckResponse is check response, and return corresponding error by the condition of resp when err is nil. Otherwise, return err directly.

func CheckResult

func CheckResult(res interface{}, err error) error

CheckResult is check result. Return err directly if err is not nil. And return corresponding error by calling CheckResponse if resp is the type of *resty.Response. Otherwise, return error by value of str, the string after marshal.

func DBExec

func DBExec(db DB, sql string, values ...interface{}) (affected int64, rerr error)

DBExec use raw db to exec

func E2P

func E2P(err error)

E2P error to panic

func GetCurrentDBType

func GetCurrentDBType() string

GetCurrentDBType get currentDBType

func GetDsn

func GetDsn(conf DBConf) string

GetDsn get dsn from map config

func GetFuncName

func GetFuncName() string

GetFuncName get current call func name

func If

func If(condition bool, trueObj interface{}, falseObj interface{}) interface{}

If ternary operator

func MayReplaceLocalhost

func MayReplaceLocalhost(host string) string

MayReplaceLocalhost when run in docker compose, change localhost to host.docker.internal for accessing host network

func MustAtoi

func MustAtoi(s string) int

MustAtoi is string to int

func MustMarshal

func MustMarshal(v interface{}) []byte

MustMarshal checked version for marshal

func MustMarshalString

func MustMarshalString(v interface{}) string

MustMarshalString string version of MustMarshal

func MustRemarshal

func MustRemarshal(from interface{}, to interface{})

MustRemarshal marshal and unmarshal, and check error

func MustUnmarshal

func MustUnmarshal(b []byte, obj interface{})

MustUnmarshal checked version for unmarshal

func MustUnmarshalString

func MustUnmarshalString(s string, obj interface{})

MustUnmarshalString string version of MustUnmarshal

func OrString

func OrString(ss ...string) string

OrString return the first not empty string

func P2E

func P2E(perr *error)

P2E panic to error

func PanicIf

func PanicIf(cond bool, err error)

PanicIf name is clear

func PooledDB

func PooledDB(conf DBConf) (*sql.DB, error)

PooledDB get pooled sql.DB

func SetCurrentDBType

func SetCurrentDBType(dbType string)

SetCurrentDBType set currentDBType

func StandaloneDB

func StandaloneDB(conf DBConf) (*sql.DB, error)

StandaloneDB get a standalone db instance

func TransCallDtm

func TransCallDtm(tb *TransBase, body interface{}, operation string) error

TransCallDtm TransBase call dtm

func TransRegisterBranch

func TransRegisterBranch(tb *TransBase, added map[string]string, operation string) error

TransRegisterBranch TransBase register a branch to dtm

func TransRequestBranch

func TransRequestBranch(t *TransBase, body interface{}, branchID string, op string, url string) (*resty.Response, error)

TransRequestBranch TransBAse request branch result

Types

type BranchIDGen

type BranchIDGen struct {
	BranchID string
	// contains filtered or unexported fields
}

BranchIDGen used to generate a sub branch id

func (*BranchIDGen) CurrentSubBranchID

func (g *BranchIDGen) CurrentSubBranchID() string

CurrentSubBranchID return current branchID

func (*BranchIDGen) NewSubBranchID

func (g *BranchIDGen) NewSubBranchID() string

NewSubBranchID generate a sub branch id

type DB

type DB interface {
	Exec(query string, args ...interface{}) (sql.Result, error)
	QueryRow(query string, args ...interface{}) *sql.Row
}

DB inteface of dtmcli db

type DBConf

type DBConf struct {
	Driver   string `yaml:"Driver"`
	Host     string `yaml:"Host"`
	Port     int64  `yaml:"Port"`
	User     string `yaml:"User"`
	Password string `yaml:"Password"`
}

type DBSpecial

type DBSpecial interface {
	GetPlaceHoldSQL(sql string) string
	GetInsertIgnoreTemplate(tableAndValues string, pgConstraint string) string
	GetXaSQL(command string, xid string) string
}

DBSpecial db specific operations

func GetDBSpecial

func GetDBSpecial() DBSpecial

GetDBSpecial get DBSpecial for currentDBType

type TransBase

type TransBase struct {
	Gid        string `json:"gid"`
	TransType  string `json:"trans_type"`
	Dtm        string `json:"-"`
	CustomData string `json:"custom_data,omitempty"`
	TransOptions

	Steps       []map[string]string `json:"steps,omitempty"`    // use in MSG/SAGA
	Payloads    []string            `json:"payloads,omitempty"` // used in MSG/SAGA
	BinPayloads [][]byte            `json:"-"`
	BranchIDGen `json:"-"`          // used in XA/TCC
	Op          string              `json:"-"` // used in XA/TCC

	QueryPrepared string `json:"query_prepared,omitempty"` // used in MSG
}

TransBase base for all trans

func NewTransBase

func NewTransBase(gid string, transType string, dtm string, branchID string) *TransBase

NewTransBase new a TransBase

func TransBaseFromQuery

func TransBaseFromQuery(qs url.Values) *TransBase

TransBaseFromQuery construct transaction info from request

type TransOptions

type TransOptions struct {
	WaitResult         bool              `json:"wait_result,omitempty" gorm:"-"`
	TimeoutToFail      int64             `json:"timeout_to_fail,omitempty" gorm:"-"` // for trans type: xa, tcc
	RetryInterval      int64             `json:"retry_interval,omitempty" gorm:"-"`  // for trans type: msg saga xa tcc
	PassthroughHeaders []string          `json:"passthrough_headers,omitempty" gorm:"-"`
	BranchHeaders      map[string]string `json:"branch_headers,omitempty" gorm:"-"`
}

TransOptions transaction options

type XaClientBase

type XaClientBase struct {
	Server    string
	Conf      DBConf
	NotifyURL string
}

XaClientBase XaClient/XaGrpcClient base. shared by http and grpc

func (*XaClientBase) HandleCallback

func (xc *XaClientBase) HandleCallback(gid string, branchID string, action string) error

HandleCallback type of commit/rollback callback handler

func (*XaClientBase) HandleGlobalTrans

func (xc *XaClientBase) HandleGlobalTrans(xa *TransBase, callDtm func(string) error, callBusi func() error) (rerr error)

HandleGlobalTrans http/grpc GlobalTransaction的公共方法

func (*XaClientBase) HandleLocalTrans

func (xc *XaClientBase) HandleLocalTrans(xa *TransBase, cb func(*sql.DB) error) (rerr error)

HandleLocalTrans public handler of LocalTransaction via http/grpc

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL