From ca0cc9455873fc9f0f2280c6142582cab2395266 Mon Sep 17 00:00:00 2001 From: gg Date: Thu, 15 Jan 2026 07:33:50 -0500 Subject: [PATCH] workflow and sync fixes --- .github/workflows/build.yml | 2 +- src/MainWindow.cpp | 4 ++-- src/libwalletqt/Wallet.cpp | 23 ++++++++++++++++------- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ab79291a..625a6b7a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -76,7 +76,7 @@ jobs: apt -y install wget gpg software-properties-common # 2. Add Kitware repository (for modern CMake > 3.20) - wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null + wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ focal main' | tee /etc/apt/sources.list.d/kitware.list >/dev/null apt update diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index ec6cc027..ed2fe5b1 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -663,9 +663,9 @@ void MainWindow::initWalletContext() { this->onConnectionStatusChanged(status); if (status == Wallet::ConnectionStatus_Disconnected) { - QTimer::singleShot(2000, m_nodes, [this]{ m_nodes->autoConnect(); }); + QTimer::singleShot(2000, m_nodes, [this]{ m_nodes->autoConnect(); }); } else { - m_nodes->autoConnect(); + m_nodes->autoConnect(); } this->updateBalance(); diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp index d62ed9cf..b8fbed38 100644 --- a/src/libwalletqt/Wallet.cpp +++ b/src/libwalletqt/Wallet.cpp @@ -506,18 +506,27 @@ void Wallet::startRefreshThread() const auto elapsed = now - last; if (elapsed >= std::chrono::seconds(m_refreshInterval) || m_refreshNow) { - m_lastRefreshTime = std::chrono::duration_cast(std::chrono::steady_clock::now().time_since_epoch()).count(); - last = std::chrono::steady_clock::now(); - - qDebug() << "Refresher: Interval met. Elapsed:" << std::chrono::duration_cast(elapsed).count() - << "Interval:" << m_refreshInterval << "RefreshNow:" << m_refreshNow; - m_refreshNow = false; - + auto loopStartTime = std::chrono::time_point_cast(std::chrono::steady_clock::now()); // get daemonHeight and targetHeight // daemonHeight and targetHeight will be 0 if call to get_info fails quint64 daemonHeight = m_walletImpl->daemonBlockChainHeight(); bool success = daemonHeight > 0; + if (success) { + m_lastRefreshTime = loopStartTime.time_since_epoch().count(); + last = loopStartTime; + } else { + // If sync failed, retry in 10 seconds (or immediately if interval < 10s) + auto retryDelay = std::min(std::chrono::seconds(m_refreshInterval), std::chrono::seconds(10)); + auto nextTime = loopStartTime - std::chrono::seconds(m_refreshInterval) + retryDelay; + m_lastRefreshTime = nextTime.time_since_epoch().count(); + last = nextTime; + } + + qDebug() << "Refresher: Interval met. Elapsed:" << std::chrono::duration_cast(elapsed).count() + << "Interval:" << m_refreshInterval << "RefreshNow:" << m_refreshNow; + + quint64 targetHeight = 0; if (success) { targetHeight = m_walletImpl->daemonBlockChainTargetHeight(); -- 2.52.0