I seem to have discovered corrupt blocks on one of my nodes. The node is on all the time to keep up to sync and the rest of my nodes connect to it to retrieve block data when they need to sync. The node that's on all the time seems to be running fine, but when syncing my other nodes using data served from it, they report these five repeating errors after a certain block height:
2020-02-16T05:08:34Z ERROR: AcceptBlock: bad-witness-merkle-match, ContextualCheckBlock : witness merkle commitment mismatch (code 16)
2020-02-16T05:08:34Z ERROR: ProcessNewBlock: AcceptBlock FAILED (bad-witness-merkle-match, ContextualCheckBlock : witness merkle commitment mismatch (code 16))
2020-02-16T05:08:34Z ERROR: ProcessNewBlock: AcceptBlock FAILED (bad-txnmrklroot, hashMerkleRoot mismatch (code 16))
2020-02-16T05:08:34Z ERROR: ProcessNewBlock: AcceptBlock FAILED (bad-txnmrklroot, hashMerkleRoot mismatch (code 16))
2020-02-16T05:08:34Z ERROR: ProcessNewBlock: AcceptBlock FAILED (bad-txnmrklroot, hashMerkleRoot mismatch (code 16))
I suppose this means the data being served from the head node is corrupt. My question: Is there a way to redownload and reindex from a specific block height instead of reindexing the whole thing? Would reindex even fix this problem? It seems like the block data is what's wrong, but the node doesn't know it.