From 9d07872fa9efde1a4e910abf96588ea0b69d20d5 Mon Sep 17 00:00:00 2001 From: Tom Yu Date: Sat, 27 Jul 2024 17:36:07 +0800 Subject: [PATCH 1/4] fix: GTID Truncation Issue and Improve Consistency in Checkpoint Management (#1644) * fix: cannot get latest GTID when size exceed 1024 * fix license * move log to proper position --- go.mod | 47 +++++-- go.sum | 89 ++++++------- licenses/LICENSE_OF_ILOGTAIL_DEPENDENCIES.md | 11 +- plugins/input/canal/input_canal.go | 129 ++++++++++--------- 4 files changed, 155 insertions(+), 121 deletions(-) diff --git a/go.mod b/go.mod index ad75169e8d..d8b66c2110 100644 --- a/go.mod +++ b/go.mod @@ -19,10 +19,9 @@ require ( github.com/elastic/beats/v7 v7.7.1 github.com/elastic/go-elasticsearch/v8 v8.6.0 github.com/elastic/go-lumber v0.1.0 - github.com/go-mysql-org/go-mysql v1.3.0 + github.com/go-mysql-org/go-mysql v1.8.0 github.com/go-ping/ping v0.0.0-20211130115550-779d1e919534 - github.com/go-sql-driver/mysql v1.6.0 - github.com/gofrs/uuid v4.2.0+incompatible // indirect + github.com/go-sql-driver/mysql v1.7.1 github.com/gogo/protobuf v1.3.2 github.com/gosnmp/gosnmp v1.34.0 github.com/grafana/loki-client-go v0.0.0-20230116142646-e7494d0ef70c @@ -53,7 +52,8 @@ require ( go.opentelemetry.io/collector/consumer v0.66.0 go.opentelemetry.io/collector/pdata v0.66.0 go.opentelemetry.io/proto/otlp v0.19.0 - go.uber.org/atomic v1.10.0 + go.uber.org/atomic v1.11.0 + go.uber.org/multierr v1.11.0 golang.org/x/sys v0.17.0 google.golang.org/grpc v1.53.0 google.golang.org/protobuf v1.31.0 @@ -75,11 +75,18 @@ require ( github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.1 // indirect github.com/AthenZ/athenz v1.10.39 // indirect + github.com/BurntSushi/toml v1.3.2 // indirect github.com/ClickHouse/ch-go v0.51.2 // indirect github.com/DataDog/zstd v1.5.0 // indirect + github.com/Masterminds/semver v1.5.0 // indirect + github.com/Microsoft/go-winio v0.5.2 // indirect + github.com/Microsoft/hcsshim v0.9.4 // indirect + github.com/VictoriaMetrics/fasthttp v1.1.0 // indirect + github.com/VictoriaMetrics/metrics v1.23.0 // indirect + github.com/VictoriaMetrics/metricsql v0.45.0 // indirect + github.com/andrewkroh/sys v0.0.0-20151128191922-287798fe3e43 // indirect github.com/andybalholm/brotli v1.0.4 // indirect github.com/ardielle/ardielle-go v1.5.2 // indirect - github.com/benbjohnson/clock v1.3.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver v3.5.1+incompatible // indirect github.com/cilium/ebpf v0.7.0 // indirect @@ -162,6 +169,8 @@ require ( github.com/containers/ocicrypt v1.1.3 // indirect github.com/coreos/go-systemd/v22 v22.4.0 // indirect github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f // indirect + github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548 // indirect + github.com/danieljoos/wincred v1.1.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/dlclark/regexp2 v1.7.0 github.com/docker/docker v20.10.23+incompatible @@ -176,6 +185,11 @@ require ( github.com/go-logfmt/logfmt v0.5.1 // indirect github.com/go-logr/logr v1.2.3 // indirect github.com/go-ole/go-ole v1.2.6 // indirect + github.com/go-openapi/jsonpointer v0.19.5 // indirect + github.com/go-openapi/jsonreference v0.20.0 // indirect + github.com/go-openapi/swag v0.21.1 // indirect + github.com/goccy/go-json v0.10.2 // indirect + github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/godbus/dbus/v5 v5.0.6 // indirect github.com/gogo/googleapis v1.4.0 // indirect github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect @@ -217,11 +231,20 @@ require ( github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 // indirect github.com/opencontainers/selinux v1.10.1 // indirect github.com/oschwald/maxminddb-golang v1.2.1 // indirect - github.com/pingcap/log v0.0.0-20210625125904-98ed8e2eb1c7 // indirect + github.com/paulmach/orb v0.8.0 // indirect + github.com/pelletier/go-toml v1.9.3 // indirect + github.com/pierrec/lz4 v2.6.1+incompatible // indirect + github.com/pierrec/lz4/v4 v4.1.21 // indirect + github.com/pingcap/errors v0.11.5-0.20221009092201-b66cddb77c32 // indirect + github.com/pingcap/failpoint v0.0.0-20220801062533-2eaa32854a6c // indirect + github.com/pingcap/log v1.1.1-0.20230317032135-a0d097d16e22 // indirect + github.com/pingcap/tidb/pkg/parser v0.0.0-20231103042308-035ad5ccbe67 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_model v0.3.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect - github.com/satori/go.uuid v1.2.1-0.20181028125025-b2ce2384e17b // indirect + github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect + github.com/richardartoul/molecule v1.0.0 // indirect + github.com/segmentio/asm v1.2.0 // indirect github.com/shopspring/decimal v1.3.1 // indirect github.com/siddontang/go-log v0.0.0-20180807004314-8d05993dda07 // indirect github.com/smartystreets/assertions v1.2.0 // indirect @@ -230,9 +253,13 @@ require ( github.com/valyala/bytebufferpool v1.0.0 // indirect go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1 // indirect go.opencensus.io v0.24.0 // indirect - go.uber.org/multierr v1.9.0 - go.uber.org/zap v1.24.0 // indirect + go.opentelemetry.io/otel v1.11.2 // indirect + go.opentelemetry.io/otel/trace v1.11.2 // indirect + go.uber.org/goleak v1.2.1 // indirect + go.uber.org/zap v1.26.0 // indirect golang.org/x/crypto v0.19.0 // indirect + golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect + golang.org/x/mod v0.13.0 // indirect golang.org/x/net v0.21.0 // indirect golang.org/x/oauth2 v0.5.0 // indirect golang.org/x/sync v0.6.0 // indirect @@ -243,7 +270,7 @@ require ( google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 // indirect gopkg.in/birkirb/loggers.v1 v1.0.3 // indirect gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect + gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/square/go-jose.v2 v2.5.1 // indirect gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.1 diff --git a/go.sum b/go.sum index 614c35de91..c71dd27c1e 100644 --- a/go.sum +++ b/go.sum @@ -90,8 +90,8 @@ github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZ github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v0.4.1 h1:GaI7EiDXDRfa8VshkTj7Fym7ha+y8/XxIgD2okUIjLw= -github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= +github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ClickHouse/ch-go v0.51.2 h1:PesdqjUImi21U61yPKsDhfer8wiQ3geTsjdjZzXd/3s= github.com/ClickHouse/ch-go v0.51.2/go.mod h1:z+/hEezvvHvRMV/I00CaXBnxOx+td4zRe7HJpBYLwGU= @@ -103,7 +103,8 @@ github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwS github.com/IBM/sarama v1.42.2 h1:VoY4hVIZ+WQJ8G9KNY/SQlWguBQXQ9uvFPOnrcu8hEw= github.com/IBM/sarama v1.42.2/go.mod h1:FLPGUGwYqEs62hq2bVG6Io2+5n+pS6s/WOXVKWSLFtE= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Masterminds/semver v1.4.2 h1:WBLTQ37jOCzSLtXNdoo8bNM8876KhNqOKvrlGITgsTc= +github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= +github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc= github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= @@ -193,8 +194,7 @@ github.com/aws/aws-sdk-go v1.43.31 h1:yJZIr8nMV1hXjAvvOLUFqZRJcHV7udPQBfhJqawDzI github.com/aws/aws-sdk-go v1.43.31/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= -github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= -github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -409,12 +409,8 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3 github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= -github.com/cznic/golex v0.0.0-20181122101858-9c343928389c/go.mod h1:+bmmJDNmKlhWNG+gwWCkaBoTy39Fs+bzRxVBzoTQbIc= +github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548 h1:iwZdTE0PVqJCos1vaoKsclOGD3ADKpshg3SRtYBbwso= github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548/go.mod h1:e6NPNENfs9mPDVNRekM7lKScauxd5kXTr1Mfyig6TDM= -github.com/cznic/parser v0.0.0-20160622100904-31edd927e5b1/go.mod h1:2B43mz36vGZNZEwkWi8ayRSSUXLfjL8OkbzwW4NcPMM= -github.com/cznic/sortutil v0.0.0-20181122101858-f5f958428db8/go.mod h1:q2w6Bg5jeox1B+QkJ6Wp/+Vn0G/bo3f1uY7Fn3vivIQ= -github.com/cznic/strutil v0.0.0-20171016134553-529a34b1c186/go.mod h1:AHHPPPXTw0h6pVabbcbyGRK1DckRn7r/STdZEeIDzZc= -github.com/cznic/y v0.0.0-20170802143616-045f81c6662a/go.mod h1:1rk5VM7oSnA4vjp+hrLQ3HWHa+Y4yPCa3/CsJrcNnvs= github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ= github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= @@ -572,8 +568,8 @@ github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jTKKwI= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-mysql-org/go-mysql v1.3.0 h1:lpNqkwdPzIrYSZGdqt8HIgAXZaK6VxBNfr8f7Z4FgGg= -github.com/go-mysql-org/go-mysql v1.3.0/go.mod h1:3lFZKf7l95Qo70+3XB2WpiSf9wu2s3na3geLMaIIrqQ= +github.com/go-mysql-org/go-mysql v1.8.0 h1:bN+/Q5yyQXQOAabXPkI3GZX43w4Tsj2DIthjC9i6CkQ= +github.com/go-mysql-org/go-mysql v1.8.0/go.mod h1:kwbF156Z9Sy8amP3E1SZp7/s/0PuJj/xKaOWToQiq0Y= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-openapi/analysis v0.21.2/go.mod h1:HZwRk4RRisyG8vx2Oe6aqeSQcoxRp47Xkp3+K6q+LdY= @@ -615,11 +611,10 @@ github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTM github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= -github.com/go-sql-driver/mysql v1.3.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= -github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= +github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= @@ -648,6 +643,8 @@ github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWe github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/goccy/go-yaml v1.9.5/go.mod h1:U/jl18uSupI5rdI2jmuCswEA2htH9eXfferR3KfscvA= github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= @@ -886,8 +883,6 @@ github.com/iLogtail/jfr-parser v0.6.0 h1:dNaQ0Ng2BLE5uxrhUQwtx1q7O9LIQFpMthl3SV3 github.com/iLogtail/jfr-parser v0.6.0/go.mod h1:ZMcbJjfDkOwElEK8CvUJbpetztRWRXszCmf5WU0erV8= github.com/iLogtail/metrics v1.23.0-ilogtail h1:WHhiXtMy5+HWiPpDwO7a0zkMjPd7IPa5euF07LH5h6g= github.com/iLogtail/metrics v1.23.0-ilogtail/go.mod h1:rAr/llLpEnAdTehiNlUxKgnjcOuROSzpw0GvjpEbvFc= -github.com/iLogtail/parser v0.0.0-20210415081931-48e7f467fd74-ilogtail h1:HTafOET9UvmNpjFY/Z/E1YvLFpku4HSKP9V4PrzaWwE= -github.com/iLogtail/parser v0.0.0-20210415081931-48e7f467fd74-ilogtail/go.mod h1:xZC8I7bug4GJ5KtHhgAikjTfU4kBv1Sbo3Pf1MZ6lVw= github.com/iLogtail/pyroscope-lib v0.35.2-ilogtail h1:n+om7Idv1ftoVOiqmL4CRWGeoj1v8TTQa7V809XiHT4= github.com/iLogtail/pyroscope-lib v0.35.2-ilogtail/go.mod h1:IpElNUA9ousagl2w05BZbzGxmd8cOERYA2vZ+DoznlQ= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= @@ -991,7 +986,6 @@ github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeY github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/jmoiron/sqlx v1.3.3/go.mod h1:2BljVx/86SuTyjE+aPYlHCTNvZrnJXghYGpNiXLBMCQ= github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901 h1:rp+c0RAYOWj8l6qbCUTSiRLG/iKnW3K3/QfPPuSsBt4= github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901/go.mod h1:Z86h9688Y0wesXCyonoVr47MasHilkuLMqGhRZ4Hpak= @@ -1106,7 +1100,6 @@ github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzp github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= -github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= @@ -1302,15 +1295,16 @@ github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8/go.mod h1:B1+S9LNcuM github.com/pingcap/check v0.0.0-20200212061837-5e12011dc712 h1:R8gStypOBmpnHEx1qi//SaqxJVI4inOqljg/Aj5/390= github.com/pingcap/check v0.0.0-20200212061837-5e12011dc712/go.mod h1:PYMCGwN0JHjoqGr3HrZoD+b8Tgx8bKnArhSq8YVzUMc= github.com/pingcap/errors v0.11.0/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= -github.com/pingcap/errors v0.11.5-0.20201029093017-5a7df2af2ac7/go.mod h1:G7x87le1poQzLB/TqvTJI2ILrSgobnq4Ut7luOwvfvI= -github.com/pingcap/errors v0.11.5-0.20201126102027-b0a155152ca3/go.mod h1:G7x87le1poQzLB/TqvTJI2ILrSgobnq4Ut7luOwvfvI= -github.com/pingcap/errors v0.11.5-0.20210425183316-da1aaba5fb63 h1:+FZIDR/D97YOPik4N4lPDaUcLDF/EQPogxtlHB2ZZRM= -github.com/pingcap/errors v0.11.5-0.20210425183316-da1aaba5fb63/go.mod h1:X2r9ueLEUZgtx2cIogM0v4Zj5uvvzhuuiu7Pn8HzMPg= +github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= +github.com/pingcap/errors v0.11.5-0.20221009092201-b66cddb77c32 h1:m5ZsBa5o/0CkzZXfXLaThzKuR85SnHHetqBCpzQ30h8= +github.com/pingcap/errors v0.11.5-0.20221009092201-b66cddb77c32/go.mod h1:X2r9ueLEUZgtx2cIogM0v4Zj5uvvzhuuiu7Pn8HzMPg= +github.com/pingcap/failpoint v0.0.0-20220801062533-2eaa32854a6c h1:CgbKAHto5CQgWM9fSBIvaxsJHuGP0uM74HXtv3MyyGQ= +github.com/pingcap/failpoint v0.0.0-20220801062533-2eaa32854a6c/go.mod h1:4qGtCB0QK0wBzKtFEGDhxXnSnbQApw1gc9siScUl8ew= github.com/pingcap/log v0.0.0-20191012051959-b742a5d432e9/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8= -github.com/pingcap/log v0.0.0-20200511115504-543df19646ad/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8= -github.com/pingcap/log v0.0.0-20210317133921-96f4fcab92a4/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8= -github.com/pingcap/log v0.0.0-20210625125904-98ed8e2eb1c7 h1:k2BbABz9+TNpYRwsCCFS8pEEnFVOdbgEjL/kTlLuzZQ= -github.com/pingcap/log v0.0.0-20210625125904-98ed8e2eb1c7/go.mod h1:8AanEdAHATuRurdGxZXBz0At+9avep+ub7U1AGYLIMM= +github.com/pingcap/log v1.1.1-0.20230317032135-a0d097d16e22 h1:2SOzvGvE8beiC1Y4g9Onkvu6UmuBBOeWRGQEjJaT/JY= +github.com/pingcap/log v1.1.1-0.20230317032135-a0d097d16e22/go.mod h1:DWQW5jICDR7UJh4HtxXSM20Churx4CQL0fwL/SoOSA4= +github.com/pingcap/tidb/pkg/parser v0.0.0-20231103042308-035ad5ccbe67 h1:m0RZ583HjzG3NweDi4xAcK54NBBPJh+zXp5Fp60dHtw= +github.com/pingcap/tidb/pkg/parser v0.0.0-20231103042308-035ad5ccbe67/go.mod h1:yRkiqLFwIqibYg2P7h4bclHjHcJiIFRLKhGRyBcKYus= github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -1390,7 +1384,8 @@ github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40T github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/richardartoul/molecule v1.0.0 h1:+LFA9cT7fn8KF39zy4dhOnwcOwRoqKiBkPqKqya+8+U= github.com/richardartoul/molecule v1.0.0/go.mod h1:uvX/8buq8uVeiZiFht+0lqSLBHF+uGV8BrTv8W/SIwk= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= @@ -1398,8 +1393,8 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= @@ -1410,7 +1405,6 @@ github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFo github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= github.com/safchain/ethtool v0.0.0-20210803160452-9aa261dae9b1/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= @@ -1421,6 +1415,7 @@ github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921/go.mod github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI= github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= @@ -1659,29 +1654,30 @@ go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= -go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/automaxprocs v1.5.1/go.mod h1:BF4eumQw0P9GtnuxxovUd06vwm1o18oMzFtK66vU6XU= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= +go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= -go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= +go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.12.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= -go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= -go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= +go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180214000028-650f4a345ab4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1726,6 +1722,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1739,7 +1737,6 @@ golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRu golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= @@ -1756,9 +1753,8 @@ golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/net v0.0.0-20180406214816-61147c48b25b/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= +golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= 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= @@ -2103,7 +2099,6 @@ golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20200916195026-c9a70fc28ce3/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201125231158-b5590deeca9b/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -2119,7 +2114,6 @@ golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyj golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -2327,10 +2321,9 @@ gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:a gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/mgo.v2 v2.0.0-20160818015218-f2b6f6c918c4 h1:hILp2hNrRnYjZpmIbx70psAHbBSEcQ1NIzDcUbJ1b6g= -gopkg.in/mgo.v2 v2.0.0-20160818015218-f2b6f6c918c4/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= -gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= diff --git a/licenses/LICENSE_OF_ILOGTAIL_DEPENDENCIES.md b/licenses/LICENSE_OF_ILOGTAIL_DEPENDENCIES.md index 0973d59204..627fe62425 100644 --- a/licenses/LICENSE_OF_ILOGTAIL_DEPENDENCIES.md +++ b/licenses/LICENSE_OF_ILOGTAIL_DEPENDENCIES.md @@ -5,6 +5,8 @@ When distributed in a binary form, iLogtail may contain portions of the followin ## Apache 2.0 licenses - [github.com/openkruise/kruise-api](https://pkg.go.dev/github.com/openkruise/kruise-api?tab=licenses) +- [github.com/pingcap/failpoint](https://pkg.go.dev/github.com/pingcap/failpoint?tab=licenses) +- [github.com/pingcap/tidb/pkg/parser](https://pkg.go.dev/github.com/pingcap/tidb/pkg/parser?tab=licenses) - [sigs.k8s.io/gateway-api](https://pkg.go.dev/sigs.k8s.io/gateway-api?tab=licenses) - [cloud.google.com/go/compute/metadata](https://pkg.go.dev/cloud.google.com/go/compute/metadata?tab=licenses) - [github.com/containerd/cgroups](https://pkg.go.dev/github.com/containerd/cgroups?tab=licenses) @@ -100,6 +102,7 @@ When distributed in a binary form, iLogtail may contain portions of the followin ## BSD licenses +- [github.com/cznic/mathutil](https://pkg.go.dev/github.com/cznic/mathutil?tab=licenses) - [github.com/klauspost/compress](https://pkg.go.dev/github.com/klauspost/compress?tab=licenses) - [github.com/danwakefield/fnmatch](https://pkg.go.dev/github.com/danwakefield/fnmatch?tab=licenses) - [github.com/denisenkom/go-mssqldb](https://pkg.go.dev/github.com/denisenkom/go-mssqldb?tab=licenses) @@ -107,6 +110,7 @@ When distributed in a binary form, iLogtail may contain portions of the followin - [github.com/knz/strtime](https://pkg.go.dev/github.com/knz/strtime?tab=licenses) - [github.com/pingcap/errors](https://pkg.go.dev/github.com/pingcap/errors?tab=licenses) - [github.com/pkg/errors](https://pkg.go.dev/github.com/pkg/errors?tab=licenses) +- [github.com/remyoudompheng/bigfft](https://pkg.go.dev/github.com/remyoudompheng/bigfft?tab=licenses) - [github.com/syndtr/goleveldb](https://pkg.go.dev/github.com/syndtr/goleveldb?tab=licenses) - [github.com/rcrowley/go-metrics](https://pkg.go.dev/github.com/rcrowley/go-metrics?tab=licenses) - [github.com/cihub/seelog](https://pkg.go.dev/github.com/cihub/seelog?tab=licenses) @@ -129,6 +133,7 @@ When distributed in a binary form, iLogtail may contain portions of the followin - [github.com/spaolacci/murmur3](https://pkg.go.dev/github.com/spaolacci/murmur3?tab=licenses) - [github.com/bits-and-blooms/bitset](https://pkg.go.dev/github.com/bits-and-blooms/bitset?tab=licenses) - [golang.org/x/crypto](https://pkg.go.dev/golang.org/x/crypto?tab=licenses) +- [golang.org/x/exp](https://pkg.go.dev/golang.org/x/exp?tab=licenses) - [golang.org/x/net](https://pkg.go.dev/golang.org/x/net?tab=licenses) - [golang.org/x/oauth2](https://pkg.go.dev/golang.org/x/oauth2?tab=licenses) - [golang.org/x/sync](https://pkg.go.dev/golang.org/x/sync?tab=licenses) @@ -149,11 +154,13 @@ When distributed in a binary form, iLogtail may contain portions of the followin ## MIT licenses - [github.com/valyala/gozstd](https://pkg.go.dev/github.com/valyala/gozstd?tab=licenses) +- [github.com/goccy/go-json](https://pkg.go.dev/github.com/goccy/go-json?tab=licenses) - [github.com/gofrs/uuid](https://pkg.go.dev/github.com/gofrs/uuid?tab=licenses) - [github.com/go-kit/log](https://pkg.go.dev/github.com/go-kit/log?tab=licenses) - [github.com/narqo/go-dogstatsd-parser](https://pkg.go.dev/github.com/narqo/go-dogstatsd-parser?tab=licenses) - [sigs.k8s.io/yaml](https://pkg.go.dev/sigs.k8s.io/yaml?tab=licenses) - [github.com/BurntSushi/toml](https://pkg.go.dev/github.com/BurntSushi/toml?tab=licenses) +- [github.com/Masterminds/semver](https://pkg.go.dev/github.com/Masterminds/semver?tab=licenses) - [github.com/Microsoft/go-winio](https://pkg.go.dev/github.com/Microsoft/go-winio?tab=licenses) - [github.com/Microsoft/hcsshim](https://pkg.go.dev/github.com/Microsoft/hcsshim?tab=licenses) - [github.com/IBM/sarama](https://pkg.go.dev/github.com/IBM/sarama?tab=licenses) @@ -186,7 +193,6 @@ When distributed in a binary form, iLogtail may contain portions of the followin - [github.com/mitchellh/mapstructure](https://pkg.go.dev/github.com/mitchellh/mapstructure?tab=licenses) - [github.com/paulbellamy/ratecounter](https://pkg.go.dev/github.com/paulbellamy/ratecounter?tab=licenses) - [github.com/richardartoul/molecule](https://pkg.go.dev/github.com/richardartoul/molecule?tab=licenses) -- [github.com/satori/go.uuid](https://pkg.go.dev/github.com/satori/go.uuid?tab=licenses) - [github.com/shopspring/decimal](https://pkg.go.dev/github.com/shopspring/decimal?tab=licenses) - [github.com/siddontang/go](https://pkg.go.dev/github.com/siddontang/go?tab=licenses) - [github.com/siddontang/go-log](https://pkg.go.dev/github.com/siddontang/go-log?tab=licenses) @@ -218,10 +224,8 @@ When distributed in a binary form, iLogtail may contain portions of the followin - [github.com/blang/semver](https://pkg.go.dev/github.com/blang/semver?tab=licenses) - [github.com/cilium/ebpf](https://pkg.go.dev/github.com/cilium/ebpf?tab=licenses) - [go.etcd.io/bbolt](https://pkg.go.dev/go.etcd.io/bbolt?tab=licenses) -- [github.com/benbjohnson/clock](https://pkg.go.dev/github.com/benbjohnson/clock?tab=licenses) - [github.com/ClickHouse/clickhouse-go](https://pkg.go.dev/github.com/ClickHouse/clickhouse-go?tab=licenses) - [github.com/andybalholm/brotli](https://pkg.go.dev/github.com/andybalholm/brotli?tab=licenses) -- [github.com/benbjohnson/clock](https://pkg.go.dev/github.com/benbjohnson/clock?tab=licenses) - [github.com/go-faster/city](https://pkg.go.dev/github.com/go-faster/city?tab=licenses) - [github.com/paulmach/orb](https://pkg.go.dev/github.com/paulmach/orb?tab=licenses) - [github.com/segmentio/asm](https://pkg.go.dev/github.com/segmentio/asm?tab=licenses) @@ -259,7 +263,6 @@ When distributed in a binary form, iLogtail may contain portions of the followin - [github.com/iLogtail/go-mysql fork from github.com/siddontang/go-mysql](http://github.com/iLogtail/go-mysql) based on MIT - [github.com/iLogtail/jfr-parser fork from github.com/pyroscope-io/jfr-parser](http://github.com/iLogtail/jfr-parser) based on Apache-2.0 - [github.com/iLogtail/metrics fork from github.com/VictoriaMetrics/metrics](http://github.com/iLogtail/metrics) based on MIT -- [github.com/iLogtail/parser fork from github.com/pingcap/parser](http://github.com/iLogtail/parser) based on Apache-2.0 - [github.com/iLogtail/pyroscope-lib fork from github.com/pyroscope-io/pyroscope](http://github.com/iLogtail/pyroscope-lib) based on Apache-2.0 - [github.com/iLogtail/gonvml fork from github.com/mindprince/gonvml](https://github.com/iLogtail/gonvml) based on Apache-2.0 - [github.com/iLogtail/handy fork from github.com/streadway/handy](http://github.com/iLogtail/handy) based on BSD-2-Clause diff --git a/plugins/input/canal/input_canal.go b/plugins/input/canal/input_canal.go index 710baa345d..bffe70a305 100644 --- a/plugins/input/canal/input_canal.go +++ b/plugins/input/canal/input_canal.go @@ -66,7 +66,7 @@ func (p *LogCanal) Fire(e *canalLog.Entry) error { type CheckPoint struct { GTID string FileName string - Offset int + Offset uint32 ID int } @@ -119,7 +119,7 @@ type ServiceCanal struct { // - If any of them are invalid, plugins starts synchronization from latest (failover). StartGTID string StartBinName string - StartBinLogPos int + StartBinLogPos uint32 HeartBeatPeriod int ReadTimeout int EnableDDL bool @@ -148,11 +148,10 @@ type ServiceCanal struct { waitGroup sync.WaitGroup isGTIDEnabled bool - nextRowEventGTID string + nextRowEventGTID string // update before data is consumed config *canal.Config canal *canal.Canal - checkpoint CheckPoint - lastOffsetString string + checkpoint CheckPoint // update checkpoint after data is consumed context pipeline.Context collector pipeline.Collector lastCheckPointTime time.Time @@ -263,23 +262,18 @@ ValueLoop: sc.collector.AddData(nil, packedData) } -func (sc *ServiceCanal) OnRotate(r *replication.RotateEvent) error { +func (sc *ServiceCanal) OnRotate(_ *replication.EventHeader, r *replication.RotateEvent) error { logger.Info(sc.context.GetRuntimeContext(), "bin log file rotate", string(r.NextLogName), "pos", r.Position) sc.lastBinLogMetric.Set(string(r.NextLogName)) sc.rotateCounter.Add(1) - sc.checkpoint.FileName = string(r.NextLogName) - sc.checkpoint.Offset = int(r.Position) - sc.lastOffsetString = strconv.Itoa(int(r.Position)) - sc.saveCheckPoint() return nil } // OnDDL... -func (sc *ServiceCanal) OnDDL(pos mysql.Position, e *replication.QueryEvent) error { - // logger.Debug("on ddl event", *e) +func (sc *ServiceCanal) OnDDL(_ *replication.EventHeader, pos mysql.Position, e *replication.QueryEvent) error { + logger.Debugf(sc.context.GetRuntimeContext(), "[CANAL_DEBUG] OnDDL:%v GTID:%v Pos:%v", string(e.Query), sc.nextRowEventGTID, pos.Pos) sc.ddlCounter.Add(1) if !sc.EnableDDL { - sc.syncCheckpointWithCanal() return nil } values := map[string]string{ @@ -291,13 +285,13 @@ func (sc *ServiceCanal) OnDDL(pos mysql.Position, e *replication.QueryEvent) err "StatusVars": string(e.StatusVars), "_event_": "ddl", } + nextOffsetString := strconv.FormatUint(uint64(pos.Pos), 10) if sc.EnableGTID { values["_gtid_"] = sc.nextRowEventGTID values["_filename_"] = sc.checkpoint.FileName - values["_offset_"] = sc.lastOffsetString + values["_offset_"] = nextOffsetString } sc.addData(values) - sc.syncCheckpointWithCanal() return nil } @@ -349,13 +343,14 @@ func (sc *ServiceCanal) columnValueToString(column *schema.TableColumn, rowVal i // OnRow processes the row event, according user's config, constructs data to send. func (sc *ServiceCanal) OnRow(e *canal.RowsEvent) error { - // logger.Debug("OnRow", *e, "GTID", sc.nextRowEventGTID) + logger.Debug(sc.context.GetRuntimeContext(), "[CANAL_DEBUG] host", sc.Host, "db", e.Table.Schema, "table", e.Table.Name, "action", e.Action, "GTID", sc.nextRowEventGTID) sc.rowCounter.Add(1) values := map[string]string{"_host_": sc.Host, "_db_": e.Table.Schema, "_table_": e.Table.Name, "_event_": "row_" + e.Action, "_id_": strconv.Itoa(sc.checkpoint.ID)} + nextOffsetString := strconv.FormatUint(uint64(e.Header.LogPos), 10) if sc.EnableGTID { values["_gtid_"] = sc.nextRowEventGTID values["_filename_"] = sc.checkpoint.FileName - values["_offset_"] = sc.lastOffsetString + values["_offset_"] = nextOffsetString } if sc.EnableEventMeta && e.Header != nil { values["_event_time_"] = strconv.Itoa(int(e.Header.Timestamp)) @@ -365,12 +360,10 @@ func (sc *ServiceCanal) OnRow(e *canal.RowsEvent) error { } if e.Action == canal.UpdateAction { if !sc.EnableUpdate { - sc.syncCheckpointWithCanal() return nil } if len(e.Rows)%2 != 0 { logger.Error(sc.context.GetRuntimeContext(), "CANAL_INVALID_ALARM", "invalid update value count", len(e.Rows)) - sc.syncCheckpointWithCanal() return nil } for i := 0; i < len(e.Rows); i += 2 { @@ -421,12 +414,10 @@ func (sc *ServiceCanal) OnRow(e *canal.RowsEvent) error { } else { if e.Action == canal.DeleteAction { if !sc.EnableDelete { - sc.syncCheckpointWithCanal() return nil } } else { if !sc.EnableInsert { - sc.syncCheckpointWithCanal() return nil } } @@ -461,13 +452,23 @@ func (sc *ServiceCanal) OnRow(e *canal.RowsEvent) error { } // Update checkpoint. - sc.syncCheckpointWithCanal() sc.checkpoint.ID++ return nil } -func (sc *ServiceCanal) OnXID(p mysql.Position) error { - // logger.Debug("OnXID", p) +/* + What is an XID_EVENT? + An XID_EVENT marks the end of a transaction that has been committed. It signifies that the transaction has been fully completed and can be safely replicated to a slave server. When a transaction is committed in a MySQL server, an XID_EVENT is written to the binlog to signify that the commit operation has been successfully completed. + + When will an XID_EVENT be triggered? + An XID_EVENT is triggered and written to the binlog in the following scenarios: + + Commit of a Transaction: When a transaction is committed in InnoDB or another transactional storage engine, an XID_EVENT is written to the binlog. This happens at the end of the transaction, indicating that all changes within that transaction are now complete and consistent. + + Replication: During replication, the slave server reads the XID_EVENT to understand that a transaction has been committed on the master. This helps in maintaining transactional consistency between the master and the slave. +*/ +func (sc *ServiceCanal) OnXID(_ *replication.EventHeader, p mysql.Position) error { + logger.Debugf(sc.context.GetRuntimeContext(), "[CANAL_DEBUG] OnXID Pos:%v", p.String()) sc.xgidCounter.Add(1) return nil } @@ -480,30 +481,41 @@ func (sc *ServiceCanal) OnXID(p mysql.Position) error { // calls to OnRow will be filtered. So, if plugin restarts before the next // OnRow call comes, it will rerun from a old checkpoint. // But this should be trivial for cases that valid data comes continuously. -func (sc *ServiceCanal) OnGTID(s mysql.GTIDSet) error { - // logger.Debug("OnGTID", s) +func (sc *ServiceCanal) OnGTID(_ *replication.EventHeader, e mysql.BinlogGTIDEvent) error { sc.xgidCounter.Add(1) + s, err := e.GTIDNext() + if err != nil { + return err + } + logger.Debugf(sc.context.GetRuntimeContext(), "[CANAL_DEBUG] OnGTID: %v", s.String()) sc.nextRowEventGTID = s.String() return nil } -func (sc *ServiceCanal) OnPosSynced(pos mysql.Position, _ mysql.GTIDSet, force bool) error { - // logger.Debug("OnPosSynced", pos, force) +// OnPosSynced is called right after RotateEvent, XIDEvent and DDLEvent +// If our handle do not return err, we do not need to save checkpoint in those handlers +func (sc *ServiceCanal) OnPosSynced(_ *replication.EventHeader, pos mysql.Position, gset mysql.GTIDSet, force bool) error { + logger.Debugf(sc.context.GetRuntimeContext(), "[CANAL_DEBUG] OnPosSynced: %v", gset.String()) sc.syncCounter.Add(1) sc.checkpoint.FileName = pos.Name - sc.checkpoint.Offset = int(pos.Pos) - sc.lastOffsetString = strconv.Itoa(int(pos.Pos)) + sc.checkpoint.Offset = pos.Pos + if sc.checkpoint.GTID != "" { + sc.checkpoint.GTID = gset.String() + } nowTime := time.Now() // save checkpoint 3 second per time if nowTime.Sub(sc.lastCheckPointTime) > time.Duration(3)*time.Second || - (force && nowTime.Sub(sc.lastCheckPointTime) > time.Duration(1)*time.Second) { - sc.lastCheckPointTime = nowTime + force { sc.saveCheckPoint() } return nil } -func (sc *ServiceCanal) OnTableChanged(schema string, table string) error { +func (sc *ServiceCanal) OnRowsQueryEvent(_ *replication.RowsQueryEvent) error { + return nil +} + +func (sc *ServiceCanal) OnTableChanged(_ *replication.EventHeader, _ string, _ string) error { return nil } @@ -527,16 +539,10 @@ func (sc *ServiceCanal) initCheckPoint() { func (sc *ServiceCanal) saveCheckPoint() { sc.checkpointCounter.Add(1) + sc.lastCheckPointTime = time.Now() _ = sc.context.SaveCheckPointObject("mysql_canal", &sc.checkpoint) } -func (sc *ServiceCanal) syncCheckpointWithCanal() { - gset := sc.canal.SyncedGTIDSet() - if gset != nil { - sc.checkpoint.GTID = gset.String() - } -} - // Collect takes in an accumulator and adds the metrics that the Input // gathers. This is called every "interval" func (sc *ServiceCanal) Collect(pipeline.Collector) error { @@ -547,6 +553,10 @@ func (sc *ServiceCanal) runCanal(pos mysql.Position) { logger.Infof(sc.context.GetRuntimeContext(), "start canal from %v with binlog-file mode", pos) sc.canal.SetEventHandler(sc) sc.lastBinLogMetric.Set(pos.String()) + sc.checkpoint.FileName = pos.Name + sc.checkpoint.Offset = pos.Pos + sc.checkpoint.GTID = "" + sc.saveCheckPoint() sc.lastErrorChan <- sc.canal.RunFrom(pos) } @@ -554,7 +564,11 @@ func (sc *ServiceCanal) runCanalByGTID(gtid mysql.GTIDSet) { logger.Infof(sc.context.GetRuntimeContext(), "start canal from %v with GTID mode", gtid) sc.canal.SetEventHandler(sc) sc.lastGTIDMetric.Set(gtid.String()) + var pos mysql.Position + sc.checkpoint.FileName = pos.Name + sc.checkpoint.Offset = pos.Pos sc.checkpoint.GTID = gtid.String() + sc.saveCheckPoint() sc.lastErrorChan <- sc.canal.StartFromGTID(gtid) } @@ -572,9 +586,9 @@ func (sc *ServiceCanal) GetBinlogLatestPos() mysql.Position { } else { logger.Error(sc.context.GetRuntimeContext(), "CANAL_INVALID_ALARM", "show binary logs error") } - offset, conErr := strconv.Atoi(fmt.Sprint(value[1])) + offset, conErr := strconv.ParseUint(fmt.Sprint(value[1]), 10, 64) if conErr == nil { - latestPos.Pos = (uint32)(offset) + latestPos.Pos = uint32(offset) } } } @@ -590,7 +604,7 @@ func (sc *ServiceCanal) GetBinlogLatestPos() mysql.Position { // used to indicate if the error is caused by network, so that caller can know // when to retry (for temporary network problem). func (sc *ServiceCanal) getGTIDMode() (bool, bool, error) { - statement := "show global variables like 'gtid_mode'" + statement := "select @@global.gtid_mode" result, err := sc.canal.Execute(statement) if err != nil { return false, true, fmt.Errorf( @@ -601,13 +615,13 @@ func (sc *ServiceCanal) getGTIDMode() (bool, bool, error) { return false, false, nil } value := result.Values[len(result.Values)-1] - if len(value) != 2 { - return false, false, fmt.Errorf("The number of columns (%v) is not 2 for %v", + if len(value) != 1 { + return false, false, fmt.Errorf("The number of columns (%v) is not 1 for %v", len(value), statement) } - gtidModeVal, err := mysqlValueToString(value[1]) + gtidModeVal, err := mysqlValueToString(value[0]) if err != nil { - return false, false, fmt.Errorf("Invaild GTID mode value,error: %v", err) + return false, false, fmt.Errorf("Invaild GTID mode value, error: %v", err) } if "on" == strings.ToLower(gtidModeVal) { return true, false, nil @@ -617,7 +631,8 @@ func (sc *ServiceCanal) getGTIDMode() (bool, bool, error) { // getLatestGTID gets the latest GTID from server. func (sc *ServiceCanal) getLatestGTID() (mysql.GTIDSet, error) { - statement := "show global variables like 'gtid_executed'" + // do not use "show global variables like 'gtid_executed'" as it truncates gtid to 1024 bytes + statement := "select @@global.gtid_executed" result, err := sc.canal.Execute(statement) if err != nil { return nil, fmt.Errorf("Execute statement %v failed during getLatestGTID, error: %v", @@ -627,11 +642,11 @@ func (sc *ServiceCanal) getLatestGTID() (mysql.GTIDSet, error) { return nil, fmt.Errorf("Empty result: statement (%v)", statement) } value := result.Values[len(result.Values)-1] - if len(value) != 2 { - return nil, fmt.Errorf("The number of columns (%v) is not 2 for %v", len(value), statement) + if len(value) != 1 { + return nil, fmt.Errorf("The number of columns (%v) is not 1 for %v", len(value), statement) } - gtidVal, err := mysqlValueToString(value[1]) + gtidVal, err := mysqlValueToString(value[0]) if err != nil { return nil, fmt.Errorf("Invaild GTID value, error: %v", err) } @@ -716,7 +731,6 @@ func (sc *ServiceCanal) Start(c pipeline.Collector) error { sc.initCheckPoint() if !sc.isGTIDEnabled && sc.checkpoint.GTID != "" { sc.checkpoint.GTID = "" - sc.saveCheckPoint() } logger.Infof(sc.context.GetRuntimeContext(), "Checkpoint initialized: %v", sc.checkpoint) @@ -733,12 +747,11 @@ func (sc *ServiceCanal) Start(c pipeline.Collector) error { sc.checkpoint.GTID, err) gtid = nil sc.checkpoint.GTID = "" - sc.saveCheckPoint() } } if nil == gtid && sc.checkpoint.FileName != "" { startPos.Name = sc.checkpoint.FileName - startPos.Pos = uint32(sc.checkpoint.Offset) + startPos.Pos = sc.checkpoint.Offset } if nil == gtid && 0 == len(startPos.Name) && !sc.StartFromBegining { gtid, err = sc.getLatestGTID() @@ -746,7 +759,7 @@ func (sc *ServiceCanal) Start(c pipeline.Collector) error { logger.Warning(sc.context.GetRuntimeContext(), "CANAL_START_ALARM", "Call getLatestGTID failed, error", err) startPos = sc.GetBinlogLatestPos() } - logger.Infof(sc.context.GetRuntimeContext(), "Get latest checkpoint", gtid, startPos) + logger.Infof(sc.context.GetRuntimeContext(), "Get latest checkpoint GTID: %v Position: %v", gtid, startPos) } if gtid != nil { @@ -759,15 +772,13 @@ ForBlock: for { select { case <-sc.shutdown: + sc.canal.Close() // will trigger OnPosSynced with force=true logger.Info(sc.context.GetRuntimeContext(), "service_canal quit because of shutting down, checkpoint", sc.checkpoint) - sc.canal.Close() <-sc.lastErrorChan - sc.saveCheckPoint() return nil case err = <-sc.lastErrorChan: - sc.canal.Close() - sc.saveCheckPoint() + sc.canal.Close() // will trigger OnPosSynced with force=true if nil == err { logger.Info(sc.context.GetRuntimeContext(), "Canal returns normally, break loop") From c752625d7c0bae04f40fe0ea04b1ccc8b0f8fcb3 Mon Sep 17 00:00:00 2001 From: Tao Yu Date: Sat, 27 Jul 2024 10:39:07 +0000 Subject: [PATCH 2/4] fix license and e2e test --- go.mod | 34 ++++--------------- go.sum | 4 +++ licenses/LICENSE_OF_ILOGTAIL_DEPENDENCIES.md | 1 + test/case/behavior/input_mssql/Dockerfile | 2 +- .../behavior/input_mssql/docker-compose.yaml | 2 +- 5 files changed, 14 insertions(+), 29 deletions(-) diff --git a/go.mod b/go.mod index d8b66c2110..b7e540d5bd 100644 --- a/go.mod +++ b/go.mod @@ -128,8 +128,7 @@ require ( github.com/pelletier/go-toml v1.9.3 // indirect github.com/pierrec/lz4 v2.6.1+incompatible // indirect github.com/pierrec/lz4/v4 v4.1.21 // indirect - github.com/pingcap/errors v0.11.5-0.20210425183316-da1aaba5fb63 // indirect - github.com/pingcap/parser v0.0.0-20210415081931-48e7f467fd74 // indirect + github.com/pingcap/errors v0.11.5-0.20221009092201-b66cddb77c32 // indirect github.com/prometheus/client_golang v1.14.0 github.com/prometheus/prometheus v1.8.2-0.20210430082741-2a4b8e12bbf2 // indirect github.com/segmentio/asm v1.2.0 // indirect @@ -146,16 +145,12 @@ require ( go.etcd.io/bbolt v1.3.6 // indirect go.opentelemetry.io/otel v1.11.2 // indirect go.opentelemetry.io/otel/trace v1.11.2 // indirect - go.uber.org/goleak v1.1.12 // indirect + go.uber.org/goleak v1.2.1 // indirect k8s.io/component-base v0.22.5 // indirect sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 // indirect ) require ( - github.com/BurntSushi/toml v0.4.1 // indirect - github.com/Microsoft/go-winio v0.5.2 // indirect - github.com/Microsoft/hcsshim v0.9.4 // indirect - github.com/andrewkroh/sys v0.0.0-20151128191922-287798fe3e43 // indirect github.com/containerd/cgroups v1.0.4 // indirect github.com/containerd/containerd v1.6.8 // indirect github.com/containerd/continuity v0.2.2 // indirect @@ -170,7 +165,6 @@ require ( github.com/coreos/go-systemd/v22 v22.4.0 // indirect github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f // indirect github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548 // indirect - github.com/danieljoos/wincred v1.1.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/dlclark/regexp2 v1.7.0 github.com/docker/docker v20.10.23+incompatible @@ -185,11 +179,7 @@ require ( github.com/go-logfmt/logfmt v0.5.1 // indirect github.com/go-logr/logr v1.2.3 // indirect github.com/go-ole/go-ole v1.2.6 // indirect - github.com/go-openapi/jsonpointer v0.19.5 // indirect - github.com/go-openapi/jsonreference v0.20.0 // indirect - github.com/go-openapi/swag v0.21.1 // indirect github.com/goccy/go-json v0.10.2 // indirect - github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/godbus/dbus/v5 v5.0.6 // indirect github.com/gogo/googleapis v1.4.0 // indirect github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect @@ -231,11 +221,6 @@ require ( github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 // indirect github.com/opencontainers/selinux v1.10.1 // indirect github.com/oschwald/maxminddb-golang v1.2.1 // indirect - github.com/paulmach/orb v0.8.0 // indirect - github.com/pelletier/go-toml v1.9.3 // indirect - github.com/pierrec/lz4 v2.6.1+incompatible // indirect - github.com/pierrec/lz4/v4 v4.1.21 // indirect - github.com/pingcap/errors v0.11.5-0.20221009092201-b66cddb77c32 // indirect github.com/pingcap/failpoint v0.0.0-20220801062533-2eaa32854a6c // indirect github.com/pingcap/log v1.1.1-0.20230317032135-a0d097d16e22 // indirect github.com/pingcap/tidb/pkg/parser v0.0.0-20231103042308-035ad5ccbe67 // indirect @@ -244,7 +229,6 @@ require ( github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/richardartoul/molecule v1.0.0 // indirect - github.com/segmentio/asm v1.2.0 // indirect github.com/shopspring/decimal v1.3.1 // indirect github.com/siddontang/go-log v0.0.0-20180807004314-8d05993dda07 // indirect github.com/smartystreets/assertions v1.2.0 // indirect @@ -253,9 +237,6 @@ require ( github.com/valyala/bytebufferpool v1.0.0 // indirect go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/otel v1.11.2 // indirect - go.opentelemetry.io/otel/trace v1.11.2 // indirect - go.uber.org/goleak v1.2.1 // indirect go.uber.org/zap v1.26.0 // indirect golang.org/x/crypto v0.19.0 // indirect golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect @@ -286,26 +267,25 @@ require ( require ( cloud.google.com/go/compute v1.18.0 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - github.com/VictoriaMetrics/fasthttp v1.1.0 // indirect - github.com/VictoriaMetrics/metrics v1.23.0 // indirect - github.com/VictoriaMetrics/metricsql v0.45.0 // indirect github.com/gorilla/websocket v1.4.2 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/influxdata/telegraf v1.20.0 // indirect github.com/openkruise/kruise-api v1.4.0 - github.com/richardartoul/molecule v1.0.0 // indirect github.com/valyala/fastjson v1.6.3 // indirect github.com/valyala/fastrand v1.1.0 // indirect github.com/valyala/fasttemplate v1.2.2 // indirect github.com/valyala/gozstd v1.17.0 // indirect github.com/valyala/histogram v1.2.0 // indirect github.com/valyala/quicktemplate v1.7.0 // indirect - golang.org/x/mod v0.8.0 // indirect sigs.k8s.io/gateway-api v0.6.2 // indirect ) -require github.com/frankban/quicktest v1.14.5 // indirect +require ( + github.com/frankban/quicktest v1.14.5 // indirect + github.com/gofrs/uuid v4.2.0+incompatible // indirect + github.com/satori/go.uuid v1.2.1-0.20181028125025-b2ce2384e17b // indirect +) replace ( github.com/VictoriaMetrics/VictoriaMetrics => github.com/iLogtail/VictoriaMetrics v1.83.4-ilogtail diff --git a/go.sum b/go.sum index c71dd27c1e..ab3f3a8643 100644 --- a/go.sum +++ b/go.sum @@ -1405,6 +1405,7 @@ github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFo github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= github.com/safchain/ethtool v0.0.0-20210803160452-9aa261dae9b1/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= @@ -1755,6 +1756,7 @@ golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2 golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20180406214816-61147c48b25b/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 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= @@ -2321,6 +2323,8 @@ gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:a gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/mgo.v2 v2.0.0-20160818015218-f2b6f6c918c4 h1:hILp2hNrRnYjZpmIbx70psAHbBSEcQ1NIzDcUbJ1b6g= +gopkg.in/mgo.v2 v2.0.0-20160818015218-f2b6f6c918c4/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= diff --git a/licenses/LICENSE_OF_ILOGTAIL_DEPENDENCIES.md b/licenses/LICENSE_OF_ILOGTAIL_DEPENDENCIES.md index 627fe62425..9dac8a0988 100644 --- a/licenses/LICENSE_OF_ILOGTAIL_DEPENDENCIES.md +++ b/licenses/LICENSE_OF_ILOGTAIL_DEPENDENCIES.md @@ -153,6 +153,7 @@ When distributed in a binary form, iLogtail may contain portions of the followin ## MIT licenses +- [github.com/satori/go.uuid](https://pkg.go.dev/github.com/satori/go.uuid?tab=licenses) - [github.com/valyala/gozstd](https://pkg.go.dev/github.com/valyala/gozstd?tab=licenses) - [github.com/goccy/go-json](https://pkg.go.dev/github.com/goccy/go-json?tab=licenses) - [github.com/gofrs/uuid](https://pkg.go.dev/github.com/gofrs/uuid?tab=licenses) diff --git a/test/case/behavior/input_mssql/Dockerfile b/test/case/behavior/input_mssql/Dockerfile index 2d73bd5f2e..8082761451 100644 --- a/test/case/behavior/input_mssql/Dockerfile +++ b/test/case/behavior/input_mssql/Dockerfile @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM mcr.microsoft.com/mssql/server:2022-latest +FROM mcr.microsoft.com/mssql/server:2022-CU13-ubuntu-22.04 USER root # Create app directory diff --git a/test/case/behavior/input_mssql/docker-compose.yaml b/test/case/behavior/input_mssql/docker-compose.yaml index af2c3ca116..c31b9cf2b2 100644 --- a/test/case/behavior/input_mssql/docker-compose.yaml +++ b/test/case/behavior/input_mssql/docker-compose.yaml @@ -16,7 +16,7 @@ version: '3.8' services: mssql: - image: mcr.microsoft.com/mssql/server:2022-latest + image: mcr.microsoft.com/mssql/server:2022-CU13-ubuntu-22.04 hostname: mssql ports: - "1433:1433" From 95da82987b6e8b083363d27b22110123d6c1f7c9 Mon Sep 17 00:00:00 2001 From: Tao Yu Date: Sat, 27 Jul 2024 12:57:05 +0000 Subject: [PATCH 3/4] update PluginAdapter.dll to x64 --- pkg/logtail/PluginAdapter.dll | Bin 104960 -> 115712 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/pkg/logtail/PluginAdapter.dll b/pkg/logtail/PluginAdapter.dll index 9e34248eb778a0afb98e43d95e3525d6cf117a25..3bc9f236b1fbc713b5e28de1682a0f86c990328d 100644 GIT binary patch literal 115712 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

XsyuK$&BV;{wjGb+(z;W{Q(Zp>N5K*M5j? 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 From b06775afeb0d20e845731c6490c61b42d740ed85 Mon Sep 17 00:00:00 2001 From: Tao Yu Date: Sat, 27 Jul 2024 12:58:18 +0000 Subject: [PATCH 4/4] update PluginAdapter.dll to x64 --- .github/workflows/build-pure-plugin.yaml | 4 ++-- scripts/plugin_build.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-pure-plugin.yaml b/.github/workflows/build-pure-plugin.yaml index 761265bea8..29c2d886d9 100644 --- a/.github/workflows/build-pure-plugin.yaml +++ b/.github/workflows/build-pure-plugin.yaml @@ -62,11 +62,11 @@ jobs: # prepare windows environment # https://github.com/actions/virtual-environments/issues/2549 - - name: add mingw32 to path + - name: add mingw64 to path if: matrix.runner == 'windows-2019' shell: bash run: | - echo "C:\msys64\mingw32\bin" >> $GITHUB_PATH + echo "C:\msys64\mingw64\bin" >> $GITHUB_PATH - name: Set up Go ${{ matrix.go-version }} uses: actions/setup-go@v4 diff --git a/scripts/plugin_build.sh b/scripts/plugin_build.sh index 61f03a14d9..10d9bcb74e 100755 --- a/scripts/plugin_build.sh +++ b/scripts/plugin_build.sh @@ -49,7 +49,7 @@ if [ $OS_FLAG = 1 ]; then NAME=libPluginBase.so fi elif [ $OS_FLAG = 3 ]; then - export GOARCH=386 + # export GOARCH=386 export CGO_ENABLED=1 if [ $BUILDMODE = "c-shared" ]; then NAME=PluginBase.dll