HelixNetwork / pendulum

Pendulum is a distributed messaging protocol that enables globally available tamper proof timestamps :hourglass_flowing_sand:
https://dev.hlx.ai
Other
10 stars 6 forks source link

NPE for tip selection on a new node sync #175

Closed dzhelezov closed 4 years ago

dzhelezov commented 4 years ago

To reproduce: Start a node with empty database and peer to one of the testnet relayers Observe the following NPE

backend_1  | 09/26 16:02:20.459 [pool-15-thread-5] ERROR Node:545 - Error getting random tip.
backend_1  | java.lang.NullPointerException: null
backend_1  |    at net.helix.pendulum.network.Node.getRandomTipPointer(Node.java:588) ~[pendulum-0.6.7.jar:na]
backend_1  |    at net.helix.pendulum.network.Node.replyToRequest(Node.java:538) ~[pendulum-0.6.7.jar:na]
backend_1  |    at net.helix.pendulum.network.Node.replyToRequestFromQueue(Node.java:447) ~[pendulum-0.6.7.jar:na]
backend_1  |    at net.helix.pendulum.network.Node.lambda$spawnReplyToRequestThread$9(Node.java:745) ~[pendulum-0.6.7.jar:na]
backend_1  |    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[na:na]
backend_1  |    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
backend_1  |    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
backend_1  |    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
backend_1  |    at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]

Additional logs provided on request