EOSIO/eosio.contracts

eosio.contracts 1.9.0 producer scheduling problem

enumivo-core opened this issue · 5 comments

eosio 1.9.0

when running cleos system unregprod, it sets producer key to EOS1111111111111111111111111111111114T1Anm and it still has some votes. those voting the producer does not remove in its list of voted producers. and the producer still produces blocks.

we started a chain with eosio.contracts 1.8.3, tried voting and changing the votes and the producer schedule changes as well without any problem, then we upgrade to 1.9.0, and no matter how we change the voting, the active schedule remains fixed. any workaround?

reverting it to 1.8.3 fixes the producer scheduling. it's definitely an eosio.contracts 1.9.0 problem.

arhag commented

@enumivo-core:

There indeed is a bug in eosio.contracts v1.9.0 that causes problems during onblock (which is responsible for producer schedule changes, producer pay, and a few other things) when transitioning from the producer tables generated in prior versions.

A simple workaround is for all of the top active producers to call the regproducer (or regproducer2) action to correct their produce table records and the system should resolve itself.

I also have a fix in the system contract that should prevent the problem from occurring in the first place (when upgrading from system contract versions v1.8.x or earlier and while skipping over v1.9.0 and its release candidates) and which is able to resolve the onblock failures immediately (if v1.9.0 was already deployed on a chain) even without requiring the producers to take any additional action. If you would like to try it out early on a test network, it is available in the 435-producer-scheduling-1.9 branch.

calling regproducer fixed our testnet, thanks @arhag

arhag commented

This issue was resolved by #445 (and #446 for v1.9.x). The fix was released in eosio.contracts v1.9.1.