Skip to content

Commit fccc8a2

Browse files
committedJun 20, 2024
Update Cassandra native protocol version
1 parent 614d438 commit fccc8a2

File tree

10 files changed

+75
-187
lines changed

10 files changed

+75
-187
lines changed
 

‎.github/workflows/test.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ jobs:
44
test:
55
strategy:
66
matrix:
7-
go-version: [1.15.x, 1.16.x]
7+
go-version: [1.18.x]
88
os: [ubuntu-latest, macos-latest]
99
runs-on: ${{ matrix.os }}
1010
steps:

‎astra/bundle.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ func generateSecureBundleURLWithResponse(url, databaseID, token string, ctx cont
149149
if err != nil {
150150
return nil, err
151151
}
152-
res, err := client.GenerateSecureBundleURLWithResponse(ctx, astra.DatabaseIdParam(databaseID))
152+
res, err := client.GenerateSecureBundleURLWithResponse(ctx, databaseID, &astra.GenerateSecureBundleURLParams{})
153153
if err != nil {
154154
return nil, fmt.Errorf("error generating bundle urls: %v", err)
155155
}
@@ -158,7 +158,7 @@ func generateSecureBundleURLWithResponse(url, databaseID, token string, ctx cont
158158
return nil, fmt.Errorf("unable to generate bundle urls, failed with status code %d", res.StatusCode())
159159
}
160160

161-
return res.JSON200, nil
161+
return &(*res.JSON200)[0], nil
162162
}
163163

