mck created CASSANDRA-11381:
-------------------------------

             Summary: Node running with join_ring=false and authentication can 
not serve requests
                 Key: CASSANDRA-11381
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-11381
             Project: Cassandra
          Issue Type: Bug
            Reporter: mck
            Assignee: mck


Starting up a node with {{-Dcassandra.join_ring=false}} in a cluster that has 
authentication configured, eg PasswordAuthenticator, won't be able to serve 
requests. This is because {{Auth.setup()}} never gets called during the startup.


Without {{Auth.setup()}} having been called in {{StorageService}} clients 
connecting to the node fail with the node throwing

{noformat}
java.lang.NullPointerException
        at 
org.apache.cassandra.auth.PasswordAuthenticator.authenticate(PasswordAuthenticator.java:119)
        at 
org.apache.cassandra.thrift.CassandraServer.login(CassandraServer.java:1471)
        at 
org.apache.cassandra.thrift.Cassandra$Processor$login.getResult(Cassandra.java:3505)
        at 
org.apache.cassandra.thrift.Cassandra$Processor$login.getResult(Cassandra.java:3489)
        at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
        at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
        at com.thinkaurelius.thrift.Message.invoke(Message.java:314)
        at com.thinkaurelius.thrift.Message$Invocation.execute(Message.java:90)
        at 
com.thinkaurelius.thrift.TDisruptorServer$InvocationHandler.onEvent(TDisruptorServer.java:695)
        at 
com.thinkaurelius.thrift.TDisruptorServer$InvocationHandler.onEvent(TDisruptorServer.java:689)
        at com.lmax.disruptor.WorkProcessor.run(WorkProcessor.java:112)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
{noformat}

The exception thrown from the 
[code|https://github.com/apache/cassandra/blob/cassandra-2.0.16/src/java/org/apache/cassandra/auth/PasswordAuthenticator.java#L119]
{code}
ResultMessage.Rows rows = 
authenticateStatement.execute(QueryState.forInternalCalls(), new 
QueryOptions(consistencyForUser(username),
                                                                                
     Lists.newArrayList(ByteBufferUtil.bytes(username))));
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to