-
Notifications
You must be signed in to change notification settings - Fork 1k
Error Codes
Here is an overview of the most common error codes and possible fixes.
The block with height <i> found share <x> which is < than <y> of block <j> | Sometimes stratum inserts
####Example
2013-10-24 9:03:43 - FATAL --> E0001: The block with height 107643 found share 18 which is < than 19 of block 107642
####Explanation
The findblocks
cron has found a block which has a share ID lower than a previous block found. This can happen with fast block finding coins or if the shares tables ID column had a roll over (starting at ID of 1
again).
####Fix
This is not a fatal error yet unless the shares ID column rolled over. findblocks
will try to autofix the issue by changing the shares. It will re-order the shares so a following run should not fail.
If a rollover is found, the fix is to run an update on the blocks table to mark all blocks with valid share_id
fields to a share_id
of 1
. That way the cron will skip the E0001
detection and continue to run with the rolled over share_ids. The round boundaries might be wrong, so a possible solution would be to assign a share manually with the highest non-rolled over share_id. That way the round should be calculated properly.
There is no way for MPOS to auto-fix rolled over shares table since it would remove the ability for this and other error detection systems.
E0002: Failed to fetch both offending shares: <x> and <y>. . Block height: <n>
findblocks
was not able to fetch both shares that are causing the Out of Order problem. Sometimes, if blocks have been accounted for already, shares can't be fetched because they were deleted.
Since a block has already been accounted for, there will need to be manually assigned a share to the found block <n>
. Some things to keep in mind:
- Do not use a valid
upstream_result
share - Do not include a valid
upstream_result
share in that round - Use more than just a few shares if possible to make it a round
- Add valid block finder ID for block
<n>
- Add valid total shares for block
<n>
E0003: Failed to change shares order!
findblocks
tried to fix the shares order by updating both shares. This failed for some reason.
Nothing automated can be done here. Check for those blocks in question which share_ids did not get updated. Once found the solution field between those two shares can be manually switched. That will bring the blocks back in order with the shares.
Failed to reset block in database: <n>
findblocks
successfully changed the out of order shares but failed to update the shares
, share_id
and account_id
information in the block <n>
.
Manually reset that block and try again.
E0005: Unable to fetch blocks upstream share, aborted: <error>
None of the available shares were matched for this block. This should never happen due to the fallbacks implemented to match a block against a share. If such an issue arrises, try assigning shares manually.
See E0002
E0015: Potential Double Payout detected
For each block that is going to be paid out, a new value is stored in the settings table: last_accounted_block_id
. Note that the system stores the ID of the previously paid out block, not the height. Usually this procedure is pretty solid, but occasionally users run into this error. Most of the time, it was caused by an orphaned block not marked as orphaned at the time the payouts started to run. This is not something MPOS can catch, blockupdate is run prior to doing a payout, but with some coins blocks are not marked as orphaned in the upstream RPC so MPOS wouldn't know about it. Rare occasions showed that crons did not run through, then manual intervention is required.
If a payout failed in mid-run, first check for previous errors. If the block has not been confirmed yet, a potentially fix would be to delete all transactions related to this block and try to re-run it. If the block did confirm and has already paid out to users, all that can be done is to mark it as accounted. The last block being paid out can be found in the settings table under last_accounted_block_id
. That block is probably not marked as accounted. Change the flag.
If users did not get paid out, the cron will not be able to recover if shares have been deleted already.
In case of an orphan block not marked properly, just re-run the cron with the force option.
E0062: Block has no share_id, not running payouts
This is usually a follow up error caused by findblocks not running properly. Check the findblocks logfile and fix those errors, then payouts should continue once you force the run. If not, the same error message will appear.
See above errors for a fix in findblocks cron.
-
- installation of Redis requires TCL 8.5 or newer TCL Download Page