[
https://issues.apache.org/jira/browse/CASSGO-122?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
João Reis updated CASSGO-122:
-----------------------------
Status: Review In Progress (was: Needs Committer)
> 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
> Components: Core
> Reporter: Bohdan Siryk
> Assignee: Bohdan Siryk
> Priority: Normal
> Fix For: 2.1.2
>
> Time Spent: 2h 50m
> Remaining Estimate: 0h
>
> 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.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]