Skip to content
rog1121 edited this page Dec 31, 2013 · 28 revisions

Here is an overview of the most common error codes and possible fixes.

E0001 Out of Order Share detection

Message

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.

Fix

This is not a fatal error yet. findblocks will try to autofix the issue by changing the shares. It will re-order the shares so a following run should not fail.

E0002 Upstream shares not found

Meessage

E0002: Failed to fetch both offending shares: <x> and <y>. . Block height: <n>

Explanation

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.

Fix

Since we already accounted for a block you will need to manually assign a share to this 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 share update

Meessage

E0003: Failed to change shares order!

Explanation

findblocks tried to fix the shares order by updating both shares. This failed for some reason.

Fix

Nothing automated can be done here. You can go and check for those blocks in question which share_ids did not get updated. Once you find them you can manually switch the solution field between those two shares. That will bring the blocks back in order with the shares.

E0004 Failed to reset block

Meessage

Failed to reset block in database: <n>

Explanation

findblocks successfully changed the out of order shares but failed to update the shares, share_id and account_id information in the block <n>.

Fix

You can manually reset that block and try again.

E0005 Unable to fetch blocks upstream share

Meessage

E0005: Unable to fetch blocks upstream share, aborted: <error>

Explanation

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 you do have an issue, try assigning your own shares.

Fix

See E0002

E0015 Potential Double Payout detected

Message

E0015: Potential Double Payout detected

Explanation

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 we store 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, we do run blockupdate 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.

Fix

If a payout failed in mid-run, first check for previous errors. If the block has not been confirmed yet, you could simply delete all transactions related to this block and try to re-run it. If the block did confirm and you have already paid out users, all you can do is 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.

Clone this wiki locally