2020-12-14 15:23:02
trying to move my pool to an another server and after the move i'm getting
`Caused by: org.rocksdb.RocksDBException: block checksum mismatch: expected 1285677076, got 3253001534 in pool/db/1568498.sst offset 0 size 1238107`
i wonder if something happened to the data in transit

Rotonen
2020-12-14 15:24:36
with the amount of old unpaid shares in the DB, i doubt anyone will mine on it anytime soon, especially as there are pools without a fee out there these days, but on general principles i'd like to keep dragging those shares along

Rotonen
2020-12-14 18:39:13
scp is shit, the files actually come out a different size on the other side, oh joy

Rotonen
2020-12-14 18:39:42
wanted to save effort as i have to shuffle things around through a bastion host for now

Rotonen
2020-12-14 18:42:43
actually unrelatedly i already have that on the source side too, oof

Rotonen
2020-12-14 18:42:48
so what can have gone wrong?

Rotonen
2020-12-14 18:43:03
the api still gives the correct share counts out

Rotonen
2020-12-14 18:44:26
I have had scp fail me, but not that spectacularly. rsync usually works well for me.

Fireduck
2020-12-14 18:44:48
but based on that error, something wrong with the db (you can call me captain obvious)

Fireduck
2020-12-14 18:45:13
i just went with piped ssh and tar, that works well - but seems the issue i kept hitting was more about filesystem accounting nuances and a red herring
there's something actually wrong with the db

Rotonen
2020-12-14 18:45:17
yeah, how do i dive in?

Rotonen
2020-12-14 18:45:56
the downside here is that rocks db was selected based on it shitting the bed less often than other filesystem DBs while still being rather fast

Fireduck
2020-12-14 18:46:39
but not often is not never. I should not have used it for the share db, I should have done something more reliable, like atomic file saves of plain protobufs like I did for the wallet files

Fireduck
2020-12-14 18:47:07
the shares are intact, though

Rotonen
2020-12-14 18:47:16
i think it's tripping up on a historical block or something

Rotonen
2020-12-14 18:47:43
and the pool still works, but that one broken thing keeps spamming the log

Rotonen
2020-12-14 18:49:44
ah, if you can give me the full stack trace I can make a patch that resets that list on error

Fireduck
2020-12-14 18:50:39
it concatenates it to a degree, but here's at least a partial
```jouluk. 14, 2020 6:50:15 IP. duckutil.PeriodicThread run
WARNING: Periodic thread exception
java.lang.RuntimeException: org.rocksdb.RocksDBException: block checksum mismatch: expected 1285677076, got 3253001534 in pool/db/1568498.sst offset 0 size 1238107
at snowblossom.lib.db.rocksdb.RocksDBMap.put(RocksDBMap.java:59)
at snowblossom.lib.db.DBMap.put(DBMap.java:19)
at snowblossom.miner.plow.MrPlow.saveState(MrPlow.java:229)
at snowblossom.miner.plow.MrPlow.access$200(MrPlow.java:31)
at snowblossom.miner.plow.MrPlow$PlowLoop.runPass(MrPlow.java:209)
at duckutil.PeriodicThread.run(PeriodicThread.java:30)
Caused by: org.rocksdb.RocksDBException: block checksum mismatch: expected 1285677076, got 3253001534 in pool/db/1568498.sst offset 0 size 1238107
at org.rocksdb.RocksDB.put(Native Method)
at org.rocksdb.RocksDB.put(RocksDB.java:705)
at snowblossom.lib.db.rocksdb.RocksDBMap.put(RocksDBMap.java:55)
... 5 more```

Rotonen
2020-12-14 18:51:23
or is it just that the db is so broken it's effectively read only?

Rotonen
2020-12-14 18:52:31
looks like effectively read only, that line is saving the share state

Fireduck
2020-12-14 18:53:05
seems to have started out of the blue like a couple of weeks ago, at least no one has been using the pool

Rotonen
2020-12-14 18:53:40
I can make a version that saves the share state to a file and uses that rather than rocks

Fireduck
2020-12-14 19:00:40
i have my shares and blocks as json files, so with that i could resume

Rotonen
2020-12-14 21:31:59
as in the list of unpaid shares, which is what matters

Rotonen
2020-12-14 21:32:12
i suppose the full history of the pool is what takes ~350MB

Rotonen
2020-12-14 21:32:24
as the two rpc call returns are pretty tiny in comparison

Rotonen