Search code examples
voltdb

NPE in org.voltdb.Distributer.getPartitionKeys


I signed up for the jira.. not sure how to report issues except for pull request. There's a bug here as the result of .get() can be null. Possibly there is better information available to hydrate an exception I think.

In org.voltdb.Distributer

    if (m_partitionUpdateStatus.get().getStatus() != ClientResponse.SUCCESS) {
        throw new ProcCallException(m_partitionUpdateStatus.get(), null, null);
    }

Example stack trace

org.voltdb.client.ProcCallException: null
at org.voltdb.client.Distributer.getPartitionKeys(Distributer.java:1561) ~[voltdbclient-8.4.1.jar!/:?]
at org.voltdb.client.ClientImpl.callAllPartitionProcedure(ClientImpl.java:1071) ~[voltdbclient-8.4.1.jar!/:?]
at zipkin2.autoconfigure.storage.voltdb.VoltDBScheduledTasks.processCompleteTraces(VoltDBScheduledTasks.java:54) ~[voltdb.jar!/:?]

Solution

  • I logged a bug ticket for this: https://issues.voltdb.com/browse/ENG-15784

    If you catch the exception, you could call ProcCallException.getClientResponse().getStatusString() which should show why the client wasn't able to get the partition key values that it needs to process a callAllPartitionProcedure() invocation.

    Disclosure: I work at VoltDB