From 1520585b17e24cd34ae234cd8319ffa01e8c6b3d Mon Sep 17 00:00:00 2001 From: Vlad Dobromyslov Date: Wed, 9 Aug 2023 14:21:39 +0300 Subject: [PATCH] #558 - Fix schedule_son_processing before fully sync --- .../peerplays_sidechain_plugin.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/libraries/plugins/peerplays_sidechain/peerplays_sidechain_plugin.cpp b/libraries/plugins/peerplays_sidechain/peerplays_sidechain_plugin.cpp index 6f6747db..98ebbbf2 100644 --- a/libraries/plugins/peerplays_sidechain/peerplays_sidechain_plugin.cpp +++ b/libraries/plugins/peerplays_sidechain/peerplays_sidechain_plugin.cpp @@ -100,6 +100,7 @@ private: uint16_t retries_threshold = 150; bool first_block_skipped; + bool son_processing_enabled; void on_applied_block(const signed_block &b); }; @@ -135,7 +136,8 @@ peerplays_sidechain_plugin_impl::peerplays_sidechain_plugin_impl(peerplays_sidec } return net_handlers; }()), - first_block_skipped(false) { + first_block_skipped(false), + son_processing_enabled(false) { } peerplays_sidechain_plugin_impl::~peerplays_sidechain_plugin_impl() { @@ -871,7 +873,19 @@ void peerplays_sidechain_plugin_impl::settle_sidechain_transactions(sidechain_ty void peerplays_sidechain_plugin_impl::on_applied_block(const signed_block &b) { if (first_block_skipped) { - schedule_son_processing(); + if(son_processing_enabled) { + schedule_son_processing(); + } + else + { + const fc::time_point now_fine = fc::time_point::now(); + const fc::time_point_sec now = now_fine + fc::microseconds( 500000 ); + if( plugin.database().get_slot_time(1) >= now ) + { + son_processing_enabled = true; + schedule_son_processing(); + } + } } else { first_block_skipped = true; }