添加新节点时Cassandra身份验证问题

添加新节点时Cassandra身份验证问题,cassandra,cassandra-3.0,Cassandra,Cassandra 3.0,每当Apache Cassandra 3.9中添加一个新节点时,system_auth keyspace就会出现一个奇怪的问题。我们使用RF=集群中的节点数为system_auth keyspace执行网络拓扑复制 但是在一个新的节点引导之后,这个键空间似乎被破坏了。假设角色表上的select在某些行中显示空数据 role | can_login | is_superuser | member_of | salted_hash -------

每当Apache Cassandra 3.9中添加一个新节点时,system_auth keyspace就会出现一个奇怪的问题。我们使用RF=集群中的节点数为system_auth keyspace执行网络拓扑复制

但是在一个新的节点引导之后,这个键空间似乎被破坏了。假设角色表上的select在某些行中显示空数据

role                            | can_login | is_superuser | member_of | salted_hash
---------------------------------+-----------+--------------+-----------+--------------------------------------------------------------
                     user1      |      null |         null |      null |       null
“列出用户”命令导致Java空指针异常。调试日志显示以下信息

ERROR[Native-Transport-Requests-3]2017-06-27 15:17:02927 ErrorMessage.java:349-请求过程中出现意外异常
java.lang.NullPointerException:null
在org.apache.cassandra.serializers.booleansializer.deserialize(booleansializer.java:33)~[apache-cassandra-3.9.0.jar:3.9.0]
在org.apache.cassandra.serializers.booleansializer.deserialize(booleansializer.java:24)~[apache-cassandra-3.9.0.jar:3.9.0]
在org.apache.cassandra.db.marshal.AbstractType.compose(AbstractType.java:115)~[apache-cassandra-3.9.0.jar:3.9.0]
在org.apache.cassandra.cql3.UntypedResultSet$Row.getBoolean(UntypedResultSet.java:273)~[apache-cassandra-3.9.0.jar:3.9.0]
在org.apache.cassandra.auth.CassandraRoleManager$1.apply(CassandraRoleManager.java:85)~[apache-cassandra-3.9.0.jar:3.9.0]
在org.apache.cassandra.auth.CassandraRoleManager$1.apply(CassandraRoleManager.java:81)~[apache-cassandra-3.9.0.jar:3.9.0]
在org.apache.cassandra.auth.cassandraromanager.getRoleFromTable(cassandraromanager.java:503)~[apache-cassandra-3.9.0.jar:3.9.0]
在org.apache.cassandra.auth.cassandraromanager.getRole(cassandraromanager.java:485)~[apache-cassandra-3.9.0.jar:3.9.0]
在org.apache.cassandra.auth.CassandraRoleManager.canLogin(CassandraRoleManager.java:298)~[apache-cassandra-3.9.0.jar:3.9.0]
在org.apache.cassandra.cql3.statements.ListUsersStatement.formatResults(ListUsersStatement.java:51)~[apache-cassandra-3.9.0.jar:3.9.0]
在org.apache.cassandra.cql3.statements.ListRolesStatement.resultMessage(ListRolesStatement.java:108)~[apache-cassandra-3.9.0.jar:3.9.0]
在org.apache.cassandra.cql3.statements.ListRolesStatement.execute(ListRolesStatement.java:85)~[apache-cassandra-3.9.0.jar:3.9.0]
在org.apache.cassandra.cql3.statements.AuthorizationStatement.execute(AuthorizationStatement.java:48)~[apache-cassandra-3.9.0.jar:3.9.0]
在org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:188)~[apache-cassandra-3.9.0.jar:3.9.0]
在org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:219)~[apache-cassandra-3.9.0.jar:3.9.0]
在org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:204)~[apache-cassandra-3.9.0.jar:3.9.0]
在org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:115)~[apache-cassandra-3.9.0.jar:3.9.0]
在org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:513)[apache-cassandra-3.9.0.jar:3.9.0]
在org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:407)[apache-cassandra-3.9.0.jar:3.9.0]
在io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)[netty-all-4.0.39.Final.jar:4.0.39.Final]
在io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)[netty-all-4.0.39.Final.jar:4.0.39.Final]
在io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:35)[netty-all-4.0.39.Final.jar:4.0.39.Final]
在io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:357)[netty-all-4.0.39.Final.jar:4.0.39.Final]
在java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)[na:1.8.0131]
位于org.apache.cassandra.concurrent.AbstractLocalAwareExecutorService$FutureTask.run(AbstractLocalAwareExecutorService.java:164)[apache-cassandra-3.9.0.jar:3.9.0]
在org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:109)[apache-cassandra-3.9.0.jar:3.9.0]

在java.lang.Thread.run(Thread.java:748)[na:1.8.0_131]
这似乎是Cassandra 3.9的一个bug,它已在更高版本的Cassandra 3.10中修复。这是错误提示

集群中的所有Cassandra节点是否都进行了时间同步?还请提及在集群中添加新节点的确切步骤cluster@ShobanSundar时间是跨服务器同步的。如何特别与缺少数据的身份验证表相关?添加新节点的过程与集群中节点的初始引导过程相同。你有什么特别想要的吗?