We're updating the issue view to help you get more done. 

assert error when receive a block with invalid block number

Description

When a node receive an invalid block, the node would catch a traceback instead of slashing the node.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 rchain-dnznn.bonded-validator-2: 08:39:08.857 [tl-dispatcher-server-send-74] WARN coop.rchain.casper.Validate$ - Ignoring block 5d016a1e46... because block number 1000 is not one more than maximum parent number 0. rchain-dnznn.bonded-validator-2: 08:39:08.859 [tl-dispatcher-server-send-74] WARN c.r.casper.MultiParentCasperImpl - Recording invalid block 5d016a1e46... for InvalidBlockNumber. rchain-dnznn.bonded-validator-2: java.lang.AssertionError: assertion failed rchain-dnznn.bonded-validator-2: at scala.Predef$.assert(Predef.scala:208) rchain-dnznn.bonded-validator-2: at coop.rchain.blockstorage.util.TopologicalSortUtil$.update(TopologicalSortUtil.scala:17) rchain-dnznn.bonded-validator-2: at coop.rchain.blockstorage.BlockDagFileStorage.$anonfun$insert$14(BlockDagFileStorage.scala:491) rchain-dnznn.bonded-validator-2: at coop.rchain.blockstorage.BlockDagFileStorage.$anonfun$modifyTopoSort$1(BlockDagFileStorage.scala:143) rchain-dnznn.bonded-validator-2: at coop.rchain.shared.AtomicMonadState.$anonfun$modify$1(AtomicMonadState.scala:15) rchain-dnznn.bonded-validator-2: at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23) rchain-dnznn.bonded-validator-2: at monix.eval.internal.TaskRunLoop$.startFull(TaskRunLoop.scala:81) rchain-dnznn.bonded-validator-2: at monix.eval.Task$.unsafeStartNow(Task.scala:4459) rchain-dnznn.bonded-validator-2: at monix.eval.internal.TaskBracket$BaseStart$$anon$1.onSuccess(TaskBracket.scala:136) rchain-dnznn.bonded-validator-2: at monix.eval.internal.TaskRunLoop$.startFull(TaskRunLoop.scala:164) rchain-dnznn.bonded-validator-2: at monix.eval.Task$.unsafeStartNow(Task.scala:4459) rchain-dnznn.bonded-validator-2: at monix.eval.internal.TaskBracket$BaseStart.apply(TaskBracket.scala:123) rchain-dnznn.bonded-validator-2: at monix.eval.internal.TaskBracket$BaseStart.apply(TaskBracket.scala:113) rchain-dnznn.bonded-validator-2: at monix.eval.internal.TaskRestartCallback.run(TaskRestartCallback.scala:65) rchain-dnznn.bonded-validator-2: at monix.execution.internal.Trampoline.monix$execution$internal$Trampoline$$immediateLoop(Trampoline.scala:66) rchain-dnznn.bonded-validator-2: at monix.execution.internal.Trampoline.startLoop(Trampoline.scala:32) rchain-dnznn.bonded-validator-2: at monix.execution.schedulers.TrampolineExecutionContext$JVMOptimalTrampoline.startLoop(TrampolineExecutionContext.scala:143) rchain-dnznn.bonded-validator-2: at monix.execution.internal.Trampoline.execute(Trampoline.scala:40) rchain-dnznn.bonded-validator-2: at monix.execution.schedulers.TrampolineExecutionContext.execute(TrampolineExecutionContext.scala:63) rchain-dnznn.bonded-validator-2: at monix.execution.schedulers.BatchingScheduler.execute(BatchingScheduler.scala:50) rchain-dnznn.bonded-validator-2: at monix.execution.schedulers.BatchingScheduler.execute$(BatchingScheduler.scala:47) rchain-dnznn.bonded-validator-2: at monix.execution.schedulers.ExecutorScheduler.execute(ExecutorScheduler.scala:37) rchain-dnznn.bonded-validator-2: at monix.execution.Callback$Base.onSuccess(Callback.scala:224) rchain-dnznn.bonded-validator-2: at monix.execution.Callback.apply(Callback.scala:48) rchain-dnznn.bonded-validator-2: at monix.execution.Callback.apply(Callback.scala:40) rchain-dnznn.bonded-validator-2: at cats.effect.internals.MVarConcurrent.unsafeRead(MVarConcurrent.scala:225) rchain-dnznn.bonded-validator-2: at cats.effect.internals.MVarConcurrent.$anonfun$read$1(MVarConcurrent.scala:60) rchain-dnznn.bonded-validator-2: at monix.eval.internal.TaskCreate$.$anonfun$cancelableEffect$1(TaskCreate.scala:72) rchain-dnznn.bonded-validator-2: at monix.eval.internal.TaskCreate$Cancelable0Start.apply(TaskCreate.scala:53) rchain-dnznn.bonded-validator-2: at monix.eval.internal.TaskCreate$Cancelable0Start.apply(TaskCreate.scala:41) rchain-dnznn.bonded-validator-2: at monix.eval.internal.TaskRestartCallback.start(TaskRestartCallback.scala:58) rchain-dnznn.bonded-validator-2: at monix.eval.internal.TaskRunLoop$.executeAsyncTask(TaskRunLoop.scala:583) rchain-dnznn.bonded-validator-2: at monix.eval.internal.TaskRunLoop$.startFull(TaskRunLoop.scala:120) rchain-dnznn.bonded-validator-2: at monix.eval.Task$.unsafeStartNow(Task.scala:4459) rchain-dnznn.bonded-validator-2: at monix.eval.internal.TaskDoOnCancel$.$anonfun$apply$1(TaskDoOnCancel.scala:37) rchain-dnznn.bonded-validator-2: at monix.eval.internal.TaskDoOnCancel$.$anonfun$apply$1$adapted(TaskDoOnCancel.scala:31) rchain-dnznn.bonded-validator-2: at monix.eval.internal.TaskRestartCallback.start(TaskRestartCallback.scala:58) rchain-dnznn.bonded-validator-2: at monix.eval.internal.TaskRunLoop$.executeAsyncTask(TaskRunLoop.scala:583) rchain-dnznn.bonded-validator-2: at monix.eval.internal.TaskRunLoop$.goAsyncForLightCB(TaskRunLoop.scala:608) rchain-dnznn.bonded-validator-2: at monix.eval.internal.TaskRunLoop$.startLight(TaskRunLoop.scala:310) rchain-dnznn.bonded-validator-2: at monix.eval.Task.runAsyncOptF(Task.scala:805) rchain-dnznn.bonded-validator-2: at monix.eval.Task.runAsyncOpt(Task.scala:705) rchain-dnznn.bonded-validator-2: at monix.eval.Task.runAsync(Task.scala:656) rchain-dnznn.bonded-validator-2: at monix.reactive.internal.operators.MapParallelUnorderedObservable$MapAsyncParallelSubscription.process(MapParallelUnorderedObservable.scala:127) rchain-dnznn.bonded-validator-2: at monix.reactive.internal.operators.MapParallelUnorderedObservable$MapAsyncParallelSubscription.$anonfun$onNext$2(MapParallelUnorderedObservable.scala:156) rchain-dnznn.bonded-validator-2: at monix.execution.Ack$$anon$1.run(Ack.scala:54) rchain-dnznn.bonded-validator-2: at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) rchain-dnznn.bonded-validator-2: at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) rchain-dnznn.bonded-validator-2: at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) rchain-dnznn.bonded-validator-2: at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) rchain-dnznn.bonded-validator-2: at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) rchain-dnznn.bonded-validator-2: at java.base/java.lang.Thread.run(Thread.java:834)

Environment

None

Status

Assignee

Daniyar Itegulov

Reporter

Will Qiu

Priority

Medium

Affects versions

None

Components

None

Sprint

None

Epic Link

None

Labels

None