164164
func extract(reader *zip.Reader) (map[string][]byte, error) {

‎go.mod

+17-6
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,26 @@
11
module github.com/datastax/cql-proxy
22

3-
go 1.16
3+
go 1.18
44

55
require (
66
github.com/alecthomas/kong v0.2.17
7-
github.com/datastax/astra-client-go/v2 v2.2.9 // indirect
8-
github.com/datastax/go-cassandra-native-protocol v0.0.0-20211124104234-f6aea54fa801
7+
github.com/datastax/astra-client-go/v2 v2.2.54
8+
github.com/datastax/go-cassandra-native-protocol v0.0.0-20220706104457-5e8aad05cf90
99
github.com/hashicorp/golang-lru v0.5.4
10-
github.com/stretchr/testify v1.7.0
10+
github.com/stretchr/testify v1.8.1
1111
go.uber.org/atomic v1.8.0
12-
go.uber.org/multierr v1.7.0 // indirect
1312
go.uber.org/zap v1.17.0
14-
gopkg.in/yaml.v2 v2.4.0 // indirect
13+
gopkg.in/yaml.v2 v2.4.0
14+
)
15+
16+
require (
17+
github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect
18+
github.com/davecgh/go-spew v1.1.1 // indirect
19+
github.com/deepmap/oapi-codegen v1.12.4 // indirect
20+
github.com/google/uuid v1.3.0 // indirect
21+
github.com/kr/text v0.2.0 // indirect
22+
github.com/pkg/errors v0.9.1 // indirect
23+
github.com/pmezard/go-difflib v1.0.0 // indirect
24+
go.uber.org/multierr v1.7.0 // indirect
25+
gopkg.in/yaml.v3 v3.0.1 // indirect
1526
)

‎go.sum

+26-150
Large diffs are not rendered by default.

‎parser/metadata.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ var (
2525
{Keyspace: "system", Table: "local", Name: "rpc_address", Type: datatype.Inet},
2626
{Keyspace: "system", Table: "local", Name: "data_center", Type: datatype.Varchar},
2727
{Keyspace: "system", Table: "local", Name: "rack", Type: datatype.Varchar},
28-
{Keyspace: "system", Table: "local", Name: "tokens", Type: datatype.NewSetType(datatype.Varchar)},
28+
{Keyspace: "system", Table: "local", Name: "tokens", Type: datatype.NewSet(datatype.Varchar)},
2929
{Keyspace: "system", Table: "local", Name: "release_version", Type: datatype.Varchar},
3030
{Keyspace: "system", Table: "local", Name: "partitioner", Type: datatype.Varchar},
3131
{Keyspace: "system", Table: "local", Name: "cluster_name", Type: datatype.Varchar},
@@ -43,7 +43,7 @@ var (
4343
// language.
4444
{Keyspace: "system", Table: "local", Name: "dse_version", Type: datatype.Varchar}, // DSE only
4545
{Keyspace: "system", Table: "local", Name: "rack", Type: datatype.Varchar},
46-
{Keyspace: "system", Table: "local", Name: "tokens", Type: datatype.NewSetType(datatype.Varchar)},
46+
{Keyspace: "system", Table: "local", Name: "tokens", Type: datatype.NewSet(datatype.Varchar)},
4747
{Keyspace: "system", Table: "local", Name: "release_version", Type: datatype.Varchar},
4848
{Keyspace: "system", Table: "local", Name: "partitioner", Type: datatype.Varchar},
4949
{Keyspace: "system", Table: "local", Name: "cluster_name", Type: datatype.Varchar},
@@ -58,7 +58,7 @@ var (
5858
{Keyspace: "system", Table: "peers", Name: "rpc_address", Type: datatype.Inet},
5959
{Keyspace: "system", Table: "peers", Name: "data_center", Type: datatype.Varchar},
6060
{Keyspace: "system", Table: "peers", Name: "rack", Type: datatype.Varchar},
61-
{Keyspace: "system", Table: "peers", Name: "tokens", Type: datatype.NewSetType(datatype.Varchar)},
61+
{Keyspace: "system", Table: "peers", Name: "tokens", Type: datatype.NewSet(datatype.Varchar)},
6262
{Keyspace: "system", Table: "peers", Name: "release_version", Type: datatype.Varchar},
6363
{Keyspace: "system", Table: "peers", Name: "schema_version", Type: datatype.Uuid},
6464
{Keyspace: "system", Table: "peers", Name: "host_id", Type: datatype.Uuid},
@@ -70,7 +70,7 @@ var (
7070
{Keyspace: "system", Table: "peers", Name: "data_center", Type: datatype.Varchar},
7171
{Keyspace: "system", Table: "peers", Name: "dse_version", Type: datatype.Varchar}, // DSE only
7272
{Keyspace: "system", Table: "peers", Name: "rack", Type: datatype.Varchar},
73-
{Keyspace: "system", Table: "peers", Name: "tokens", Type: datatype.NewSetType(datatype.Varchar)},
73+
{Keyspace: "system", Table: "peers", Name: "tokens", Type: datatype.NewSet(datatype.Varchar)},
7474
{Keyspace: "system", Table: "peers", Name: "release_version", Type: datatype.Varchar},
7575
{Keyspace: "system", Table: "peers", Name: "schema_version", Type: datatype.Uuid},
7676
{Keyspace: "system", Table: "peers", Name: "host_id", Type: datatype.Uuid},
@@ -96,7 +96,7 @@ var (
9696
{Keyspace: "system", Table: "schema_columnfamilies", Name: "compression_parameters", Type: datatype.Varchar},
9797
{Keyspace: "system", Table: "schema_columnfamilies", Name: "default_time_to_live", Type: datatype.Int},
9898
{Keyspace: "system", Table: "schema_columnfamilies", Name: "default_validator", Type: datatype.Varchar},
99-
{Keyspace: "system", Table: "schema_columnfamilies", Name: "dropped_columns", Type: datatype.NewMapType(datatype.Varchar, datatype.Bigint)},
99+
{Keyspace: "system", Table: "schema_columnfamilies", Name: "dropped_columns", Type: datatype.NewMap(datatype.Varchar, datatype.Bigint)},
100100
{Keyspace: "system", Table: "schema_columnfamilies", Name: "gc_grace_seconds", Type: datatype.Int},
101101
{Keyspace: "system", Table: "schema_columnfamilies", Name: "is_dense", Type: datatype.Boolean},
102102
{Keyspace: "system", Table: "schema_columnfamilies", Name: "key_validator", Type: datatype.Varchar},
@@ -127,8 +127,8 @@ var (
127127
SystemSchemaUsertypes = []*message.ColumnMetadata{
128128
{Keyspace: "system", Table: "schema_usertypes", Name: "keyspace_name", Type: datatype.Varchar},
129129
{Keyspace: "system", Table: "schema_usertypes", Name: "type_name", Type: datatype.Varchar},
130-
{Keyspace: "system", Table: "schema_usertypes", Name: "field_names", Type: datatype.NewListType(datatype.Varchar)},
131-
{Keyspace: "system", Table: "schema_usertypes", Name: "field_types", Type: datatype.NewListType(datatype.Varchar)},
130+
{Keyspace: "system", Table: "schema_usertypes", Name: "field_names", Type: datatype.NewList(datatype.Varchar)},
131+
{Keyspace: "system", Table: "schema_usertypes", Name: "field_types", Type: datatype.NewList(datatype.Varchar)},
132132
}
133133
)
134134

‎proxy/codecs.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func (p *partialQuery) GetOpCode() primitive.OpCode {
6262
return primitive.OpCodeQuery
6363
}
6464

65-
func (p *partialQuery) Clone() message.Message {
65+
func (p *partialQuery) DeepCopyMessage() message.Message {
6666
return &partialQuery{p.query}
6767
}
6868

@@ -78,10 +78,10 @@ func (m *partialExecute) GetOpCode() primitive.OpCode {
7878
return primitive.OpCodeExecute
7979
}
8080

81-
func (m *partialExecute) Clone() message.Message {
82-
return &partialExecute{
83-
queryId: primitive.CloneByteSlice(m.queryId),
84-
}
81+
func (m *partialExecute) DeepCopyMessage() message.Message {
82+
queryId := make([]byte, len(m.queryId))
83+
copy(queryId, m.queryId)
84+
return &partialExecute{queryId}
8585
}
8686

8787
func (m *partialExecute) String() string {
@@ -124,7 +124,7 @@ func (p partialBatch) GetOpCode() primitive.OpCode {
124124
return primitive.OpCodeBatch
125125
}
126126

127-
func (p partialBatch) Clone() message.Message {
127+
func (p partialBatch) DeepCopyMessage() message.Message {
128128
queryOrIds := make([]interface{}, len(p.queryOrIds))
129129
copy(queryOrIds, p.queryOrIds)
130130
return &partialBatch{queryOrIds}

‎proxy/proxy.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,7 @@ func (p *Proxy) buildLocalRow() {
447447
"key": p.encodeTypeFatal(datatype.Varchar, "local"),
448448
"data_center": p.encodeTypeFatal(datatype.Varchar, p.localNode.dc),
449449
"rack": p.encodeTypeFatal(datatype.Varchar, "rack1"),
450-
"tokens": p.encodeTypeFatal(datatype.NewListType(datatype.Varchar), p.localNode.tokens),
450+
"tokens": p.encodeTypeFatal(datatype.NewList(datatype.Varchar), p.localNode.tokens),
451451
"release_version": p.encodeTypeFatal(datatype.Varchar, p.cluster.Info.ReleaseVersion),
452452
"partitioner": p.encodeTypeFatal(datatype.Varchar, p.cluster.Info.Partitioner),
453453
"cluster_name": p.encodeTypeFatal(datatype.Varchar, "cql-proxy"),
@@ -734,7 +734,7 @@ func (c *client) filterSystemPeerValues(stmt *parser.SelectStatement, filtered [
734734
} else if name == "host_id" {
735735
return proxycore.EncodeType(datatype.Uuid, c.proxy.cluster.NegotiatedVersion, nameBasedUUID(peer.addr.String()))
736736
} else if name == "tokens" {
737-
return proxycore.EncodeType(datatype.NewListType(datatype.Varchar), c.proxy.cluster.NegotiatedVersion, peer.tokens)
737+
return proxycore.EncodeType(datatype.NewList(datatype.Varchar), c.proxy.cluster.NegotiatedVersion, peer.tokens)
738738
} else if name == "peer" {
739739
return proxycore.EncodeType(datatype.Inet, c.proxy.cluster.NegotiatedVersion, peer.addr.IP)
740740
} else if name == "rpc_address" {

‎proxy/proxy_retries_test.go

+6-5
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ func TestProxy_BatchRetries(t *testing.T) {
248248
{
249249
"write timeout error, retry once if logged batch",
250250
&message.Batch{Children: []*message.BatchChild{
251-
{QueryOrId: idempotentQuery},
251+
{Query: idempotentQuery},
252252
}},
253253
&message.WriteTimeout{
254254
ErrorMessage: "WriteTimeout",
@@ -263,7 +263,7 @@ func TestProxy_BatchRetries(t *testing.T) {
263263
{
264264
"write timeout error, retry once if logged batch w/ prepared statement",
265265
&message.Batch{Children: []*message.BatchChild{
266-
{QueryOrId: idempotentQueryHash[:]},
266+
{Id: idempotentQueryHash[:]},
267267
}},
268268
&message.WriteTimeout{
269269
ErrorMessage: "WriteTimeout",
@@ -278,7 +278,7 @@ func TestProxy_BatchRetries(t *testing.T) {
278278
{
279279
"batch w/ non-idempotent query, don't retry",
280280
&message.Batch{Children: []*message.BatchChild{
281-
{QueryOrId: nonIdempotentQuery},
281+
{Query: nonIdempotentQuery},
282282
}},
283283
&message.WriteTimeout{
284284
ErrorMessage: "WriteTimeout",
@@ -293,7 +293,7 @@ func TestProxy_BatchRetries(t *testing.T) {
293293
{
294294
"batch w/ non-idempotent prepared query, don't retry",
295295
&message.Batch{Children: []*message.BatchChild{
296-
{QueryOrId: nonIdempotentQueryHash[:]},
296+
{Id: nonIdempotentQueryHash[:]},
297297
}},
298298
&message.WriteTimeout{
299299
ErrorMessage: "WriteTimeout",
@@ -414,7 +414,8 @@ func testProxyRetryWithConfig(t *testing.T, query *frame.Frame, response message
414414
mu.Lock()
415415
defer mu.Unlock()
416416
for _, child := range msg.Children {
417-
if id, ok := child.QueryOrId.([]byte); ok {
417+
id := child.Id
418+
if id != nil {
418419
var hash [16]byte
419420
copy(hash[:], id)
420421
if _, ok := prepared[hash]; !ok {

‎proxycore/codecs.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -63,16 +63,16 @@ func DecodeType(dt datatype.DataType, version primitive.ProtocolVersion, bytes [
6363
}
6464

6565
func codecFromDataType(dt datatype.DataType) (datacodec.Codec, error) {
66-
switch dt.GetDataTypeCode() {
66+
switch dt.Code() {
6767
case primitive.DataTypeCodeList:
68-
listType := dt.(datatype.ListType)
69-
return datacodec.NewList(datatype.NewListType(listType.GetElementType()))
68+
listType := dt.(*datatype.List)
69+
return datacodec.NewList(datatype.NewList(listType.ElementType))
7070
case primitive.DataTypeCodeSet:
71-
setType := dt.(datatype.SetType)
72-
return datacodec.NewSet(datatype.NewListType(setType.GetElementType()))
71+
setType := dt.(*datatype.Set)
72+
return datacodec.NewSet(datatype.NewSet(setType.ElementType))
7373
case primitive.DataTypeCodeMap:
74-
mapType := dt.(datatype.MapType)
75-
return datacodec.NewMap(datatype.NewMapType(mapType.GetKeyType(), mapType.GetValueType()))
74+
mapType := dt.(*datatype.Map)
75+
return datacodec.NewMap(datatype.NewMap(mapType.KeyType, mapType.ValueType))
7676
default:
7777
codec, ok := primitiveCodecs[dt]
7878
if !ok {

‎proxycore/mockcluster.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ func (c *MockClient) makeSystemValues(version primitive.ProtocolVersion, address
262262
"rpc_address": encodeTypeFatal(version, datatype.Inet, address),
263263
"data_center": encodeTypeFatal(version, datatype.Varchar, "dc1"),
264264
"rack": encodeTypeFatal(version, datatype.Varchar, "rack1"),
265-
"tokens": encodeTypeFatal(version, datatype.NewListType(datatype.Varchar), []string{"0"}),
265+
"tokens": encodeTypeFatal(version, datatype.NewList(datatype.Varchar), []string{"0"}),
266266
"release_version": encodeTypeFatal(version, datatype.Varchar, "3.11.10"),
267267
"host_id": encodeTypeFatal(version, datatype.Uuid, hostID),
268268
"schema_version": encodeTypeFatal(version, datatype.Uuid, schemaVersion),

0 commit comments

Comments
 (0)