-
Notifications
You must be signed in to change notification settings - Fork 188
Block processing issues #302
Comments
the errors are in the |
I don't know if this will be helpful or not, but here's the |
It's interesting to note that neoscan is generating an error for the bad block hash: https://neoscan.io/block/1b9a78b3c1358af990039a4ba7cbc5c581855aed06955c3cd9aa718acc3a8516 But it does show what appears to be the correct hash for https://neoscan.io/block/8cb9fee28a48a45468e3c0a229fd4473288cdd9794c10cac7b8f4681ca404342 Interestingly, here is block https://neoscan.io/block/361f566c40f43e46678d378f2787f1cb148e399f712126b1dcea95278e424a51 And the "Next block" link takes you to the first (errant) block hash I linked, even though the second link appears to be correct. So it seems to have had the same issue as neo-python. Blocks |
There is the same issue with block However if I go to neo-scan and select block If at neo-scan I select the previous block https://neoscan.io/block/b57c1d56dc1763c5a16a0d019f13073df472c36b6633582a22ec8c0ca38f8fd6 |
This is not a neo-python issue but more of a network issue. Anyways, anyone stuck on this can re-bootstrap mainnet to fast forward past the troublesome blocks with: |
I do think ultimately neo-python needs to have a way to recover from this situation more gracefully. The current behavior is that you get a stuck node and you basically have to start over syncing. Sure, you can bootstrap and fast-forward (once somebody provides a bootstrap file to do so with), but that's not always a realistic solution. For example, if your node is processing events (as ours is), you can't simply skip a large number of blocks or else you get incomplete data. In that case, you have to be able to recover (somehow) and continue processing from where you left off. Ideally, there would be some way to roll back the previous transaction or two so you can start re-syncing. Perhaps snapshots of the most recent two blocks would be a way to provide some kind of rollback/recovery mechanism so it's not a complete dead end, as currently? In our case, I had to restore to an older bootstrap file and update our event handler to gracefully handle re-processing events that had already been processed. It's not ideal for every node consumer to be required to do this, so I think the tooling should provide means to work through these types of issues. Perhaps this is an issue that needs to be addressed with every NEO node implementation, too? |
It seems a system issue rather than a There's no real way to 'rollback' a block unless each SC invocation has an |
Fair enough! It definitely could be addressed by preventing this situation from occurring in the first place. It shouldn't be possible for a bad block to be distributed like this. What's a best next step for this issue? Should I record an issue in neo core? I think it's something that needs to be actively investigated (if it's not already) since it obviously had widespread impact. I can't find any issues that seem to be related... |
And now the issue has happened again :( Almost every neo-python node and many of the neo-cli nodes are stuck, presumably due to the same incorrect block issue. |
Created this issue: neo-project/neo#193 |
We've noticed some block processing issues today across neo-python and neo-cli nodes.
It looks like blocks
2000190
and2000880
are at least two of the problematic blocks.We have 4 neo-python nodes for JSON-RPC & REST. Interestingly, three of them are stuck on block
2000190
. The other one is stuck on2000880
.Here is the data for
2000190
on one of the nodes stuck on it:The block info results in a traceback, however:
One the node stuck at
2000880
, it doesn't know about a block with that hash:Here's the hash of that block:
And here's the actual block data:
Here's stuck block
2000880
:And it yields the same traceback as before when trying to view the block data:
Note: these nodes are currently running a slightly older version of neo-python, so we are going to update them to the latest
development
branch now and see if that makes a difference.The text was updated successfully, but these errors were encountered: