diff --git a/.github/workflows/test-sync.yml b/.github/workflows/test-sync.yml index a44c07a..18eb00b 100644 --- a/.github/workflows/test-sync.yml +++ b/.github/workflows/test-sync.yml @@ -28,14 +28,14 @@ jobs: make -j$(nproc) - name: Run p2pool - timeout-minutes: 15 + timeout-minutes: 20 run: | cd build mkdir data python ../tests/src/stratum_dummy.py stratum_dummy1.log & python ../tests/src/stratum_dummy.py stratum_dummy2.log & python ../tests/src/stratum_dummy.py stratum_dummy3.log & - TSAN_OPTIONS="suppressions=../tests/src/tsan_sup.txt halt_on_error=1" ./p2pool --host p2pmd.xmrvsbeast.com --zmq-port 18084 --wallet 44MnN1f3Eto8DZYUWuE5XZNUtE3vcRzt2j6PzqWpPau34e6Cf4fAxt6X2MBmrm6F9YMEiMNjN6W4Shn4pLcfNAja621jwyg --data-api data --local-api --loglevel 6 + TSAN_OPTIONS="suppressions=../tests/src/tsan_sup.txt halt_on_error=1" ./p2pool --host xmrnode.facspro.net --rpc-port 18089 --zmq-port 18084 --wallet 44MnN1f3Eto8DZYUWuE5XZNUtE3vcRzt2j6PzqWpPau34e6Cf4fAxt6X2MBmrm6F9YMEiMNjN6W4Shn4pLcfNAja621jwyg --data-api data --local-api --loglevel 6 grep 'Synchronization finished successfully' p2pool.log - name: Archive p2pool.log @@ -68,14 +68,14 @@ jobs: make -j3 - name: Run p2pool - timeout-minutes: 15 + timeout-minutes: 20 run: | cd build mkdir data python ../tests/src/stratum_dummy.py stratum_dummy1.log & python ../tests/src/stratum_dummy.py stratum_dummy2.log & python ../tests/src/stratum_dummy.py stratum_dummy3.log & - ./p2pool --host p2pmd.xmrvsbeast.com --zmq-port 18084 --wallet 44MnN1f3Eto8DZYUWuE5XZNUtE3vcRzt2j6PzqWpPau34e6Cf4fAxt6X2MBmrm6F9YMEiMNjN6W4Shn4pLcfNAja621jwyg --data-api data --local-api --loglevel 6 + ./p2pool --host xmrnode.facspro.net --rpc-port 18089 --zmq-port 18084 --wallet 44MnN1f3Eto8DZYUWuE5XZNUtE3vcRzt2j6PzqWpPau34e6Cf4fAxt6X2MBmrm6F9YMEiMNjN6W4Shn4pLcfNAja621jwyg --data-api data --local-api --loglevel 6 grep 'Synchronization finished successfully' p2pool.log - name: Archive p2pool.log @@ -108,14 +108,14 @@ jobs: & "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\Msbuild\\Current\\Bin\\amd64\\msbuild" /m /p:Configuration=Debug p2pool.vcxproj - name: Run p2pool - timeout-minutes: 15 + timeout-minutes: 20 run: | cd build/Debug mkdir data Start-Process python -ArgumentList "../../tests/src/stratum_dummy.py stratum_dummy1.log" Start-Process python -ArgumentList "../../tests/src/stratum_dummy.py stratum_dummy2.log" Start-Process python -ArgumentList "../../tests/src/stratum_dummy.py stratum_dummy3.log" - ./p2pool.exe --host p2pmd.xmrvsbeast.com --zmq-port 18084 --wallet 44MnN1f3Eto8DZYUWuE5XZNUtE3vcRzt2j6PzqWpPau34e6Cf4fAxt6X2MBmrm6F9YMEiMNjN6W4Shn4pLcfNAja621jwyg --data-api data --local-api --loglevel 6 + ./p2pool.exe --host xmrnode.facspro.net --rpc-port 18089 --zmq-port 18084 --wallet 44MnN1f3Eto8DZYUWuE5XZNUtE3vcRzt2j6PzqWpPau34e6Cf4fAxt6X2MBmrm6F9YMEiMNjN6W4Shn4pLcfNAja621jwyg --data-api data --local-api --loglevel 6 findstr /C:"Synchronization finished successfully" p2pool.log - name: Archive p2pool.log diff --git a/src/json_rpc_request.cpp b/src/json_rpc_request.cpp index 64acd93..d20c605 100644 --- a/src/json_rpc_request.cpp +++ b/src/json_rpc_request.cpp @@ -174,7 +174,11 @@ CurlContext::CurlContext(const std::string& address, int port, const std::string curl_easy_setopt_checked(m_handle, CURLOPT_WRITEFUNCTION, write_func); curl_easy_setopt_checked(m_handle, CURLOPT_WRITEDATA, this); +#ifdef DEV_TEST_SYNC + const int timeout = 10; +#else const int timeout = proxy.empty() ? 1 : 5; +#endif curl_easy_setopt_checked(m_handle, CURLOPT_URL, m_url.c_str()); curl_easy_setopt_checked(m_handle, CURLOPT_POSTFIELDS, m_req.c_str()); diff --git a/src/side_chain.cpp b/src/side_chain.cpp index 0fd1757..57275e6 100644 --- a/src/side_chain.cpp +++ b/src/side_chain.cpp @@ -66,6 +66,9 @@ SideChain::SideChain(p2pool* pool, NetworkType type, const char* pool_name) , m_chainWindowSize(2160) , m_unclePenalty(20) , m_precalcFinished(false) +#ifdef DEV_TEST_SYNC + , m_synchronizedTime(0) +#endif { if (s_networkType == NetworkType::Invalid) { s_networkType = type; @@ -1722,6 +1725,9 @@ void SideChain::update_chain_tip(const PoolBlock* block) // Also clear cache because it has data from all old blocks now clear_crypto_cache(); LOGINFO(0, log::LightCyan() << "SYNCHRONIZED"); +#ifdef DEV_TEST_SYNC + m_synchronizedTime = seconds_since_epoch(); +#endif } } prune_old_blocks(); @@ -2028,6 +2034,20 @@ void SideChain::prune_old_blocks() // Pre-calc workers are not needed anymore finish_precalc(); + +#ifdef DEV_TEST_SYNC + if (m_pool && m_precalcFinished.load() && (cur_time >= m_synchronizedTime + 120)) { + LOGINFO(0, log::LightGreen() << "[DEV] Synchronization finished successfully, stopping P2Pool now"); + print_status(false); + P2PServer* server = m_pool->p2p_server(); + if (server) { + server->print_status(); + server->print_bans(); + server->show_peers_async(); + } + m_pool->stop(); + } +#endif } } @@ -2278,20 +2298,6 @@ void SideChain::finish_precalc() { LOGERR(1, "exception in finish_precalc(): " << e.what()); } - -#ifdef DEV_TEST_SYNC - if (m_pool) { - LOGINFO(0, log::LightGreen() << "[DEV] Synchronization finished successfully, stopping P2Pool now"); - print_status(false); - P2PServer* server = m_pool->p2p_server(); - if (server) { - server->print_status(); - server->print_bans(); - server->show_peers_async(); - } - m_pool->stop(); - } -#endif } } // namespace p2pool diff --git a/src/side_chain.h b/src/side_chain.h index bf8f2c3..7728dbb 100644 --- a/src/side_chain.h +++ b/src/side_chain.h @@ -152,6 +152,10 @@ private: std::atomic m_precalcFinished; +#ifdef DEV_TEST_SYNC + uint64_t m_synchronizedTime; +#endif + hash m_consensusHash; void launch_precalc(const PoolBlock* block);