mirror of
https://github.com/XRPLF/rippled.git
synced 2026-04-29 15:37:57 +00:00
tring to fix the thread race in BasicApp
Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com>
This commit is contained in:
@@ -205,10 +205,10 @@ jobs:
|
||||
- name: Set sanitizer options
|
||||
if: ${{ !inputs.build_only && env.SANITIZERS_ENABLED == 'true' }}
|
||||
run: |
|
||||
echo "ASAN_OPTIONS=print_stacktrace=1:detect_container_overflow=0" >> ${GITHUB_ENV}
|
||||
echo "ASAN_OPTIONS=print_stacktrace=1:detect_container_overflow=0:suppressions=${GITHUB_WORKSPACE}/sanitizers/suppressions/asan.supp" >> ${GITHUB_ENV}
|
||||
echo "TSAN_OPTIONS=second_deadlock_stack=1:halt_on_error=0" >> ${GITHUB_ENV}
|
||||
# echo "UBSAN_OPTIONS=suppressions=${GITHUB_WORKSPACE}/sanitizers/suppressions/ubsan.supp" >> ${GITHUB_ENV}
|
||||
# echo "LSAN_OPTIONS=suppressions=${GITHUB_WORKSPACE}/sanitizers/suppressions/lsan.supp" >> ${GITHUB_ENV}
|
||||
echo "UBSAN_OPTIONS=suppressions=${GITHUB_WORKSPACE}/sanitizers/suppressions/ubsan.supp" >> ${GITHUB_ENV}
|
||||
echo "LSAN_OPTIONS=suppressions=${GITHUB_WORKSPACE}/sanitizers/suppressions/lsan.supp" >> ${GITHUB_ENV}
|
||||
|
||||
- name: Run the separate tests
|
||||
if: ${{ !inputs.build_only }}
|
||||
|
||||
@@ -31,7 +31,6 @@ race:src/test/jtx/impl/token.cpp
|
||||
race:src/test/rpc/Book_test.cpp
|
||||
race:src/xrpld/app/ledger/detail/InboundTransactions.cpp
|
||||
race:src/xrpld/app/main/Application.cpp
|
||||
race:src/xrpld/app/main/BasicApp.cpp
|
||||
race:src/xrpld/app/main/GRPCServer.cpp
|
||||
race:src/xrpld/app/misc/detail/AmendmentTable.cpp
|
||||
race:src/xrpld/app/misc/FeeVoteImpl.cpp
|
||||
|
||||
@@ -1035,6 +1035,8 @@ private:
|
||||
bool
|
||||
ApplicationImp::setup(boost::program_options::variables_map const& cmdline)
|
||||
{
|
||||
startIOThreads();
|
||||
|
||||
// We want to intercept CTRL-C and the standard termination signal SIGTERM
|
||||
// and terminate the process. This handler will NEVER be invoked twice.
|
||||
//
|
||||
|
||||
@@ -4,15 +4,20 @@
|
||||
|
||||
#include <boost/asio/executor_work_guard.hpp>
|
||||
|
||||
BasicApp::BasicApp(std::size_t numberOfThreads)
|
||||
BasicApp::BasicApp(std::size_t numberOfThreads) : numberOfThreads_(numberOfThreads)
|
||||
{
|
||||
work_.emplace(boost::asio::make_work_guard(io_context_));
|
||||
threads_.reserve(numberOfThreads);
|
||||
}
|
||||
|
||||
while (numberOfThreads--)
|
||||
void
|
||||
BasicApp::startIOThreads()
|
||||
{
|
||||
threads_.reserve(numberOfThreads_);
|
||||
|
||||
while (numberOfThreads_--)
|
||||
{
|
||||
threads_.emplace_back([this, numberOfThreads]() {
|
||||
beast::setCurrentThreadName("io svc #" + std::to_string(numberOfThreads));
|
||||
threads_.emplace_back([this, n = numberOfThreads_]() {
|
||||
beast::setCurrentThreadName("io svc #" + std::to_string(n));
|
||||
this->io_context_.run();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ private:
|
||||
std::optional<boost::asio::executor_work_guard<boost::asio::io_context::executor_type>> work_;
|
||||
std::vector<std::thread> threads_;
|
||||
boost::asio::io_context io_context_;
|
||||
std::size_t numberOfThreads_;
|
||||
|
||||
public:
|
||||
BasicApp(std::size_t numberOfThreads);
|
||||
@@ -23,4 +24,8 @@ public:
|
||||
{
|
||||
return io_context_;
|
||||
}
|
||||
|
||||
protected:
|
||||
void
|
||||
startIOThreads();
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user