mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
Make Env::AppBundle constructor exception safe
When the Env::AppBundle constructor throws an exception it still needs to run ~AppBundle(), otherwise the JobQueue isn't properly shut down. Specifically the JobQueue can destruct without waiting on outstanding jobs in the queue. This change ensures that if Env::AppBundle constructor throws, Env::AppBundle::~AppBundle() runs. This fixes the unit test crash exposed by PR #3047.
This commit is contained in:
committed by
Manoj doshi
parent
41b2c80dde
commit
726dd69ab9
@@ -749,6 +749,22 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void testExceptionalShutdown()
|
||||
{
|
||||
except(
|
||||
[this]
|
||||
{
|
||||
jtx::Env env {*this,
|
||||
jtx::envconfig([](std::unique_ptr<Config> cfg)
|
||||
{
|
||||
(*cfg).deprecatedClearSection("port_rpc");
|
||||
return cfg;
|
||||
})};
|
||||
}
|
||||
);
|
||||
pass();
|
||||
}
|
||||
|
||||
void
|
||||
run() override
|
||||
{
|
||||
@@ -771,6 +787,7 @@ public:
|
||||
testResignSigned();
|
||||
testSignAndSubmit();
|
||||
testFeatures();
|
||||
testExceptionalShutdown();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user