我在执行触发器时 CQLSession 初始化期间遇到错误。接触点
[ “127.0.0.1:9042” ]
启用了 SSL。
似乎是由以下原因引起的:
java.lang.IllegalArgumentException: 'cluster_name' is already in use
这是错误:
ERROR [Native-Transport-Requests-1] 2024-01-18 00:10:35,776 ErrorMessage.java:457 - Unexpected exception during request
java.lang.RuntimeException: Exception while executing trigger on table with ID: 646d8860-7dfa-11ee-a2c6-7d8ff396b60d
at org.apache.cassandra.triggers.TriggerExecutor.executeInternal(TriggerExecutor.java:247)
at org.apache.cassandra.triggers.TriggerExecutor.execute(TriggerExecutor.java:125)
at org.apache.cassandra.service.StorageProxy.mutateWithTriggers(StorageProxy.java:1037)
at org.apache.cassandra.cql3.statements.ModificationStatement.executeWithoutCondition(ModificationStatement.java:476)
at org.apache.cassandra.cql3.statements.ModificationStatement.execute(ModificationStatement.java:454)
at org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:244)
at org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:337)
at org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:324)
at org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:108)
at org.apache.cassandra.transport.Message$Request.execute(Message.java:242)
at org.apache.cassandra.transport.Dispatcher.processRequest(Dispatcher.java:86)
at org.apache.cassandra.transport.Dispatcher.processRequest(Dispatcher.java:106)
at org.apache.cassandra.transport.Dispatcher.lambda$dispatch$0(Dispatcher.java:70)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at org.apache.cassandra.concurrent.AbstractLocalAwareExecutorService$FutureTask.run(AbstractLocalAwareExecutorService.java:165)
at org.apache.cassandra.concurrent.AbstractLocalAwareExecutorService$LocalSessionFutureTask.run(AbstractLocalAwareExecutorService.java:137)
at org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:119)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: com.datastax.oss.driver.api.core.AllNodesFailedException: Could not reach any contact point, make sure you've provided valid addresses (showing first 1 nodes, use getAllErrors() for more): Node(endPoint=localhost/127.0.0.1:9042, hostId=null, hashCode=73869e00): [com.datastax.oss.driver.api.core.connection.ConnectionInitException: [cassandra|control|connecting...] Protocol initialization request, step 1 (OPTIONS): failed to send request (java.lang.ExceptionInInitializerError)]
at com.datastax.oss.driver.api.core.AllNodesFailedException.copy(AllNodesFailedException.java:141)
at com.datastax.oss.driver.internal.core.util.concurrent.CompletableFutures.getUninterruptibly(CompletableFutures.java:149)
at com.datastax.oss.driver.api.core.session.SessionBuilder.build(SessionBuilder.java:835)
at com.fanatics.dao.common.AbstractCassandraStore.<init>(AbstractCassandraStore.java:49)
at com.fanatics.dao.triggers.CDCQueries.<init>(CDCQueries.java:38)
at com.fanatics.dao.triggers.CartSchemaTriggers.augment(CartSchemaTriggers.java:43)
at org.apache.cassandra.triggers.TriggerExecutor.executeInternal(TriggerExecutor.java:235)
... 18 common frames omitted
Suppressed: com.datastax.oss.driver.api.core.connection.ConnectionInitException: [cassandra|control|connecting...] Protocol initialization request, step 1 (OPTIONS): failed to send request (java.lang.ExceptionInInitializerError)
at com.datastax.oss.driver.internal.core.channel.ProtocolInitHandler$InitRequest.fail(ProtocolInitHandler.java:356)
at com.datastax.oss.driver.internal.core.channel.ChannelHandlerRequest.writeListener(ChannelHandlerRequest.java:87)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:552)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491)
at io.netty.util.concurrent.DefaultPromise.addListener(DefaultPromise.java:184)
at io.netty.channel.DefaultChannelPromise.addListener(DefaultChannelPromise.java:95)
at io.netty.channel.DefaultChannelPromise.addListener(DefaultChannelPromise.java:30)
at com.datastax.oss.driver.internal.core.channel.ChannelHandlerRequest.send(ChannelHandlerRequest.java:76)
at com.datastax.oss.driver.internal.core.channel.ProtocolInitHandler$InitRequest.send(ProtocolInitHandler.java:193)
at com.datastax.oss.driver.internal.core.channel.ProtocolInitHandler.onRealConnect(ProtocolInitHandler.java:124)
at com.datastax.oss.driver.internal.core.channel.ConnectInitHandler.lambda$connect$0(ConnectInitHandler.java:57)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:571)
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:550)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491)
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616)
at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:605)
at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)
at io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:84)
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(AbstractNioChannel.java:300)
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:335)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:707)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
... 2 common frames omitted
Caused by: java.lang.ExceptionInInitializerError: null
at com.datastax.oss.driver.internal.core.channel.InFlightHandler.write(InFlightHandler.java:96)
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717)
at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:764)
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:790)
at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:758)
at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:808)
at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1025)
at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:294)
at com.datastax.oss.driver.internal.core.channel.ChannelHandlerRequest.send(ChannelHandlerRequest.java:75)
... 21 common frames omitted
Caused by: java.lang.IllegalArgumentException: 'cluster_name' is already in use
at io.netty.util.ConstantPool.createOrThrow(ConstantPool.java:109)
at io.netty.util.ConstantPool.newInstance(ConstantPool.java:91)
at io.netty.util.AttributeKey.newInstance(AttributeKey.java:55)
at com.datastax.oss.driver.internal.core.channel.DriverChannel.<clinit>(DriverChannel.java:50)
... 30 common frames omitted
触发器中使用的应用程序配置是:
datastax-java-driver {
basic {
config-reload-interval = 0
session-name = "cassandra"
session-keyspace = "orders"
contact-points = [ "127.0.0.1:9042" ]
load-balancing-policy.local-datacenter = "dc3"
request {
consistency = LOCAL_QUORUM
serial-consistency = LOCAL_SERIAL
timeout = 6 seconds
}
}
advanced {
ssl-engine-factory {
class = DefaultSslEngineFactory
hostname-validation = false
}
}
}
此处缺少有关您在应用程序中使用的驱动程序和版本的详细信息,因此我在这里做出一些假设:
<dependency>
<groupId>com.datastax.oss</groupId>
<artifactId>java-driver-core</artifactId>
<version>4.17.0</version><!-- this is latest as of this writing -->
</dependency>
由于您已启用加密,您还需要通过使用以下信息更新您的配置文件来传递信任库详细信息,
datastax-java-driver {
...
advanced {
ssl-engine-factory {
class = DefaultSslEngineFactory
truststore-path = "/path/to/certs/your_truststore.jks"
truststore-password = "truststore password"
hostname-validation = false
}
...
}
我还会检查 C* 节点的 cluster_name
文件上的
cassandra.yaml
属性,看看它是否被正确提及。在此期间,您是否在服务器端的 system.log
/debug.log
中看到任何其他错误 - 这也可能有助于发现其他详细信息。