Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: support cross-database delete transactions #180

Merged
merged 2 commits into from
Jul 8, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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{})
}
Loading