Unable to read cassandra-rackdc.properties

390 views
Skip to first unread message

Animesh Srivastava

unread,
Aug 25, 2021, 4:27:10 AM8/25/21
to debezium
Hi,

I am facing below issue while using DSE cassandra:

Exception in thread "main" io.debezium.connector.cassandra.exceptions.CassandraConnectorTaskException: Failed to initialize Cassandra Connector Context.
        at io.debezium.connector.cassandra.CassandraConnectorContext.<init>(CassandraConnectorContext.java:76)
        at io.debezium.connector.cassandra.CassandraConnectorTask.run(CassandraConnectorTask.java:74)
        at io.debezium.connector.cassandra.CassandraConnectorTask.main(CassandraConnectorTask.java:63)
Caused by: org.apache.cassandra.exceptions.ConfigurationException: Error instantiating snitch class 'org.apache.cassandra.locator.GossipingPropertyFileSnitch'.
        at org.apache.cassandra.utils.FBUtilities.construct(FBUtilities.java:616)
        at org.apache.cassandra.utils.FBUtilities.construct(FBUtilities.java:594)
        at org.apache.cassandra.config.DatabaseDescriptor.createEndpointSnitch(DatabaseDescriptor.java:1103)
        at org.apache.cassandra.config.DatabaseDescriptor.applySnitch(DatabaseDescriptor.java:1031)
        at org.apache.cassandra.config.DatabaseDescriptor.toolInitialization(DatabaseDescriptor.java:197)
        at org.apache.cassandra.config.DatabaseDescriptor.toolInitialization(DatabaseDescriptor.java:162)
        at io.debezium.connector.cassandra.CassandraConnectorContext.loadDdlFromDisk(CassandraConnectorContext.java:89)
        at io.debezium.connector.cassandra.CassandraConnectorContext.<init>(CassandraConnectorContext.java:46)
        ... 2 more
Caused by: org.apache.cassandra.exceptions.ConfigurationException: DC or rack not found in snitch properties, check your configuration in: cassandra-rackdc.properties
        at org.apache.cassandra.locator.GossipingPropertyFileSnitch.loadConfiguration(GossipingPropertyFileSnitch.java:76)
        at org.apache.cassandra.locator.GossipingPropertyFileSnitch.<init>(GossipingPropertyFileSnitch.java:54)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at java.lang.Class.newInstance(Class.java:442)
        at org.apache.cassandra.utils.FBUtilities.construct(FBUtilities.java:601)
        ... 9 more

Here is the 3 step docker setup:


Thanks,
Animesh
debezium.stdout.log
debezium.stderr.log

Ahmed Eljami

unread,
Aug 25, 2021, 5:16:36 AM8/25/21
to debe...@googlegroups.com
Hi Animesh,

It's a known issue, logged here https://issues.redhat.com/browse/DBZ-1987

by using a copy from cassandra.yaml nd changing the snitch to "SimpleSnitch". That's doesn't impact your cluster and allow DBZ to start properly.


Cheers,
Ahmed



--
You received this message because you are subscribed to the Google Groups "debezium" group.
To unsubscribe from this group and stop receiving emails from it, send an email to debezium+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/debezium/16c5b748-c00c-4137-a5e3-fea3e4586472n%40googlegroups.com.


--
Cordialement;

Ahmed ELJAMI

Animesh Srivastava

unread,
Aug 25, 2021, 5:46:57 AM8/25/21
to debezium
Hi Ahmed,

Thanks a lot for the reply, I enabled the SimpleSnitch and tested the same but still face the same issue.

I have commited it into the repo as well into the cassandra.yaml file if you wanna take a look.


Ahmed Eljami

unread,
Aug 25, 2021, 6:10:17 AM8/25/21
to debe...@googlegroups.com
I don't have any experience with DSE, but I can see here that the simpleSnitch for DSE is called DseSimpleSnitch 

When you have started DBZ after changing the Snitch, you still see the same error => Error instantiating snitch class 'org.apache.cassandra.locator.GossipingPropertyFileSnitch'.?? or the new snitch ?

Cheers,



--
Cordialement;

Ahmed ELJAMI

Animesh Srivastava

unread,
Aug 25, 2021, 6:53:55 AM8/25/21
to debezium
So DseSimpleSnitch class is not present:

Exception in thread "main" io.debezium.connector.cassandra.exceptions.CassandraConnectorTaskException: Failed to initialize Cassandra Connector Context.
        at io.debezium.connector.cassandra.CassandraConnectorContext.<init>(CassandraConnectorContext.java:76)
        at io.debezium.connector.cassandra.CassandraConnectorTask.run(CassandraConnectorTask.java:74)
        at io.debezium.connector.cassandra.CassandraConnectorTask.main(CassandraConnectorTask.java:63)
