Skip to content

Instantly share code, notes, and snippets.

@suztomo
Last active December 16, 2019 17:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save suztomo/6fe16f6bda526aab97e879feac70309d to your computer and use it in GitHub Desktop.
Save suztomo/6fe16f6bda526aab97e879feac70309d to your computer and use it in GitHub Desktop.
Attempt to upgrade Beam's cassandra-all's dependency to 4.0-alpha2

Upgrading cassandra-all to version 4.0-alpha2 caused org.apache.beam.sdk.io.hadoop.format.HadoopFormatIOCassandraTest failure:

org.apache.cassandra.exceptions.ConfigurationException: Invalid yaml. Those properties [thrift_prepared_statements_cache_size_mb] are not valid
	at org.apache.cassandra.config.YamlConfigurationLoader$PropertiesChecker.check(YamlConfigurationLoader.java:234)
	at org.apache.cassandra.config.YamlConfigurationLoader.loadConfig(YamlConfigurationLoader.java:125)
	at org.apache.cassandra.config.YamlConfigurationLoader.loadConfig(YamlConfigurationLoader.java:101)

I then removed thrift_prepared_statements_cache_size_mb parameter from cassandra.yaml. I got:

org.apache.cassandra.exceptions.ConfigurationException: Invalid yaml. Please remove properties [start_rpc, rpc_server_type, rpc_port, thrift_framed_transport_size_in_mb, request_scheduler] from your cassandra.yaml
	at org.apache.cassandra.config.YamlConfigurationLoader$PropertiesChecker.check(YamlConfigurationLoader.java:239)
	at org.apache.cassandra.config.YamlConfigurationLoader.loadConfig(YamlConfigurationLoader.java:125)
	at org.apache.cassandra.config.YamlConfigurationLoader.loadConfig(YamlConfigurationLoader.java:101)
	at org.apache.cassandra.config.DatabaseDescriptor.loadConfig(DatabaseDescriptor.java:291)
	at org.apache.cassandra.config.DatabaseDescriptor.daemonInitialization(DatabaseDescriptor.java:167)
	at org.apache.cassandra.config.DatabaseDescriptor.daemonInitialization(DatabaseDescriptor.java:152)
	at org.apache.cassandra.service.CassandraDaemon.applyConfig(CassandraDaemon.java:665)
	at org.apache.cassandra.service.EmbeddedCassandraService.start(EmbeddedCassandraService.java:49)

I removed these fields from the YAML file. I got:

suztomo@suxtomo24:~/beam6$ ./gradlew -p sdks/java/io/hadoop-format/ test --tests org.apache.beam.sdk.io.hadoop.format.HadoopFormatIOCassandraTest --info
...
    SEVERE: Fatal exception during initialization
    org.apache.cassandra.exceptions.ConfigurationException: com/carrotsearch/hppc/ObjectIntOpenHashMap
        at org.apache.cassandra.locator.AbstractReplicationStrategy.createInternal(AbstractReplicationStrategy.java:340)
        at org.apache.cassandra.locator.AbstractReplicationStrategy.createReplicationStrategy(AbstractReplicationStrategy.java:355)
        at org.apache.cassandra.schema.KeyspaceMetadata.createReplicationStrategy(KeyspaceMetadata.java:262)
        at org.apache.cassandra.db.Keyspace.createReplicationStrategy(Keyspace.java:372)
        at org.apache.cassandra.db.Keyspace.<init>(Keyspace.java:334)
...
    Caused by: java.lang.NoClassDefFoundError: com/carrotsearch/hppc/ObjectIntOpenHashMap
        at org.apache.cassandra.locator.AbstractReplicaCollection$ReplicaMap.<init>(AbstractReplicaCollection.java:288)
        at org.apache.cassandra.locator.Endpoints.endpointMap(Endpoints.java:40)
        at org.apache.cassandra.locator.Endpoints.<clinit>(Endpoints.java:41)
        at org.apache.cassandra.locator.LocalStrategy.<init>(LocalStrategy.java:38)
        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 org.apache.cassandra.locator.AbstractReplicationStrategy.createInternal(AbstractReplicationStrategy.java:335)
        ... 55 more
    Caused by: java.lang.ClassNotFoundException: com.carrotsearch.hppc.ObjectIntOpenHashMap
        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)
        ... 64 more

What dependency is using different version of carrotsearch? It's Elasticsearch.

+--- org.elasticsearch.client:transport:5.0.0
|    +--- org.elasticsearch:elasticsearch:5.0.0
|    |    +--- org.apache.lucene:lucene-core:6.2.0
...
|    |    +--- com.carrotsearch:hppc:0.7.1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment