ncabatoff opened a new issue, #1473:
URL: https://github.com/apache/cassandra-gocql-driver/issues/1473
Please answer these questions before submitting your issue. Thanks!
### What version of Cassandra are you using?
Docker image cassandra:3.11.
### What version of Gocql are you using?
```
$ grep gocql go.mod
github.com/gocql/gocql v0.0.0-20200624222514-34081eda590e
```
### What did you do?
```
sess, err := cluster.CreateSession()
if err != nil {
return nil, err
}
sess.SetConsistency(consistency)
```
Elsewhere:
```
sess.Query(...)
```
### What did you expect to see?
No data race when running with `-race`.
### What did you see instead?
```
=== FAIL: physical/cassandra TestCassandraBackend (25.07s)
==================
WARNING: DATA RACE
Read at 0x00c0001d8380 by goroutine 25:
github.com/hashicorp/vault/vendor/github.com/gocql/gocql.(*Conn).UseKeyspace()
/go/src/github.com/hashicorp/vault/vendor/github.com/gocql/gocql/conn.go:1235
+0x186
github.com/hashicorp/vault/vendor/github.com/gocql/gocql.(*hostConnPool).connect()
/go/src/github.com/hashicorp/vault/vendor/github.com/gocql/gocql/connectionpool.go:534
+0x53d
github.com/hashicorp/vault/vendor/github.com/gocql/gocql.(*hostConnPool).connectMany.func1()
/go/src/github.com/hashicorp/vault/vendor/github.com/gocql/gocql/connectionpool.go:487
+0x79
Previous write at 0x00c0001d8380 by goroutine 7:
github.com/hashicorp/vault/vendor/github.com/gocql/gocql.(*Session).SetConsistency()
/go/src/github.com/hashicorp/vault/vendor/github.com/gocql/gocql/session.go:336
+0x54
github.com/hashicorp/vault/physical/cassandra.NewCassandraBackend()
/go/src/github.com/hashicorp/vault/physical/cassandra/cassandra.go:144
+0x917
github.com/hashicorp/vault/physical/cassandra.TestCassandraBackend()
/go/src/github.com/hashicorp/vault/physical/cassandra/cassandra_test.go:29
+0x2dc
testing.tRunner()
/usr/local/go/src/testing/testing.go:1039 +0x1eb
Goroutine 25 (running) created at:
github.com/hashicorp/vault/vendor/github.com/gocql/gocql.(*hostConnPool).connectMany()
/go/src/github.com/hashicorp/vault/vendor/github.com/gocql/gocql/connectionpool.go:485
+0x159
github.com/hashicorp/vault/vendor/github.com/gocql/gocql.(*hostConnPool).fill.func1()
/go/src/github.com/hashicorp/vault/vendor/github.com/gocql/gocql/connectionpool.go:439
+0x42
Goroutine 7 (running) created at:
testing.(*T).Run()
/usr/local/go/src/testing/testing.go:1090 +0x700
testing.runTests.func1()
/usr/local/go/src/testing/testing.go:1334 +0xa6
testing.tRunner()
/usr/local/go/src/testing/testing.go:1039 +0x1eb
testing.runTests()
/usr/local/go/src/testing/testing.go:1332 +0x527
testing.(*M).Run()
/usr/local/go/src/testing/testing.go:1249 +0x43f
main.main()
_testmain.go:46 +0x223
```
---
To reproduce, clone `github.com/hashicorp/vault`, then:
```
go test -race ./physical/cassandra
```
The issue looks to be that although `Session.SetConsistency` uses a lock to
protect writes to `s.cons`, `Conn.UseKeyscape` reads `c.session.cons` without
any mechanism to manage thread safety.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]