Caused by: org.apache.cassandra.exceptions.ConfigurationException: Unable to find snitch class 'org.apache.cassandra.locator.DseSimpleSnitch'
        at org.apache.cassandra.utils.FBUtilities.classForName(FBUtilities.java:560)
        at org.apache.cassandra.utils.FBUtilities.construct(FBUtilities.java:593)
        at org.apache.cassandra.config.DatabaseDescriptor.createEndpointSnitch(DatabaseDescriptor.java:1103)
        at org.apache.cassandra.config.DatabaseDescriptor.applySnitch(DatabaseDescriptor.java:1031)
        at org.apache.cassandra.config.DatabaseDescriptor.toolInitialization(DatabaseDescriptor.java:197)
        at org.apache.cassandra.config.DatabaseDescriptor.toolInitialization(DatabaseDescriptor.java:162)
        at io.debezium.connector.cassandra.CassandraConnectorContext.loadDdlFromDisk(CassandraConnectorContext.java:89)
        at io.debezium.connector.cassandra.CassandraConnectorContext.<init>(CassandraConnectorContext.java:46)
        ... 2 more
Caused by: java.lang.ClassNotFoundException: org.apache.cassandra.locator.DseSimpleSnitch
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:264)
        at org.apache.cassandra.utils.FBUtilities.classForName(FBUtilities.java:556)
        ... 9 more

Whereas when i do SnimpleSnitch this is the error i see the change in the exception that i am facing now!

$ docker container exec -it cassandra-dse cat //opt//dse//resources//debezium//debezium.stderr.log
Exception in thread "main" io.debezium.connector.cassandra.exceptions.CassandraConnectorTaskException: Failed to initialize Cassandra Connector Context.
        at io.debezium.connector.cassandra.CassandraConnectorContext.<init>(CassandraConnectorContext.java:76)
        at io.debezium.connector.cassandra.CassandraConnectorTask.run(CassandraConnectorTask.java:74)
        at io.debezium.connector.cassandra.CassandraConnectorTask.main(CassandraConnectorTask.java:63)
Caused by: org.apache.cassandra.exceptions.ConfigurationException: Unable to find replication strategy class 'org.apache.cassandra.locator.EverywhereStrategy'
        at org.apache.cassandra.utils.FBUtilities.classForName(FBUtilities.java:560)
        at org.apache.cassandra.locator.AbstractReplicationStrategy.getClass(AbstractReplicationStrategy.java:295)
        at org.apache.cassandra.schema.ReplicationParams.fromMap(ReplicationParams.java:81)
        at org.apache.cassandra.schema.KeyspaceParams.create(KeyspaceParams.java:64)
        at org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspaceParams(SchemaKeyspace.java:972)
        at org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspace(SchemaKeyspace.java:957)
        at org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspacesWithout(SchemaKeyspace.java:936)
        at org.apache.cassandra.schema.SchemaKeyspace.fetchNonSystemKeyspaces(SchemaKeyspace.java:924)
        at org.apache.cassandra.config.Schema.loadFromDisk(Schema.java:92)
        at io.debezium.connector.cassandra.CassandraConnectorContext.loadDdlFromDisk(CassandraConnectorContext.java:90)
        at io.debezium.connector.cassandra.CassandraConnectorContext.<init>(CassandraConnectorContext.java:46)
        ... 2 more
Caused by: java.lang.ClassNotFoundException: org.apache.cassandra.locator.EverywhereStrategy
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:264)
        at org.apache.cassandra.utils.FBUtilities.classForName(FBUtilities.java:556)
        ... 12 more

Ahmed Eljami

unread,
Aug 25, 2021, 8:23:10 AM8/25/21
to debe...@googlegroups.com
Yes, because DBZ doesn't support DSE.



--
Cordialement;

Ahmed ELJAMI

Animesh Srivastava

unread,
Aug 26, 2021, 3:41:01 AM8/26/21
to debezium
Wow thats a bummer :( 

What you think can be a work around for this situation?

I am thinking of a itermediate OSS Cassandra layer over which debezium can process the records!

DSE CASSANDRA -> OSS CASSANDRA (DEBEZIUM) -> KAFKA -> Mariadb

Is there something you may want me to suggest here?

Thanks,
Animesh

Animesh Srivastava

unread,
Aug 26, 2021, 10:04:15 AM8/26/21
to debezium
I was able to dig down into the issue, the reason for this new exception is that EverywhereStratergy is not supported by OSS cassandra and hence its dependent class is not the part of debezium build.(org.apache.cassandra.locator.EverywhereStratergy), I need to build a jar with this one off class and see if that hack works for me!

-Animesh
Reply all
Reply to author
Forward
0 new messages