From deaf47155fdc9c8d4f899315d294a3309cb53faa Mon Sep 17 00:00:00 2001 From: SChernykh Date: Thu, 30 Jun 2022 12:13:17 +0200 Subject: [PATCH] Miner: reset share counter when synchronized --- src/miner.cpp | 8 +++++++- src/miner.h | 3 ++- src/p2pool.cpp | 9 +++++++++ src/p2pool.h | 1 + src/side_chain.cpp | 11 ++++++++--- 5 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/miner.cpp b/src/miner.cpp index 81eccc8..19f1212 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -112,7 +112,7 @@ void Miner::on_block(const BlockTemplate& block) const double time_running = static_cast(duration_cast(cur_ts - m_startTimestamp).count()) / 1e3; s << "{\"current_hashrate\":" << hr - << ",\"total_hashes\":" << m_totalHashes + << ",\"total_hashes\":" << m_totalHashes.load() << ",\"time_running\":" << time_running << ",\"shares_found\":" << m_sharesFound.load() << ",\"block_reward_share_percent\":" << block_reward_share_percent @@ -122,6 +122,12 @@ void Miner::on_block(const BlockTemplate& block) } } +void Miner::reset_share_counters() +{ + m_totalHashes = 0; + m_sharesFound = 0; +} + void Miner::run(void* data) { WorkerData* d = static_cast(data); diff --git a/src/miner.h b/src/miner.h index c979e1e..4bda214 100644 --- a/src/miner.h +++ b/src/miner.h @@ -33,6 +33,7 @@ public: void print_status(); void on_block(const BlockTemplate& block); + void reset_share_counters(); private: static void run(void* data); @@ -57,7 +58,7 @@ private: std::chrono::high_resolution_clock::time_point m_nonceTimestamp; const uint32_t m_extraNonce; - uint64_t m_totalHashes; + std::atomic m_totalHashes; std::atomic m_sharesFound; struct Job diff --git a/src/p2pool.cpp b/src/p2pool.cpp index 7ed4182..e2145b8 100644 --- a/src/p2pool.cpp +++ b/src/p2pool.cpp @@ -1348,6 +1348,15 @@ void p2pool::stop_mining() m_miner = nullptr; } } + +void p2pool::reset_miner() +{ + MutexLock lock(m_minerLock); + + if (m_miner) { + m_miner->reset_share_counters(); + } +} #endif static void on_signal(uv_signal_t* handle, int signum) diff --git a/src/p2pool.h b/src/p2pool.h index d27d04c..11c056e 100644 --- a/src/p2pool.h +++ b/src/p2pool.h @@ -91,6 +91,7 @@ public: #ifdef WITH_RANDOMX void start_mining(uint32_t threads); void stop_mining(); + void reset_miner(); #endif uint64_t zmq_last_active() const { return m_zmqLastActive; } diff --git a/src/side_chain.cpp b/src/side_chain.cpp index f7c46fb..9fff994 100644 --- a/src/side_chain.cpp +++ b/src/side_chain.cpp @@ -1475,9 +1475,14 @@ void SideChain::update_chain_tip(PoolBlock* block) m_pool->update_block_template_async(); // Reset stratum share counters when switching to an alternative chain to avoid confusion - StratumServer* s = m_pool->stratum_server(); - if (s && is_alternative) { - s->reset_share_counters(); + if (is_alternative) { + StratumServer* s = m_pool->stratum_server(); + if (s) { + s->reset_share_counters(); + } +#ifdef WITH_RANDOMX + m_pool->reset_miner(); +#endif LOGINFO(0, log::LightCyan() << "SYNCHRONIZED"); } }