Join GitHub today
GitHub is home to over 20 million developers working together to host and review code, manage projects, and build software together.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
Already on GitHub? Sign in to your account
rpc: Don't FlushStateToDisk when pruneblockchain(0) #9524
Conversation
MarcoFalke
added
RPC/REST/ZMQ
Tests
labels
Jan 12, 2017
If it doesn't cause an error or corruption, I'd prefer not to add a special case for it. There is no reason for calling it with 0 so if there is a slight performance overhead when that's done, that's too bad. |
|
The thing is that it clashes with the default value of FlushStateToDisk(nManualPruneHeight=0), which is used to indicate "legacy" pruning. It might cause unwanted bugs if someone refactors the code in the future. |
|
Okay, true. On one hand this is adding belt and suspenders it's just that I prefer the underlying code to be robust to cases like this instead of catching potential errors on the RPC interface. But yes you have a point too, I don't know... |
MarcoFalke
changed the title from
qa/rpc: Fix pruneblockchain edge cases
to
rpc: Don't FlushStatToDisk when pruneblockchain(0)
Jan 27, 2017
MarcoFalke
changed the title from
rpc: Don't FlushStatToDisk when pruneblockchain(0)
to
rpc: Don't FlushStateToDisk when pruneblockchain(0)
Jan 28, 2017
MarcoFalke
removed
the
Tests
label
Jan 28, 2017
It seems that in that case there will also be automatic problems. On IRC yesterday there was a discussion about this, and there are more paths through which it will get into I wrongly assumed that For 0.15 or later it would be nice to refactor the pruning code. |
|
Ok, I still stand by what I said above, the code in question should be refactored as there are various paths where this could theoretically go wrong, catching this at the RPC call site will only solve one entry point, and for the right might hide eventual problems further. E.g. let's say we added a test that calls pruneblockchain(0) and verifies that it does nothing would no longer test anything useful. |
MarcoFalke commentedJan 12, 2017
•
Edited 1 time
-
MarcoFalke
Jan 27, 2017
Currently pruneblockchain(0) will call StateFlushToDisk. This might not be required/wanted, as the internal code appears to be using 0 to indicate "legacy" pruning.