diff --git a/.travis.yml b/.travis.yml index 06359b8..7f65aad 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,12 +1,13 @@ language: go go: -- 1.13 +- "1.18" +- "1.19" +- "1.20" install: - go get golang.org/x/tools/cmd/cover - go get github.com/mattn/goveralls - go get gopkg.in/check.v1 -- go get github.com/golang/protobuf/proto -- go get github.com/stretchr/testify/assert@v1.4.0 +- go get github.com/stretchr/testify/assert@v1.8.1 script: - cd tablestore - travis_wait 30 go test -v -covermode=count -coverprofile=coverage.out -timeout=30m diff --git a/go.mod b/go.mod index 1ca697b..4f860be 100644 --- a/go.mod +++ b/go.mod @@ -1,19 +1,34 @@ module github.com/aliyun/aliyun-tablestore-go-sdk -go 1.13 +go 1.18 require ( - github.com/BurntSushi/toml v0.3.1 // indirect - github.com/cenkalti/backoff v2.2.1+incompatible - github.com/golang/mock v1.3.1 - github.com/golang/protobuf v1.3.2 - github.com/google/flatbuffers v1.11.0 - github.com/hashicorp/golang-lru v0.5.4 - github.com/satori/go.uuid v1.2.0 - github.com/smartystreets/goconvey v1.6.4 - github.com/stretchr/testify v1.7.0 - go.uber.org/atomic v1.9.0 - go.uber.org/zap v1.19.0 - gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 + github.com/cenkalti/backoff/v4 v4.2.0 + github.com/golang/mock v1.6.0 + github.com/golang/protobuf v1.5.2 + github.com/google/flatbuffers v23.1.21+incompatible + github.com/google/uuid v1.3.0 + github.com/hashicorp/golang-lru/v2 v2.0.1 + github.com/smartystreets/goconvey v1.7.2 + github.com/stretchr/testify v1.8.1 + go.uber.org/zap v1.24.0 + gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c gopkg.in/natefinch/lumberjack.v2 v2.0.0 ) + +require ( + github.com/BurntSushi/toml v0.3.1 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 // indirect + github.com/jtolds/gls v4.20.0+incompatible // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/rogpeppe/go-internal v1.9.0 // indirect + github.com/smartystreets/assertions v1.2.0 // indirect + go.uber.org/atomic v1.10.0 // indirect + go.uber.org/multierr v1.9.0 // indirect + google.golang.org/protobuf v1.26.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/go.sum b/go.sum index b000b49..be90059 100644 --- a/go.sum +++ b/go.sum @@ -1,78 +1,97 @@ github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= -github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v4 v4.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4= +github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/golang/mock v1.3.1 h1:qGJ6qTW+x6xX/my+8YUVl4WNpX9B7+/l2tRsHGZ7f2s= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/google/flatbuffers v1.11.0 h1:O7CEyB8Cb3/DmtxODGtLHcEvpr81Jm5qLg/hsHnxA2A= -github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/flatbuffers v23.1.21+incompatible h1:bUqzx/MXCDxuS0hRJL2EfjyZL3uQrPbMocUa8zGqsTA= +github.com/google/flatbuffers v23.1.21+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/v2 v2.0.1 h1:5pv5N1lT1fjLg2VQ5KWc7kmucp2x/kvFOnxuVTqZ6x4= +github.com/hashicorp/golang-lru/v2 v2.0.1/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= -github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +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/smartystreets/assertions v1.2.0 h1:42S6lae5dvLc7BrLu/0ugRtcFVjoJNMC/N3yZFZkDFs= +github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= +github.com/smartystreets/goconvey v1.7.2 h1:9RBaZCeXEQ3UselpuwUQHltGVXvdwm6cv1hgR6gDIPg= +github.com/smartystreets/goconvey v1.7.2/go.mod h1:Vw0tHAZW6lzCRk3xgdin6fKYcG+G3Pg9vgXWeJpQFMM= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= -go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/goleak v1.1.10 h1:z+mqJhf6ss6BSfSM671tgKyZBFPTTJM+HLxnhPC3wu0= -go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE= -go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +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/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= +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/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= +go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11 h1:Yq9t9jnGoR+dBuitxdo9l6Q7xh/zOyNnYUtDKaQ3x0E= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= 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/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/tablestore/api.go b/tablestore/api.go index 4362dcb..f6b78dc 100644 --- a/tablestore/api.go +++ b/tablestore/api.go @@ -6,9 +6,6 @@ import ( "encoding/base64" "errors" "fmt" - "github.com/aliyun/aliyun-tablestore-go-sdk/tablestore/otsprotocol" - Fieldvalues "github.com/aliyun/aliyun-tablestore-go-sdk/tablestore/timeseries/flatbuffer" - "github.com/golang/protobuf/proto" "hash/crc32" "io" "io/ioutil" @@ -18,9 +15,14 @@ import ( "strings" "time" - "github.com/aliyun/aliyun-tablestore-go-sdk/common" - lruCache "github.com/hashicorp/golang-lru" + "github.com/aliyun/aliyun-tablestore-go-sdk/tablestore/otsprotocol" + Fieldvalues "github.com/aliyun/aliyun-tablestore-go-sdk/tablestore/timeseries/flatbuffer" + "github.com/golang/protobuf/proto" + "sync" + + "github.com/aliyun/aliyun-tablestore-go-sdk/common" + lruCache "github.com/hashicorp/golang-lru/v2" ) const ( @@ -209,7 +211,7 @@ func NewTimeseriesClientWithConfig(endPoint, instanceName, accessKeyId, accessKe timeseriesClient.mu = &sync.Mutex{} timeseriesClient.random = rand.New(rand.NewSource(time.Now().Unix())) - timeseriesMetaCache, _ := lruCache.New(timeseriesClient.timeseriesConfiguration.metaCacheMaxDataSize) + timeseriesMetaCache, _ := lruCache.New[string, uint32](timeseriesClient.timeseriesConfiguration.metaCacheMaxDataSize) timeseriesClient.SetTimeseriesMetaCache(timeseriesMetaCache) return timeseriesClient } @@ -630,7 +632,7 @@ func (timeseriesClient *TimeseriesClient) PutTimeseriesData(request *PutTimeseri } metaCacheKey := *curRow.timeseriesMetaKey timeInCache, ok := timeseriesClient.GetTimeseriesMetaCache().Get(metaCacheKey) - if !ok || timeInCache.(uint32) < updateTimeInSec { + if !ok || timeInCache < updateTimeInSec { timeseriesClient.GetTimeseriesMetaCache().Add(metaCacheKey, updateTimeInSec) } } diff --git a/tablestore/coverage.out b/tablestore/coverage.out new file mode 100644 index 0000000..c62dd8b --- /dev/null +++ b/tablestore/coverage.out @@ -0,0 +1 @@ +mode: count diff --git a/tablestore/model.go b/tablestore/model.go index 07ee222..42203f1 100644 --- a/tablestore/model.go +++ b/tablestore/model.go @@ -8,13 +8,13 @@ import ( "net/http" "strconv" "strings" + "sync" "time" "github.com/aliyun/aliyun-tablestore-go-sdk/common" "github.com/aliyun/aliyun-tablestore-go-sdk/tablestore/otsprotocol" "github.com/golang/protobuf/proto" - lruCache "github.com/hashicorp/golang-lru" - "sync" + lruCache "github.com/hashicorp/golang-lru/v2" ) type internalClient struct { @@ -587,8 +587,8 @@ type BatchGetRowResponse struct { ResponseInfo } -//IsAtomic设置是否为批量原子写 -//如果设置了批量原子写,需要保证写入到同一张表格中的分区键相同,否则会写入失败 +// IsAtomic设置是否为批量原子写 +// 如果设置了批量原子写,需要保证写入到同一张表格中的分区键相同,否则会写入失败 type BatchWriteRowRequest struct { RowChangesGroupByTable map[string][]RowChange IsAtomic bool @@ -965,17 +965,17 @@ func (r *ComputeSplitsRequest) SetSearchIndexSplitsOptions(options SearchIndexSp type TimeseriesClient struct { *internalClient - timeseriesMetaCache *lruCache.Cache + timeseriesMetaCache *lruCache.Cache[string, uint32] } -func (timeseriesClient *TimeseriesClient) SetTimeseriesMetaCache(timeseriesMetaCache *lruCache.Cache) { +func (timeseriesClient *TimeseriesClient) SetTimeseriesMetaCache(timeseriesMetaCache *lruCache.Cache[string, uint32]) { if timeseriesClient.timeseriesMetaCache != nil { timeseriesClient.timeseriesMetaCache.Purge() } timeseriesClient.timeseriesMetaCache = timeseriesMetaCache } -func (timeseriesClient *TimeseriesClient) GetTimeseriesMetaCache() *lruCache.Cache { +func (timeseriesClient *TimeseriesClient) GetTimeseriesMetaCache() *lruCache.Cache[string, uint32] { return timeseriesClient.timeseriesMetaCache } diff --git a/tablestore/otsprotocol/build_proto.sh b/tablestore/otsprotocol/build_proto.sh index 18cb507..99a8b8f 100644 --- a/tablestore/otsprotocol/build_proto.sh +++ b/tablestore/otsprotocol/build_proto.sh @@ -1 +1,4 @@ -protoc --go_out=. search.proto ots_filter.proto table_store.proto +protoc \ + --go_out=. \ + --go_opt=paths=source_relative \ + delivery.proto search.proto ots_filter.proto table_store.proto timeseries.proto diff --git a/tablestore/otsprotocol/delivery.proto b/tablestore/otsprotocol/delivery.proto index ccd6821..c6403af 100644 --- a/tablestore/otsprotocol/delivery.proto +++ b/tablestore/otsprotocol/delivery.proto @@ -1,6 +1,8 @@ syntax = "proto2"; package otsprotocol; +option go_package = "github.com/aliyun/aliyun-tablestore-go-sdk/tablestore/otsprotocol"; + enum DeliveryTaskType { BASE = 0; INC = 1; diff --git a/tablestore/otsprotocol/ots_filter.proto b/tablestore/otsprotocol/ots_filter.proto index 172d6b4..5cb8f0f 100644 --- a/tablestore/otsprotocol/ots_filter.proto +++ b/tablestore/otsprotocol/ots_filter.proto @@ -1,6 +1,8 @@ syntax = "proto2"; package otsprotocol; +option go_package = "github.com/aliyun/aliyun-tablestore-go-sdk/tablestore/otsprotocol"; + enum VariantType { VT_INTEGER = 0; VT_DOUBLE = 1; diff --git a/tablestore/otsprotocol/search.proto b/tablestore/otsprotocol/search.proto index 292058a..1a8d0d4 100644 --- a/tablestore/otsprotocol/search.proto +++ b/tablestore/otsprotocol/search.proto @@ -3,6 +3,9 @@ package otsprotocol; import "table_store.proto"; +option go_package = "github.com/aliyun/aliyun-tablestore-go-sdk/tablestore/otsprotocol"; + + /* query */ enum QueryType { MATCH_QUERY = 1; diff --git a/tablestore/otsprotocol/table_store.proto b/tablestore/otsprotocol/table_store.proto index cd8842a..6dc8e5f 100644 --- a/tablestore/otsprotocol/table_store.proto +++ b/tablestore/otsprotocol/table_store.proto @@ -1,5 +1,7 @@ syntax = "proto2"; +option go_package = "github.com/aliyun/aliyun-tablestore-go-sdk/tablestore/otsprotocol"; + package otsprotocol; message Error { diff --git a/tablestore/otsprotocol/timeseries.proto b/tablestore/otsprotocol/timeseries.proto index 94ba78b..03a54e6 100644 --- a/tablestore/otsprotocol/timeseries.proto +++ b/tablestore/otsprotocol/timeseries.proto @@ -1,5 +1,7 @@ syntax = "proto2"; +option go_package = "github.com/aliyun/aliyun-tablestore-go-sdk/tablestore/otsprotocol"; + package otsprotocol; message TimeseriesTableOptions { diff --git a/tablestore/timeseries_protocol_builder.go b/tablestore/timeseries_protocol_builder.go index 42db206..8257528 100644 --- a/tablestore/timeseries_protocol_builder.go +++ b/tablestore/timeseries_protocol_builder.go @@ -2,42 +2,39 @@ package tablestore import ( "fmt" - lruCache "github.com/hashicorp/golang-lru" "reflect" - Fieldvalues "github.com/aliyun/aliyun-tablestore-go-sdk/tablestore/timeseries/flatbuffer" - flatbuffers "github.com/google/flatbuffers/go" - "github.com/aliyun/aliyun-tablestore-go-sdk/tablestore/otsprotocol" + Fieldvalues "github.com/aliyun/aliyun-tablestore-go-sdk/tablestore/timeseries/flatbuffer" "github.com/golang/protobuf/proto" + flatbuffers "github.com/google/flatbuffers/go" + lruCache "github.com/hashicorp/golang-lru/v2" ) - -func BuildFlatbufferRows(rows []*TimeseriesRow , timeseriesTableName string , timeseriesMetaCache *lruCache.Cache) ([]byte , error) { +func BuildFlatbufferRows(rows []*TimeseriesRow, timeseriesTableName string, timeseriesMetaCache *lruCache.Cache[string, uint32]) ([]byte, error) { rowsNum := len(rows) - rowGroupOffs := make([]flatbuffers.UOffsetT , rowsNum) + rowGroupOffs := make([]flatbuffers.UOffsetT, rowsNum) fbb := flatbuffers.NewBuilder(1024) var err error for i := 0; i < rowsNum; i++ { - rowGroupOffs[i] , err = buildTimeseriesRowToRowGroupOffset(rows[i] , fbb , timeseriesTableName , timeseriesMetaCache) + rowGroupOffs[i], err = buildTimeseriesRowToRowGroupOffset(rows[i], fbb, timeseriesTableName, timeseriesMetaCache) if err != nil { - return nil , fmt.Errorf("BuildFlatbufferRows failed! ") + return nil, fmt.Errorf("BuildFlatbufferRows failed! ") } } - rowsVectorOffset := createRowGroupsVector(fbb , rowGroupOffs) - rowsOffset := createFlatBufferRows(fbb , rowsVectorOffset) + rowsVectorOffset := createRowGroupsVector(fbb, rowGroupOffs) + rowsOffset := createFlatBufferRows(fbb, rowsVectorOffset) fbb.Finish(rowsOffset) - return fbb.FinishedBytes() , nil + return fbb.FinishedBytes(), nil } - -func buildTimeseriesRowToRowGroupOffset(row *TimeseriesRow , fbb *flatbuffers.Builder , timeseriesTableName string , timeseriesMetaCache *lruCache.Cache) (flatbuffers.UOffsetT , error) { +func buildTimeseriesRowToRowGroupOffset(row *TimeseriesRow, fbb *flatbuffers.Builder, timeseriesTableName string, timeseriesMetaCache *lruCache.Cache[string, uint32]) (flatbuffers.UOffsetT, error) { fieldCount := len(row.fields) fieldValueTypes := make([]Fieldvalues.DataType, fieldCount) - fieldNameOffs := make([]flatbuffers.UOffsetT , fieldCount) + fieldNameOffs := make([]flatbuffers.UOffsetT, fieldCount) var idx int = 0 var doubleValueCount int = 0 @@ -46,46 +43,46 @@ func buildTimeseriesRowToRowGroupOffset(row *TimeseriesRow , fbb *flatbuffers.Bu var binaryValueCount int = 0 var stringValueCount int = 0 - field_keys , field_values := SortedMapColumnValue(row.fields) + field_keys, field_values := SortedMapColumnValue(row.fields) for i := 0; i < fieldCount; i++ { fieldNameOffs[i] = fbb.CreateString(field_keys[i]) switch field_values[i].Type { case ColumnType_INTEGER: - fieldValueTypes[i] = Fieldvalues.DataTypeLONG // LONG + fieldValueTypes[i] = Fieldvalues.DataTypeLONG // LONG longValueCount++ break case ColumnType_BOOLEAN: - fieldValueTypes[i] = Fieldvalues.DataTypeBOOLEAN // BOOLEAN + fieldValueTypes[i] = Fieldvalues.DataTypeBOOLEAN // BOOLEAN boolValueCount++ break case ColumnType_DOUBLE: - fieldValueTypes[i] = Fieldvalues.DataTypeDOUBLE // DOUBLE + fieldValueTypes[i] = Fieldvalues.DataTypeDOUBLE // DOUBLE doubleValueCount++ break case ColumnType_STRING: - fieldValueTypes[i] = Fieldvalues.DataTypeSTRING // STRING + fieldValueTypes[i] = Fieldvalues.DataTypeSTRING // STRING stringValueCount++ break case ColumnType_BINARY: - fieldValueTypes[i] = Fieldvalues.DataTypeBINARY // BINARY + fieldValueTypes[i] = Fieldvalues.DataTypeBINARY // BINARY binaryValueCount++ break default: - return 0 , fmt.Errorf("Err ColumnType : %v" , field_values[i].Type) + return 0, fmt.Errorf("Err ColumnType : %v", field_values[i].Type) } } - longValues := make([]int64 , longValueCount) - boolValues := make([]bool , boolValueCount) - doubleValues := make([]float64 , doubleValueCount) - strValueOffs := make([]flatbuffers.UOffsetT , stringValueCount) - binaryValueOffs := make([]flatbuffers.UOffsetT , binaryValueCount) + longValues := make([]int64, longValueCount) + boolValues := make([]bool, boolValueCount) + doubleValues := make([]float64, doubleValueCount) + strValueOffs := make([]flatbuffers.UOffsetT, stringValueCount) + binaryValueOffs := make([]flatbuffers.UOffsetT, binaryValueCount) doubleValueCount = 0 - longValueCount = 0 - boolValueCount = 0 - stringValueCount = 0 - binaryValueCount = 0 + longValueCount = 0 + boolValueCount = 0 + stringValueCount = 0 + binaryValueCount = 0 for i := 0; i < fieldCount; i++ { switch field_values[i].Type { @@ -113,11 +110,11 @@ func buildTimeseriesRowToRowGroupOffset(row *TimeseriesRow , fbb *flatbuffers.Bu stringValueCount++ break case ColumnType_BINARY: - binaryValueOffs[binaryValueCount] = CreateBytesValue(fbb , CreateBytesValueVector(fbb , field_values[i].Value.([]byte))) + binaryValueOffs[binaryValueCount] = CreateBytesValue(fbb, CreateBytesValueVector(fbb, field_values[i].Value.([]byte))) binaryValueCount++ break default: - return 0 , fmt.Errorf("Err ColumnType : %v" , field_values[idx].Type) + return 0, fmt.Errorf("Err ColumnType : %v", field_values[idx].Type) } } @@ -129,7 +126,7 @@ func buildTimeseriesRowToRowGroupOffset(row *TimeseriesRow , fbb *flatbuffers.Bu fieldValueOff := flatbuffers.UOffsetT(0) if longValueCount != 0 { - fbb.StartVector(8 , longValueCount , 8) + fbb.StartVector(8, longValueCount, 8) for i := longValueCount - 1; i >= 0; i-- { fbb.PrependInt64(longValues[i]) } @@ -137,7 +134,7 @@ func buildTimeseriesRowToRowGroupOffset(row *TimeseriesRow , fbb *flatbuffers.Bu } if boolValueCount != 0 { - fbb.StartVector(1 , boolValueCount , 1 ) + fbb.StartVector(1, boolValueCount, 1) for i := boolValueCount - 1; i >= 0; i-- { fbb.PrependBool(boolValues[i]) } @@ -145,7 +142,7 @@ func buildTimeseriesRowToRowGroupOffset(row *TimeseriesRow , fbb *flatbuffers.Bu } if doubleValueCount != 0 { - fbb.StartVector(8 , doubleValueCount , 8) + fbb.StartVector(8, doubleValueCount, 8) for i := doubleValueCount - 1; i >= 0; i-- { fbb.PrependFloat64(doubleValues[i]) } @@ -153,7 +150,7 @@ func buildTimeseriesRowToRowGroupOffset(row *TimeseriesRow , fbb *flatbuffers.Bu } if stringValueCount != 0 { - fbb.StartVector(4 , stringValueCount , 4) + fbb.StartVector(4, stringValueCount, 4) for i := stringValueCount - 1; i >= 0; i-- { fbb.PrependUOffsetT(strValueOffs[i]) } @@ -161,7 +158,7 @@ func buildTimeseriesRowToRowGroupOffset(row *TimeseriesRow , fbb *flatbuffers.Bu } if binaryValueCount != 0 { - fbb.StartVector(4 , binaryValueCount , 4) + fbb.StartVector(4, binaryValueCount, 4) for i := binaryValueCount - 1; i >= 0; i-- { fbb.PrependUOffsetT(flatbuffers.UOffsetT(binaryValueOffs[i])) } @@ -169,11 +166,11 @@ func buildTimeseriesRowToRowGroupOffset(row *TimeseriesRow , fbb *flatbuffers.Bu } fbb.StartObject(5) - Fieldvalues.FieldValuesAddBinaryValues(fbb , binary_valuesOffset) - Fieldvalues.FieldValuesAddStringValues(fbb , string_valuesOffset) - Fieldvalues.FieldValuesAddDoubleValues(fbb , double_valuesOffset) - Fieldvalues.FieldValuesAddBoolValues(fbb , bool_valuesOffset) - Fieldvalues.FieldValuesAddLongValues(fbb , long_valuesOffset) + Fieldvalues.FieldValuesAddBinaryValues(fbb, binary_valuesOffset) + Fieldvalues.FieldValuesAddStringValues(fbb, string_valuesOffset) + Fieldvalues.FieldValuesAddDoubleValues(fbb, double_valuesOffset) + Fieldvalues.FieldValuesAddBoolValues(fbb, bool_valuesOffset) + Fieldvalues.FieldValuesAddLongValues(fbb, long_valuesOffset) fieldValueOff = Fieldvalues.FieldValuesEnd(fbb) var source_keyOffset flatbuffers.UOffsetT @@ -188,106 +185,100 @@ func buildTimeseriesRowToRowGroupOffset(row *TimeseriesRow , fbb *flatbuffers.Bu if row.timeseriesKey.tagsString == nil { row.timeseriesKey.tagsString = new(string) - if *row.timeseriesKey.tagsString , err = BuildTagString(row.timeseriesKey.tags); err != nil { - return 0 , fmt.Errorf("Build tags string failed with error: %s" , err) + if *row.timeseriesKey.tagsString, err = BuildTagString(row.timeseriesKey.tags); err != nil { + return 0, fmt.Errorf("Build tags string failed with error: %s", err) } } tags_Offset = fbb.CreateString(*row.timeseriesKey.tagsString) - rowInGroupOffs := make([]flatbuffers.UOffsetT , 1) + rowInGroupOffs := make([]flatbuffers.UOffsetT, 1) if row.timeseriesMetaKey == nil { row.timeseriesMetaKey = new(string) - if *row.timeseriesMetaKey , err = row.timeseriesKey.buildTimeseriesMetaKey(timeseriesTableName); err != nil { - return 0 , fmt.Errorf("Build meta key failed with error: %s" , err) + if *row.timeseriesMetaKey, err = row.timeseriesKey.buildTimeseriesMetaKey(timeseriesTableName); err != nil { + return 0, fmt.Errorf("Build meta key failed with error: %s", err) } } - updateTimeInSec , ok := timeseriesMetaCache.Get(*row.timeseriesMetaKey) - var updateTime uint32 - if ok { - updateTime = updateTimeInSec.(uint32) - } + updateTime, _ := timeseriesMetaCache.Get(*row.timeseriesMetaKey) Fieldvalues.FlatBufferRowInGroupStart(fbb) - Fieldvalues.FlatBufferRowInGroupAddTime(fbb , row.timeInUs) - Fieldvalues.FlatBufferRowInGroupAddMetaCacheUpdateTime(fbb , updateTime) - Fieldvalues.FlatBufferRowInGroupAddFieldValues(fbb , fieldValueOff) - Fieldvalues.FlatBufferRowInGroupAddTags(fbb , tags_Offset) - Fieldvalues.FlatBufferRowInGroupAddDataSource(fbb , source_keyOffset) + Fieldvalues.FlatBufferRowInGroupAddTime(fbb, row.timeInUs) + Fieldvalues.FlatBufferRowInGroupAddMetaCacheUpdateTime(fbb, updateTime) + Fieldvalues.FlatBufferRowInGroupAddFieldValues(fbb, fieldValueOff) + Fieldvalues.FlatBufferRowInGroupAddTags(fbb, tags_Offset) + Fieldvalues.FlatBufferRowInGroupAddDataSource(fbb, source_keyOffset) rowInGroupOffs[0] = Fieldvalues.FlatBufferRowInGroupEnd(fbb) measurement_namesOffset := fbb.CreateString(row.timeseriesKey.measurement) - field_namesOffset := createFieldNamesVector(fbb , fieldNameOffs) - field_typesOffset := createFieldTypesVector(fbb , fieldValueTypes) - rowsOffset := createRowsVector(fbb , rowInGroupOffs) + field_namesOffset := createFieldNamesVector(fbb, fieldNameOffs) + field_typesOffset := createFieldTypesVector(fbb, fieldValueTypes) + rowsOffset := createRowsVector(fbb, rowInGroupOffs) Fieldvalues.FlatBufferRowGroupStart(fbb) - Fieldvalues.FlatBufferRowGroupAddRows(fbb , rowsOffset) - Fieldvalues.FlatBufferRowGroupAddFieldTypes(fbb , field_typesOffset) - Fieldvalues.FlatBufferRowGroupAddFieldNames(fbb , field_namesOffset) - Fieldvalues.FlatBufferRowGroupAddMeasurementName(fbb ,measurement_namesOffset ) + Fieldvalues.FlatBufferRowGroupAddRows(fbb, rowsOffset) + Fieldvalues.FlatBufferRowGroupAddFieldTypes(fbb, field_typesOffset) + Fieldvalues.FlatBufferRowGroupAddFieldNames(fbb, field_namesOffset) + Fieldvalues.FlatBufferRowGroupAddMeasurementName(fbb, measurement_namesOffset) - return Fieldvalues.FlatBufferRowGroupEnd(fbb) , nil + return Fieldvalues.FlatBufferRowGroupEnd(fbb), nil } - -func CreateBytesValue(builder *flatbuffers.Builder , offset flatbuffers.UOffsetT) flatbuffers.UOffsetT { +func CreateBytesValue(builder *flatbuffers.Builder, offset flatbuffers.UOffsetT) flatbuffers.UOffsetT { builder.StartObject(1) - Fieldvalues.BytesValueAddValue(builder , offset) + Fieldvalues.BytesValueAddValue(builder, offset) return Fieldvalues.BytesValueEnd(builder) } -func CreateBytesValueVector(builder *flatbuffers.Builder , data []byte) flatbuffers.UOffsetT { - builder.StartVector(1 , len(data) , 1) +func CreateBytesValueVector(builder *flatbuffers.Builder, data []byte) flatbuffers.UOffsetT { + builder.StartVector(1, len(data), 1) for i := len(data) - 1; i >= 0; i-- { builder.PlaceByte(data[i]) } return builder.EndVector(len(data)) } -func createTagNamesVector(builder *flatbuffers.Builder , tagNameOffs []flatbuffers.UOffsetT) flatbuffers.UOffsetT { - builder.StartVector(4 , len(tagNameOffs) , 4) +func createTagNamesVector(builder *flatbuffers.Builder, tagNameOffs []flatbuffers.UOffsetT) flatbuffers.UOffsetT { + builder.StartVector(4, len(tagNameOffs), 4) for i := len(tagNameOffs) - 1; i >= 0; i-- { builder.PrependUOffsetT(tagNameOffs[i]) } return builder.EndVector(len(tagNameOffs)) } - -func createTagValuesVector(builder *flatbuffers.Builder , data []flatbuffers.UOffsetT) flatbuffers.UOffsetT { - builder.StartVector(4 , len(data) , 4) +func createTagValuesVector(builder *flatbuffers.Builder, data []flatbuffers.UOffsetT) flatbuffers.UOffsetT { + builder.StartVector(4, len(data), 4) for i := len(data) - 1; i >= 0; i-- { builder.PrependUOffsetT(data[i]) } return builder.EndVector(len(data)) } -func createRowsVector(builder *flatbuffers.Builder , rowInGroupOffs []flatbuffers.UOffsetT) flatbuffers.UOffsetT { - builder.StartVector(4 , len(rowInGroupOffs) , 4) +func createRowsVector(builder *flatbuffers.Builder, rowInGroupOffs []flatbuffers.UOffsetT) flatbuffers.UOffsetT { + builder.StartVector(4, len(rowInGroupOffs), 4) for i := len(rowInGroupOffs) - 1; i >= 0; i-- { builder.PrependUOffsetT(rowInGroupOffs[i]) } return builder.EndVector(len(rowInGroupOffs)) } -func createFieldTypesVector(builder *flatbuffers.Builder , data []Fieldvalues.DataType) flatbuffers.UOffsetT { - builder.StartVector(1 , len(data) , 1) +func createFieldTypesVector(builder *flatbuffers.Builder, data []Fieldvalues.DataType) flatbuffers.UOffsetT { + builder.StartVector(1, len(data), 1) for i := len(data) - 1; i >= 0; i-- { builder.PrependInt8(int8(data[i])) } return builder.EndVector(len(data)) } -func createFieldNamesVector(builder *flatbuffers.Builder , fieldNameOffs []flatbuffers.UOffsetT) flatbuffers.UOffsetT { - builder.StartVector(4 , len(fieldNameOffs), 4) +func createFieldNamesVector(builder *flatbuffers.Builder, fieldNameOffs []flatbuffers.UOffsetT) flatbuffers.UOffsetT { + builder.StartVector(4, len(fieldNameOffs), 4) for i := len(fieldNameOffs) - 1; i >= 0; i-- { builder.PrependUOffsetT(fieldNameOffs[i]) } return builder.EndVector(len(fieldNameOffs)) } -func createRowGroupsVector(builder *flatbuffers.Builder , rowGroupOffs []flatbuffers.UOffsetT) flatbuffers.UOffsetT { - builder.StartVector(4 , len(rowGroupOffs) , 4) +func createRowGroupsVector(builder *flatbuffers.Builder, rowGroupOffs []flatbuffers.UOffsetT) flatbuffers.UOffsetT { + builder.StartVector(4, len(rowGroupOffs), 4) for i := len(rowGroupOffs) - 1; i >= 0; i-- { builder.PrependUOffsetT(rowGroupOffs[i]) } @@ -295,29 +286,29 @@ func createRowGroupsVector(builder *flatbuffers.Builder , rowGroupOffs []flatbuf return builder.EndVector(len(rowGroupOffs)) } -func createFlatBufferRows(builder *flatbuffers.Builder , row_groupsOffset flatbuffers.UOffsetT) flatbuffers.UOffsetT { +func createFlatBufferRows(builder *flatbuffers.Builder, row_groupsOffset flatbuffers.UOffsetT) flatbuffers.UOffsetT { Fieldvalues.FlatBufferRowsStart(builder) - Fieldvalues.FlatBufferRowsAddRowGroups(builder , row_groupsOffset) + Fieldvalues.FlatBufferRowsAddRowGroups(builder, row_groupsOffset) return Fieldvalues.FlatBufferRowsEnd(builder) } -func buildTimeseriesKey(curTimeseriesKey *TimeseriesKey) (*otsprotocol.TimeseriesKey , error) { +func buildTimeseriesKey(curTimeseriesKey *TimeseriesKey) (*otsprotocol.TimeseriesKey, error) { var err error timeseriesKey := new(otsprotocol.TimeseriesKey) if curTimeseriesKey.tagsString == nil { curTimeseriesKey.tagsString = new(string) - if *curTimeseriesKey.tagsString , err = BuildTagString(curTimeseriesKey.tags); err != nil { - return nil , err + if *curTimeseriesKey.tagsString, err = BuildTagString(curTimeseriesKey.tags); err != nil { + return nil, err } } timeseriesKey.Tags = curTimeseriesKey.tagsString timeseriesKey.Source = proto.String(curTimeseriesKey.source) timeseriesKey.Measurement = proto.String(curTimeseriesKey.measurement) - return timeseriesKey , nil + return timeseriesKey, nil } -func buildProtocolBufferRows(rows []*TimeseriesRow, timeseriesTableName string, timeseriesMetaCache *lruCache.Cache) ([]byte, error) { +func buildProtocolBufferRows(rows []*TimeseriesRow, timeseriesTableName string, timeseriesMetaCache *lruCache.Cache[string, uint32]) ([]byte, error) { pbRows := new(otsprotocol.TimeseriesPBRows) pbRows.Rows = make([]*otsprotocol.TimeseriesRow, len(rows)) for i, row := range rows { @@ -337,11 +328,7 @@ func buildProtocolBufferRows(rows []*TimeseriesRow, timeseriesTableName string, } } // fetch meta update time - updateTimeInSec, ok := timeseriesMetaCache.Get(*row.timeseriesMetaKey) - var updateTime uint32 - if ok { - updateTime = updateTimeInSec.(uint32) - } + updateTime, _ := timeseriesMetaCache.Get(*row.timeseriesMetaKey) // build fields fieldMap := row.GetFieldsMap() fields := make([]*otsprotocol.TimeseriesField, 0, len(fieldMap)) diff --git a/tunnel/Gopkg.lock b/tunnel/Gopkg.lock deleted file mode 100644 index 9c72bea..0000000 --- a/tunnel/Gopkg.lock +++ /dev/null @@ -1,167 +0,0 @@ -# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. - - -[[projects]] - digest = "1:030a6f7fd300954a7c6b0e6c7e06fac75766433a46dbdce1c5b6dc61c1fd6e95" - name = "github.com/aliyun/aliyun-tablestore-go-sdk" - packages = [ - "tablestore", - "tablestore/otsprotocol", - "tablestore/search", - ] - pruneopts = "UT" - revision = "cefb18b8fe6ddc678f39cc3ac6cc24cfd83fed12" - version = "v4.1.1" - -[[projects]] - digest = "1:553f73a4171c265045ae4f5d3122429ecf2c9c0c232c91f336127fe45480104a" - name = "github.com/cenkalti/backoff" - packages = ["."] - pruneopts = "UT" - revision = "62661b46c4093e2c1f38d943e663db1a29873e80" - version = "v2.1.0" - -[[projects]] - digest = "1:ffe9824d294da03b391f44e1ae8281281b4afc1bdaa9588c9097785e3af10cec" - name = "github.com/davecgh/go-spew" - packages = ["spew"] - pruneopts = "UT" - revision = "8991bc29aa16c548c550c7ff78260e27b9ab7c73" - version = "v1.1.1" - -[[projects]] - digest = "1:b60efdeb75d3c0ceed88783ac2495256aba3491a537d0f31401202579fd62a94" - name = "github.com/golang/mock" - packages = ["gomock"] - pruneopts = "UT" - revision = "51421b967af1f557f93a59e0057aaf15ca02e29c" - version = "v1.2.0" - -[[projects]] - digest = "1:97df918963298c287643883209a2c3f642e6593379f97ab400c2a2e219ab647d" - name = "github.com/golang/protobuf" - packages = ["proto"] - pruneopts = "UT" - revision = "aa810b61a9c79d51363740d207bb46cf8e620ed5" - version = "v1.2.0" - -[[projects]] - branch = "master" - digest = "1:f14d1b50e0075fb00177f12a96dd7addf93d1e2883c25befd17285b779549795" - name = "github.com/gopherjs/gopherjs" - packages = ["js"] - pruneopts = "UT" - revision = "d547d1d9531ed93dbdebcbff7f83e7c876a1e0ee" - -[[projects]] - digest = "1:4b63210654b1f2b664f74ec434a1bb1cb442b3d75742cc064a10808d1cca6361" - name = "github.com/jtolds/gls" - packages = ["."] - pruneopts = "UT" - revision = "b4936e06046bbecbb94cae9c18127ebe510a2cb9" - version = "v4.20" - -[[projects]] - digest = "1:0028cb19b2e4c3112225cd871870f2d9cf49b9b4276531f03438a88e94be86fe" - name = "github.com/pmezard/go-difflib" - packages = ["difflib"] - pruneopts = "UT" - revision = "792786c7400a136282c1664665ae0a8db921c6c2" - version = "v1.0.0" - -[[projects]] - digest = "1:274f67cb6fed9588ea2521ecdac05a6d62a8c51c074c1fccc6a49a40ba80e925" - name = "github.com/satori/go.uuid" - packages = ["."] - pruneopts = "UT" - revision = "f58768cc1a7a7e77a3bd49e98cdd21419399b6a3" - version = "v1.2.0" - -[[projects]] - digest = "1:cc1c574c9cb5e99b123888c12b828e2d19224ab6c2244bda34647f230bf33243" - name = "github.com/smartystreets/assertions" - packages = [ - ".", - "internal/go-render/render", - "internal/oglematchers", - ] - pruneopts = "UT" - revision = "7678a5452ebea5b7090a6b163f844c133f523da2" - version = "1.8.3" - -[[projects]] - digest = "1:a3e081e593ee8e3b0a9af6a5dcac964c67a40c4f2034b5345b2ad78d05920728" - name = "github.com/smartystreets/goconvey" - packages = [ - "convey", - "convey/gotest", - "convey/reporting", - ] - pruneopts = "UT" - revision = "9e8dc3f972df6c8fcc0375ef492c24d0bb204857" - version = "1.6.3" - -[[projects]] - digest = "1:18752d0b95816a1b777505a97f71c7467a8445b8ffb55631a7bf779f6ba4fa83" - name = "github.com/stretchr/testify" - packages = ["assert"] - pruneopts = "UT" - revision = "f35b8ab0b5a2cef36673838d662e249dd9c94686" - version = "v1.2.2" - -[[projects]] - digest = "1:777e729b475d3895c7229552aa10076f0d177daf37c0a72258006d046d329960" - name = "go.uber.org/atomic" - packages = ["."] - pruneopts = "UT" - revision = "4e336646b2ef9fc6e47be8e21594178f98e5ebcf" - version = "v1.2.0" - -[[projects]] - digest = "1:60bf2a5e347af463c42ed31a493d817f8a72f102543060ed992754e689805d1a" - name = "go.uber.org/multierr" - packages = ["."] - pruneopts = "UT" - revision = "3c4937480c32f4c13a875a1829af76c98ca3d40a" - version = "v1.1.0" - -[[projects]] - digest = "1:c52caf7bd44f92e54627a31b85baf06a68333a196b3d8d241480a774733dcf8b" - name = "go.uber.org/zap" - packages = [ - ".", - "buffer", - "internal/bufferpool", - "internal/color", - "internal/exit", - "zapcore", - ] - pruneopts = "UT" - revision = "ff33455a0e382e8a81d14dd7c922020b6b5e7982" - version = "v1.9.1" - -[[projects]] - digest = "1:c805e517269b0ba4c21ded5836019ed7d16953d4026cb7d00041d039c7906be9" - name = "gopkg.in/natefinch/lumberjack.v2" - packages = ["."] - pruneopts = "UT" - revision = "a96e63847dc3c67d17befa69c303767e2f84e54f" - version = "v2.1" - -[solve-meta] - analyzer-name = "dep" - analyzer-version = 1 - input-imports = [ - "github.com/aliyun/aliyun-tablestore-go-sdk/tablestore", - "github.com/cenkalti/backoff", - "github.com/golang/mock/gomock", - "github.com/golang/protobuf/proto", - "github.com/satori/go.uuid", - "github.com/smartystreets/goconvey/convey", - "github.com/stretchr/testify/assert", - "go.uber.org/zap", - "go.uber.org/zap/zapcore", - "gopkg.in/natefinch/lumberjack.v2", - ] - solver-name = "gps-cdcl" - solver-version = 1 diff --git a/tunnel/Gopkg.toml b/tunnel/Gopkg.toml deleted file mode 100644 index 5b7ea4c..0000000 --- a/tunnel/Gopkg.toml +++ /dev/null @@ -1,66 +0,0 @@ -# Gopkg.toml example -# -# Refer to https://golang.github.io/dep/docs/Gopkg.toml.html -# for detailed Gopkg.toml documentation. -# -# required = ["github.com/user/thing/cmd/thing"] -# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"] -# -# [[constraint]] -# name = "github.com/user/project" -# version = "1.0.0" -# -# [[constraint]] -# name = "github.com/user/project2" -# branch = "dev" -# source = "github.com/myfork/project2" -# -# [[override]] -# name = "github.com/x/y" -# version = "2.4.0" -# -# [prune] -# non-go = false -# go-tests = true -# unused-packages = true - - -[[constraint]] - name = "github.com/aliyun/aliyun-tablestore-go-sdk" - version = "4.1.1" - -[[constraint]] - name = "github.com/cenkalti/backoff" - version = "2.1.0" - -[[constraint]] - name = "github.com/golang/mock" - version = "1.2.0" - -[[constraint]] - name = "github.com/golang/protobuf" - version = "1.2.0" - -[[constraint]] - name = "github.com/satori/go.uuid" - version = "1.2.0" - -[[constraint]] - name = "github.com/smartystreets/goconvey" - version = "1.6.3" - -[[constraint]] - name = "github.com/stretchr/testify" - version = "1.2.2" - -[[constraint]] - name = "go.uber.org/zap" - version = "1.9.1" - -[[constraint]] - name = "gopkg.in/natefinch/lumberjack.v2" - version = "2.1.0" - -[prune] - go-tests = true - unused-packages = true diff --git a/tunnel/README.md b/tunnel/README.md index d8bef63..75aed27 100644 --- a/tunnel/README.md +++ b/tunnel/README.md @@ -10,24 +10,6 @@ Table Store tunnel service golang sdk. go get github.com/aliyun/aliyun-tablestore-go-sdk/tunnel ``` - -* use dep to install dependencies under tunnel directory - * install [dep](https://github.com/golang/dep#installation) - * dep ensure -v -* or use `go get` to install dependencies - -```bash -go get -u go.uber.org/zap -go get github.com/cenkalti/backoff -go get github.com/golang/protobuf/proto -go get github.com/satori/go.uuid -go get github.com/stretchr/testify/assert -go get github.com/smartystreets/goconvey/convey -go get github.com/golang/mock/gomock -go get gopkg.in/natefinch/lumberjack.v2 -``` - - ### Document * [中文文档](https://help.aliyun.com/document_detail/102520.html?spm=a2c4g.11174283.6.766.379b15c3R8lQsh) diff --git a/tunnel/api.go b/tunnel/api.go index 8775325..11d7694 100644 --- a/tunnel/api.go +++ b/tunnel/api.go @@ -7,11 +7,6 @@ import ( "encoding/json" "errors" "fmt" - "github.com/aliyun/aliyun-tablestore-go-sdk/common" - "github.com/aliyun/aliyun-tablestore-go-sdk/tunnel/protocol" - "github.com/cenkalti/backoff" - "github.com/golang/protobuf/proto" - "github.com/satori/go.uuid" "io" "io/ioutil" "net" @@ -19,6 +14,12 @@ import ( "os" "strings" "time" + + "github.com/aliyun/aliyun-tablestore-go-sdk/common" + "github.com/aliyun/aliyun-tablestore-go-sdk/tunnel/protocol" + "github.com/cenkalti/backoff/v4" + "github.com/golang/protobuf/proto" + uuid "github.com/google/uuid" ) const ( @@ -195,9 +196,13 @@ func (api *TunnelApi) doRequestInternal(url string, uri string, body []byte, res hreq.Header.Set(xOtsHeaderStsToken, akInfo.GetSecurityToken()) otshead.set(xOtsHeaderStsToken, akInfo.GetSecurityToken()) } - traceId := uuid.NewV4() - hreq.Header.Set(xOtsHeaderTraceID, traceId.String()) - otshead.set(xOtsHeaderTraceID, traceId.String()) + traceIdObj, err := uuid.NewRandom() + if err != nil { + return nil, err, "" + } + traceId := traceIdObj.String() + hreq.Header.Set(xOtsHeaderTraceID, traceId) + otshead.set(xOtsHeaderTraceID, traceId) otshead.set(xOtsContentmd5, md5Base64) otshead.set(xOtsInstanceName, api.instanceName) @@ -483,7 +488,7 @@ func (api *TunnelApi) GetCheckpoint(tunnelId, clientId string, channelId string) return *getCheckpointResponse.Checkpoint, *getCheckpointResponse.SequenceNumber, nil } -//add for oss data lake sync part +// add for oss data lake sync part func (api *TunnelApi) ReadRows(tunnelId, clientId string, channelId string, token string) ([]*protocol.Record, string, string, int, error) { readRecordsRequest := &protocol.ReadRecordsRequest{ TunnelId: &tunnelId, @@ -518,11 +523,11 @@ func (api *TunnelApi) ReadRecords(req *ReadRecordRequest) (*ReadRecordResponse, } records := readRecordsResponse.GetRecords() response := &ReadRecordResponse{ - NextToken: *readRecordsResponse.NextToken, - Size: size, - RecordCount: len(records), + NextToken: *readRecordsResponse.NextToken, + Size: size, + RecordCount: len(records), MayMoreRecord: readRecordsResponse.MayMoreRecord, - ResponseInfo: ResponseInfo{traceId}, + ResponseInfo: ResponseInfo{traceId}, } if req.NeedBinaryRecord { diff --git a/tunnel/api_test.go b/tunnel/api_test.go index 396e1a9..98f3a9a 100644 --- a/tunnel/api_test.go +++ b/tunnel/api_test.go @@ -2,9 +2,6 @@ package tunnel import ( "fmt" - "github.com/aliyun/aliyun-tablestore-go-sdk/tunnel/protocol" - "github.com/golang/protobuf/proto" - "github.com/stretchr/testify/assert" "io/ioutil" "net/http" "net/http/httptest" @@ -12,6 +9,10 @@ import ( "sync/atomic" "testing" "time" + + "github.com/aliyun/aliyun-tablestore-go-sdk/tunnel/protocol" + "github.com/golang/protobuf/proto" + "github.com/stretchr/testify/assert" ) var ( diff --git a/tunnel/channel.go b/tunnel/channel.go index d15207f..633a47b 100644 --- a/tunnel/channel.go +++ b/tunnel/channel.go @@ -1,13 +1,14 @@ package tunnel import ( - "github.com/aliyun/aliyun-tablestore-go-sdk/tunnel/protocol" - "github.com/cenkalti/backoff" - "go.uber.org/zap" "strings" "sync" "sync/atomic" "time" + + "github.com/aliyun/aliyun-tablestore-go-sdk/tunnel/protocol" + "github.com/cenkalti/backoff/v4" + "go.uber.org/zap" ) var ( @@ -460,8 +461,8 @@ type defaultParallelReleaseManager struct { } /* - Manually release the quota occupied by this channel, after release, Other channels can preempt this channel. - Only the channel that occupies quota can read and process data. +Manually release the quota occupied by this channel, after release, Other channels can preempt this channel. +Only the channel that occupies quota can read and process data. */ func (c *defaultParallelReleaseManager) Release() bool { c.mu.Lock() diff --git a/tunnel/channel_test.go b/tunnel/channel_test.go index 7f02ae1..d318cc0 100644 --- a/tunnel/channel_test.go +++ b/tunnel/channel_test.go @@ -2,13 +2,14 @@ package tunnel import ( "errors" + "sync/atomic" + "testing" + "time" + "github.com/aliyun/aliyun-tablestore-go-sdk/tunnel/protocol" "github.com/golang/mock/gomock" . "github.com/smartystreets/goconvey/convey" "go.uber.org/zap" - "sync/atomic" - "testing" - "time" ) var ( diff --git a/tunnel/checkpointer.go b/tunnel/checkpointer.go index 22f72a6..508408f 100644 --- a/tunnel/checkpointer.go +++ b/tunnel/checkpointer.go @@ -1,6 +1,8 @@ package tunnel -import "fmt" +import ( + "fmt" +) type Checkpointer interface { Checkpoint(token string) error diff --git a/tunnel/config.go b/tunnel/config.go index 39474a4..49c0de2 100644 --- a/tunnel/config.go +++ b/tunnel/config.go @@ -2,11 +2,12 @@ package tunnel import ( "fmt" + "net/http" + "time" + "go.uber.org/zap" "go.uber.org/zap/zapcore" "gopkg.in/natefinch/lumberjack.v2" - "net/http" - "time" ) var ( diff --git a/tunnel/daemon_test.go b/tunnel/daemon_test.go index b792b71..fad0c3a 100644 --- a/tunnel/daemon_test.go +++ b/tunnel/daemon_test.go @@ -3,11 +3,12 @@ package tunnel import ( "errors" "fmt" - "github.com/golang/mock/gomock" - "github.com/smartystreets/goconvey/convey" "sync/atomic" "testing" "time" + + "github.com/golang/mock/gomock" + "github.com/smartystreets/goconvey/convey" ) func TestTunnelWorkerDaemon_Run(t *testing.T) { diff --git a/tunnel/error.go b/tunnel/error.go index 83078bd..fac0e79 100644 --- a/tunnel/error.go +++ b/tunnel/error.go @@ -3,6 +3,7 @@ package tunnel import ( "errors" "fmt" + "github.com/aliyun/aliyun-tablestore-go-sdk/tunnel/protocol" ) diff --git a/tunnel/error_test.go b/tunnel/error_test.go index da876bf..4e749b8 100644 --- a/tunnel/error_test.go +++ b/tunnel/error_test.go @@ -1,8 +1,9 @@ package tunnel import ( - . "github.com/smartystreets/goconvey/convey" "testing" + + . "github.com/smartystreets/goconvey/convey" ) func TestTunnelError_Temporary(t *testing.T) { diff --git a/tunnel/header.go b/tunnel/header.go index 02795e3..c7e4bb5 100644 --- a/tunnel/header.go +++ b/tunnel/header.go @@ -48,18 +48,18 @@ func createOtsHeaders(accessKey string) *otsHeaders { h := new(otsHeaders) h.headers = []*otsHeader{ - &otsHeader{name: xOtsDate, must: true}, - &otsHeader{name: xOtsApiversion, must: true}, - &otsHeader{name: xOtsAccesskeyid, must: true}, - &otsHeader{name: xOtsContentmd5, must: true}, - &otsHeader{name: xOtsInstanceName, must: true}, - &otsHeader{name: xOtsSignature, must: true}, - &otsHeader{name: xOtsRequestCompressSize, must: false}, - &otsHeader{name: xOtsResponseCompressTye, must: false}, - &otsHeader{name: xOtsRequestCompressType, must: false}, - &otsHeader{name: xOtsHeaderStsToken, must: false}, - &otsHeader{name: xOtsHeaderTraceID, must: false}, - &otsHeader{name: xOtsHeaderTunnelType, must: false}, + {name: xOtsDate, must: true}, + {name: xOtsApiversion, must: true}, + {name: xOtsAccesskeyid, must: true}, + {name: xOtsContentmd5, must: true}, + {name: xOtsInstanceName, must: true}, + {name: xOtsSignature, must: true}, + {name: xOtsRequestCompressSize, must: false}, + {name: xOtsResponseCompressTye, must: false}, + {name: xOtsRequestCompressType, must: false}, + {name: xOtsHeaderStsToken, must: false}, + {name: xOtsHeaderTraceID, must: false}, + {name: xOtsHeaderTunnelType, must: false}, } sort.Sort(h) diff --git a/tunnel/processor.go b/tunnel/processor.go index 6ea27ae..386ca95 100644 --- a/tunnel/processor.go +++ b/tunnel/processor.go @@ -1,10 +1,11 @@ package tunnel import ( - "go.uber.org/atomic" - "go.uber.org/zap" "sync" + "sync/atomic" "time" + + "go.uber.org/zap" ) var ( @@ -65,7 +66,7 @@ func (s *SimpleProcessFactory) NewProcessor(tunnelId, clientId, channelId string ticker: time.NewTicker(interval), wg: new(sync.WaitGroup), lg: lg, - finished: atomic.NewBool(false), + finished: 0, needBinaryRecords: s.NeedBinaryRecord, alwaysCallBack: s.AlwaysCallBack, recordPipePerChannel: *s.RecordPipePerChannel, @@ -119,7 +120,7 @@ func (s *AsyncProcessFactory) NewProcessor(tunnelId, clientId, channelId string, ticker: time.NewTicker(interval), wg: new(sync.WaitGroup), lg: lg, - finished: atomic.NewBool(false), + finished: 0, asyncProcessFlag: true, needBinaryRecords: s.NeedBinaryRecord, alwaysCallBack: s.AlwaysCallBack, @@ -145,7 +146,7 @@ type defaultProcessor struct { ticker *time.Ticker wg *sync.WaitGroup - finished *atomic.Bool + finished uint32 lg *zap.Logger @@ -183,7 +184,7 @@ func (p *defaultProcessor) Process(records []*Record, binaryRecords []byte, reco } } if nextToken == FinishTag { - p.finished.Store(true) + atomic.StoreUint32(&p.finished, 1) p.Shutdown() } return nil @@ -211,7 +212,7 @@ func (p *defaultProcessor) Shutdown() { } func (p *defaultProcessor) Finished() bool { - return p.finished.Load() + return atomic.LoadUint32(&p.finished) == 1 } func (p *defaultProcessor) cpLoop() { diff --git a/tunnel/util.go b/tunnel/util.go index a3a3a40..9a6a894 100644 --- a/tunnel/util.go +++ b/tunnel/util.go @@ -6,12 +6,13 @@ import ( "encoding/binary" "errors" "fmt" + "io" + "time" + "github.com/aliyun/aliyun-tablestore-go-sdk/common" "github.com/aliyun/aliyun-tablestore-go-sdk/tunnel/protocol" - "github.com/cenkalti/backoff" + "github.com/cenkalti/backoff/v4" "github.com/golang/protobuf/proto" - "io" - "time" ) var ( diff --git a/tunnel/worker.go b/tunnel/worker.go index b9bfa27..eec5157 100644 --- a/tunnel/worker.go +++ b/tunnel/worker.go @@ -3,9 +3,10 @@ package tunnel import ( "context" "fmt" - "go.uber.org/zap" "sync/atomic" "time" + + "go.uber.org/zap" ) var ( @@ -56,6 +57,7 @@ func newTunnelWorker(tunnelId string, api *TunnelApi, conf *TunnelWorkerConfig) initExceptDialerConfig(&cloneConf) lg, err := cloneConf.LogConfig.Build(ReplaceLogCore(cloneConf.LogWriteSyncer, *cloneConf.LogConfig)) if err != nil { + cancel() return nil, &TunnelError{Code: ErrCodeClientError, Message: err.Error()} } if cloneConf.ChannelDialer == nil {