Skip to content

Commit

Permalink
feat: support cross-database delete transactions (#180)
Browse files Browse the repository at this point in the history
* feat: support cross-database delete transactions
  • Loading branch information
dk-lockdown committed Jul 8, 2022
1 parent 760e15f commit 90f9d42
Show file tree
Hide file tree
Showing 23 changed files with 323 additions and 85 deletions.
2 changes: 1 addition & 1 deletion docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM golang:1.16.3 as builder
FROM golang:1.18.3 as builder
WORKDIR /app
ADD . /app
RUN make build-local
Expand Down
22 changes: 21 additions & 1 deletion docker/conf/config_shd.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ executors:
- name: redirect
mode: shd
config:
transaction_timeout: 60000
db_groups:
- name: drug_0
load_balance_algorithm: RandomWeight
Expand Down Expand Up @@ -43,6 +44,8 @@ data_source_cluster:
dsn: root:123456@tcp(dbpack-mysql1:3306)/drug?timeout=10s&readTimeout=10s&writeTimeout=10s&parseTime=true&loc=Local&charset=utf8mb4,utf8
ping_interval: 20s
ping_times_for_change_status: 3
filters:
- mysqlDTFilter

- name: drug_1
capacity: 10
Expand All @@ -51,5 +54,22 @@ data_source_cluster:
dsn: root:123456@tcp(dbpack-mysql2:3306)/drug?timeout=60s&readTimeout=60s&writeTimeout=60s&parseTime=true&loc=Local&charset=utf8mb4,utf8
ping_interval: 20s
ping_times_for_change_status: 3
filters:
- mysqlDTFilter

http_listen_port: 9999
filters:
- name: mysqlDTFilter
kind: MysqlDistributedTransaction
conf:
appid: svc
lock_retry_interval: 50ms
lock_retry_times: 30

distributed_transaction:
appid: svc
retry_dead_threshold: 130000
rollback_retry_timeout_unlock_enable: true
etcd_config:
endpoints:
- etcd:2379
http_listen_port: 9999
18 changes: 18 additions & 0 deletions docker/docker-compose-shd.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,22 @@
version: "2.3"
services:
etcd:
image: docker.io/bitnami/etcd:3
container_name: etcd
environment:
- ALLOW_NONE_AUTHENTICATION=yes
- ETCD_NAME=etcd
- ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd:2380
- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
- ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
- ETCD_ADVERTISE_CLIENT_URLS=http://etcd:2379
- ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
- ETCD_INITIAL_CLUSTER=etcd=http://etcd:2380
- ETCD_INITIAL_CLUSTER_STATE=new
networks:
- local
ports:
- "2379:2379"
mysql1:
image: mysql:8.0
container_name: dbpack-mysql1
Expand Down Expand Up @@ -37,6 +54,7 @@ services:
- ./conf/config_shd.yaml:/config.yaml
- ./scripts/wait-for-mysql.sh:/wait-for-mysql.sh
depends_on:
- etcd
- mysql1
- mysql2
command: ["./wait-for-mysql.sh","--","/dbpack", "start", "-c", "config.yaml"]
Expand Down
13 changes: 13 additions & 0 deletions docker/scripts/drug_0.sql
Original file line number Diff line number Diff line change
Expand Up @@ -3581,3 +3581,16 @@ COMMIT;


SET FOREIGN_KEY_CHECKS = 1;

CREATE TABLE `undo_log` (
`id` bigint NOT NULL AUTO_INCREMENT,
`branch_id` bigint NOT NULL,
`xid` varchar(100) NOT NULL,
`context` varchar(128) NOT NULL,
`rollback_info` longblob NOT NULL,
`log_status` int NOT NULL,
`log_created` datetime NOT NULL,
`log_modified` datetime NOT NULL,
`ext` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
);
13 changes: 13 additions & 0 deletions docker/scripts/drug_1.sql
Original file line number Diff line number Diff line change
Expand Up @@ -3579,3 +3579,16 @@ COMMIT;


SET FOREIGN_KEY_CHECKS = 1;

CREATE TABLE `undo_log` (
`id` bigint NOT NULL AUTO_INCREMENT,
`branch_id` bigint NOT NULL,
`xid` varchar(100) NOT NULL,
`context` varchar(128) NOT NULL,
`rollback_info` longblob NOT NULL,
`log_status` int NOT NULL,
`log_created` datetime NOT NULL,
`log_modified` datetime NOT NULL,
`ext` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
);
51 changes: 50 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module github.com/cectc/dbpack

go 1.16
go 1.18

require (
github.com/agiledragon/gomonkey/v2 v2.7.0
Expand Down Expand Up @@ -44,19 +44,68 @@ require (

require (
github.com/BurntSushi/toml v1.1.0 // indirect
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d // indirect
github.com/andybalholm/brotli v1.0.4 // indirect
github.com/benbjohnson/clock v1.3.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/coreos/go-semver v0.3.0 // indirect
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e // indirect
github.com/coreos/go-systemd/v22 v22.1.0 // indirect
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f // indirect
github.com/cznic/golex v0.0.0-20181122101858-9c343928389c // indirect
github.com/danjacques/gofslock v0.0.0-20191023191349-0a45f885bc37 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91 // indirect
github.com/go-logr/logr v1.2.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-ole/go-ole v1.2.4 // indirect
github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect
github.com/gobuffalo/envy v1.7.0 // indirect
github.com/gobuffalo/packd v0.3.0 // indirect
github.com/gobuffalo/packr v1.30.1 // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/gorilla/mux v1.8.0
github.com/grpc-ecosystem/go-grpc-middleware v1.2.2 // indirect
github.com/inconshreveable/mousetrap v1.0.0 // indirect
github.com/joho/godotenv v1.3.0 // indirect
github.com/jonboulle/clockwork v0.2.2 // indirect
github.com/klauspost/compress v1.15.0 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
github.com/opentracing/opentracing-go v1.1.0 // indirect
github.com/pingcap/failpoint v0.0.0-20210316064728-7acb0f0a3dfd // indirect
github.com/pingcap/kvproto v0.0.0-20210806074406-317f69fb54b4 // indirect
github.com/pingcap/parser v0.0.0-20210831085004-b5390aa83f65 // indirect
github.com/pingcap/tipb v0.0.0-20210708040514-0f154bb0dc0f // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/prometheus/client_model v0.2.0 // indirect
github.com/prometheus/common v0.32.1 // indirect
github.com/prometheus/procfs v0.7.3 // indirect
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect
github.com/rogpeppe/go-internal v1.6.1 // indirect
github.com/shirou/gopsutil v3.21.2+incompatible // indirect
github.com/soheilhy/cmux v0.1.5-0.20210205191134-5ec6847320e5 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/tikv/client-go/v2 v2.0.0-alpha.0.20210831090540-391fcd842dc8 // indirect
github.com/tikv/pd v1.1.0-beta.0.20210818112400-0c5667766690 // indirect
github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect
github.com/uber/jaeger-client-go v2.22.1+incompatible // indirect
github.com/uber/jaeger-lib v2.4.1+incompatible // indirect
github.com/valyala/bytebufferpool v1.0.0 // indirect
go.etcd.io/etcd v0.5.0-alpha.5.0.20200824191128-ae9734ed278b // indirect
go.etcd.io/etcd/pkg/v3 v3.5.0-alpha.0 // indirect
go.opentelemetry.io/otel v1.7.0
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.7.0
go.opentelemetry.io/otel/sdk v1.7.0
go.opentelemetry.io/otel/trace v1.7.0
go.uber.org/multierr v1.7.0 // indirect
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect
golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect
golang.org/x/tools v0.1.10 // indirect
google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1 // indirect
google.golang.org/protobuf v1.27.1
gopkg.in/natefinch/lumberjack.v2 v2.0.0
k8s.io/apimachinery v0.23.5
k8s.io/klog/v2 v2.30.0 // indirect
k8s.io/utils v0.0.0-20211116205334-6203023598ed // indirect
)
8 changes: 0 additions & 8 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -201,8 +201,6 @@ github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw
github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
github.com/dop251/goja v0.0.0-20211022113120-dc8c55024d06/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk=
github.com/dop251/goja v0.0.0-20220501172647-e1eca0b61fa9 h1:BXEAWJOT2C6ex9iOzVnrYWMFjTRccNs7p8fpLCLLcm0=
github.com/dop251/goja v0.0.0-20220501172647-e1eca0b61fa9/go.mod h1:TQJQ+ZNyFVvUtUEtCZxBhfWiH7RJqR3EivNmvD6Waik=
github.com/dop251/goja v0.0.0-20220516123900-4418d4575a41 h1:yRPjAkkuR/E/tsVG7QmhzEeEtD3P2yllxsT1/ftURb0=
github.com/dop251/goja v0.0.0-20220516123900-4418d4575a41/go.mod h1:TQJQ+ZNyFVvUtUEtCZxBhfWiH7RJqR3EivNmvD6Waik=
github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y=
Expand Down Expand Up @@ -897,7 +895,6 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
go.etcd.io/bbolt v1.3.5 h1:XAzx9gjCb0Rxj7EoqcClPD1d5ZBxZJk0jbuoPHenBt0=
Expand Down Expand Up @@ -979,7 +976,6 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20220214200702-86341886e292 h1:f+lwQ+GtmgoY+A2YaQxlSOnDjXcQ7ZRLWOHbC6HtRqE=
golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
Expand Down Expand Up @@ -1025,7 +1021,6 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
Expand Down Expand Up @@ -1078,7 +1073,6 @@ golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLd
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
Expand Down Expand Up @@ -1185,7 +1179,6 @@ golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
Expand Down Expand Up @@ -1472,7 +1465,6 @@ k8s.io/apimachinery v0.23.5/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hr
k8s.io/client-go v0.23.5 h1:zUXHmEuqx0RY4+CsnkOn5l0GU+skkRXKGJrhmE2SLd8=
k8s.io/client-go v0.23.5/go.mod h1:flkeinTO1CirYgzMPRWxUCnV0G4Fbu2vLhYCObnt/r4=
k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE=
k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
Expand Down
5 changes: 3 additions & 2 deletions pkg/config/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,9 @@ type (
}

ShardingConfig struct {
DBGroups []*DataSourceRefGroup `yaml:"db_groups" json:"db_groups"`
LogicTables []*LogicTable `yaml:"logic_tables" json:"logic_tables"`
DBGroups []*DataSourceRefGroup `yaml:"db_groups" json:"db_groups"`
LogicTables []*LogicTable `yaml:"logic_tables" json:"logic_tables"`
TransactionTimeout int32 `yaml:"transaction_timeout" json:"transaction_timeout"`
}
)

Expand Down
3 changes: 2 additions & 1 deletion pkg/constant/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,6 @@
package constant

const (
ConfigPathKey = "config"
ConfigPathKey = "config"
TransactionTimeout = "transaction-timeout"
)
16 changes: 10 additions & 6 deletions pkg/executor/sharding.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (

"github.com/cectc/dbpack/pkg/cond"
"github.com/cectc/dbpack/pkg/config"
"github.com/cectc/dbpack/pkg/constant"
"github.com/cectc/dbpack/pkg/filter"
"github.com/cectc/dbpack/pkg/lb"
"github.com/cectc/dbpack/pkg/log"
Expand All @@ -40,6 +41,7 @@ type ShardingExecutor struct {
PreFilters []proto.DBPreFilter
PostFilters []proto.DBPostFilter

config *config.ShardingConfig
all []*DataSourceBrief
optimizer proto.Optimizer
localTransactionMap map[uint32]proto.Tx
Expand Down Expand Up @@ -76,6 +78,7 @@ func NewShardingExecutor(conf *config.Executor) (proto.Executor, error) {
executor := &ShardingExecutor{
PreFilters: make([]proto.DBPreFilter, 0),
PostFilters: make([]proto.DBPostFilter, 0),
config: shardingConfig,
all: all,
optimizer: optimize.NewOptimizer(executors, algorithms, topologies),
localTransactionMap: make(map[uint32]proto.Tx, 0),
Expand Down Expand Up @@ -199,7 +202,7 @@ func (executor *ShardingExecutor) ExecutorComQuery(ctx context.Context, sql stri
plan proto.Plan
err error
)
newCtx, span := tracing.GetTraceSpan(ctx, "sharding_execute_com_query")
newCtx, span := tracing.GetTraceSpan(ctx, "sharding_com_query")
defer span.End()

log.Debugf("query: %s", sql)
Expand Down Expand Up @@ -228,12 +231,11 @@ func (executor *ShardingExecutor) ExecutorComQuery(ctx context.Context, sql stri
}
}
}

plan, err = executor.optimizer.Optimize(newCtx, queryStmt)
if err != nil {
return nil, 0, err
}

proto.WithVariable(newCtx, constant.TransactionTimeout, executor.config.TransactionTimeout)
return plan.Execute(newCtx)
}

Expand All @@ -243,17 +245,19 @@ func (executor *ShardingExecutor) ExecutorComStmtExecute(ctx context.Context, st
plan proto.Plan
err error
)
newCtx, span := tracing.GetTraceSpan(ctx, "sharding_com_stmt_execute")
defer span.End()

for i := 0; i < len(stmt.BindVars); i++ {
parameterID := fmt.Sprintf("v%d", i+1)
args = append(args, stmt.BindVars[parameterID])
}
plan, err = executor.optimizer.Optimize(ctx, stmt.StmtNode, args...)
plan, err = executor.optimizer.Optimize(newCtx, stmt.StmtNode, args...)
if err != nil {
return nil, 0, err
}

return plan.Execute(ctx)
proto.WithVariable(newCtx, constant.TransactionTimeout, executor.config.TransactionTimeout)
return plan.Execute(newCtx)
}

func (executor *ShardingExecutor) ConnectionClose(ctx context.Context) {
Expand Down
32 changes: 4 additions & 28 deletions pkg/filter/dt/filter_mysql.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ package dt
import (
"context"
"encoding/json"
"strings"
"time"

"github.com/cectc/dbpack/pkg/tracing"
Expand All @@ -35,16 +34,13 @@ import (
"github.com/cectc/dbpack/pkg/log"
"github.com/cectc/dbpack/pkg/proto"
"github.com/cectc/dbpack/third_party/parser/ast"
"github.com/cectc/dbpack/third_party/parser/model"
)

const (
mysqlFilter = "MysqlDistributedTransaction"
beforeImage = "BeforeImage"
XID = "x-dbpack-xid"
BranchID = "x-dbpack-branch-id"
hintXID = "XID"
hintGlobalLock = "GlobalLock"
mysqlFilter = "MysqlDistributedTransaction"
beforeImage = "BeforeImage"
XID = "x-dbpack-xid"
BranchID = "x-dbpack-branch-id"
)

type _mysqlFactory struct {
Expand Down Expand Up @@ -211,26 +207,6 @@ func (f *_mysqlFilter) registerBranchTransaction(ctx context.Context, xid, resou
return branchID, err
}

func hasXIDHint(hints []*ast.TableOptimizerHint) (bool, string) {
for _, hint := range hints {
if strings.EqualFold(hint.HintName.String(), hintXID) {
hintData := hint.HintData.(model.CIStr)
xid := hintData.String()
return true, xid
}
}
return false, ""
}

func hasGlobalLockHint(hints []*ast.TableOptimizerHint) bool {
for _, hint := range hints {
if strings.EqualFold(hint.HintName.String(), hintGlobalLock) {
return true
}
}
return false
}

func init() {
filter.RegistryFilterFactory(mysqlFilter, &_mysqlFactory{})
}

0 comments on commit 90f9d42

Please sign in to comment.