Bohdan Siryk created CASSGO-122:
-----------------------------------
Summary: Panic when using a HostFilter and keyspace is not
replicated to every DC
Key: CASSGO-122
URL: https://issues.apache.org/jira/browse/CASSGO-122
Project: Apache Cassandra Go driver
Issue Type: Bug
Reporter: Bohdan Siryk
There is a panic during session initialization when a multi-DC C* cluster has 2
keyspaces, and one of them is not replicated to the DC the session connected to
via HostFilter.
To reproduce setup C* multi-dc cluster *ccm create -v 5.0.8 gocql_test3 -n 3:3*
and run the following code:
func main() { // CREATE KEYSPACE IF NOT EXISTS ks1 WITH replication = \{
'class': 'NetworkTopologyStrategy', 'datacenter1': 3 };// CREATE KEYSPACE IF
NOT EXISTS ks2 WITH replication = \{ 'class': 'NetworkTopologyStrategy',
'datacenter1': 3, 'datacenter2': 3 };const localDC = "dc1"const remoteDC =
"dc2"cfg := gocql.NewCluster("127.0.0.4") cfg.PoolConfig.HostSelectionPolicy
= gocql.TokenAwareHostPolicy(gocql.RoundRobinHostPolicy()) cfg.Timeout = 1 *
time.Hourcfg.ConnectTimeout = 1 * time.Hourcfg.HostFilter =
gocql.HostFilterFunc(func(host *gocql.HostInfo) bool { return
host.DataCenter() == remoteDC }) session, err := cfg.CreateSession()
if err != nil { panic(err)
} defer session.Close() metadata, err :=
session.KeyspaceMetadata("ks1") if err != nil { panic(err)
} fmt.Println(toJSON(metadata))
}func toJSON(data any) string { json, err := json.Marshal(data) if err != nil {
panic(err)
} return string(json)
}
Originally raised: https://github.com/apache/cassandra-gocql-driver/issues/1947
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]