Stratum: reset workers counters on synchronized

This commit is contained in:
SChernykh
2026-02-28 17:22:53 +01:00
parent 7923f84233
commit ca39b36337
2 changed files with 31 additions and 0 deletions
+25
View File
@@ -70,6 +70,7 @@ StratumServer::StratumServer(p2pool* pool)
m_hashrateData[0] = { seconds_since_epoch(), 0 };
uv_mutex_init_checked(&m_resetShareCountersLock);
uv_mutex_init_checked(&m_blobsQueueLock);
uv_mutex_init_checked(&m_showWorkersLock);
uv_mutex_init_checked(&m_rngLock);
@@ -77,6 +78,9 @@ StratumServer::StratumServer(p2pool* pool)
m_extraNonce = get_random32();
uv_async_init_checked(&m_loop, &m_resetShareCountersAsync, on_reset_share_counters);
m_resetShareCountersAsync.data = this;
uv_async_init_checked(&m_loop, &m_blobsAsync, on_blobs_ready);
m_blobsAsync.data = this;
m_blobsQueue.reserve(2);
@@ -101,6 +105,7 @@ StratumServer::~StratumServer()
}
}
uv_mutex_destroy(&m_resetShareCountersLock);
uv_mutex_destroy(&m_blobsQueueLock);
uv_mutex_destroy(&m_showWorkersLock);
uv_mutex_destroy(&m_rngLock);
@@ -608,6 +613,22 @@ void StratumServer::show_workers()
void StratumServer::reset_share_counters()
{
MutexLock lock(m_resetShareCountersLock);
if (!uv_is_closing(reinterpret_cast<uv_handle_t*>(&m_resetShareCountersAsync))) {
uv_async_send(&m_resetShareCountersAsync);
}
}
void StratumServer::on_reset_share_counters()
{
check_event_loop_thread(__func__);
for (StratumClient* c = static_cast<StratumClient*>(m_connectedClientsList->m_next); c != m_connectedClientsList; c = static_cast<StratumClient*>(c->m_next)) {
c->m_stratumShares = 0;
c->m_sidechainShares = 0;
}
WriteLock lock(m_hashrateDataLock);
m_cumulativeHashesAtLastShare = m_cumulativeHashes;
@@ -1171,6 +1192,10 @@ void StratumServer::on_after_share_found(uv_work_t* req, int /*status*/)
void StratumServer::on_shutdown()
{
{
MutexLock lock(m_resetShareCountersLock);
uv_close(reinterpret_cast<uv_handle_t*>(&m_resetShareCountersAsync), nullptr);
}
{
MutexLock lock(m_blobsQueueLock);
uv_close(reinterpret_cast<uv_handle_t*>(&m_blobsAsync), nullptr);
+6
View File
@@ -131,6 +131,12 @@ private:
hash m_seedHash;
};
uv_mutex_t m_resetShareCountersLock;
uv_async_t m_resetShareCountersAsync;
static void on_reset_share_counters(uv_async_t* handle) { reinterpret_cast<StratumServer*>(handle->data)->on_reset_share_counters(); }
void on_reset_share_counters();
uv_mutex_t m_blobsQueueLock;
uv_async_t m_blobsAsync;
std::vector<BlobsData*> m_blobsQueue;