Fix a bug where the MachineManager's destructor became incorrect after being moved
This commit is contained in:
parent
a815ec9617
commit
fa1ddfea12
@ -88,6 +88,7 @@ class Queue {
|
|||||||
public:
|
public:
|
||||||
void Push(Message &&message) {
|
void Push(Message &&message) {
|
||||||
{
|
{
|
||||||
|
MG_ASSERT(inner_.use_count() > 0);
|
||||||
std::unique_lock<std::mutex> lock(inner_->mu);
|
std::unique_lock<std::mutex> lock(inner_->mu);
|
||||||
|
|
||||||
inner_->queue.emplace_back(std::forward<Message>(message));
|
inner_->queue.emplace_back(std::forward<Message>(message));
|
||||||
@ -132,7 +133,7 @@ class CoordinatorWorker {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
CoordinatorWorker(io::Io<IoImpl> io, Queue queue, Coordinator coordinator)
|
CoordinatorWorker(io::Io<IoImpl> io, Queue queue, Coordinator coordinator)
|
||||||
: io_(io), queue_(queue), coordinator_{std::move(io.ForkLocal()), {}, std::move(coordinator)} {}
|
: io_(io), queue_(std::move(queue)), coordinator_{std::move(io.ForkLocal()), {}, std::move(coordinator)} {}
|
||||||
|
|
||||||
CoordinatorWorker(CoordinatorWorker &&) = default;
|
CoordinatorWorker(CoordinatorWorker &&) = default;
|
||||||
CoordinatorWorker &operator=(CoordinatorWorker &&) = default;
|
CoordinatorWorker &operator=(CoordinatorWorker &&) = default;
|
||||||
|
@ -92,10 +92,10 @@ class MachineManager {
|
|||||||
MachineManager &operator=(const MachineManager &) = delete;
|
MachineManager &operator=(const MachineManager &) = delete;
|
||||||
|
|
||||||
~MachineManager() {
|
~MachineManager() {
|
||||||
coordinator_queue_.Push(coordinator::coordinator_worker::ShutDown{});
|
if (coordinator_handle_.joinable()) {
|
||||||
spdlog::error("a");
|
coordinator_queue_.Push(coordinator::coordinator_worker::ShutDown{});
|
||||||
std::move(coordinator_handle_).join();
|
std::move(coordinator_handle_).join();
|
||||||
spdlog::error("b");
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Address CoordinatorAddress() { return coordinator_address_; }
|
Address CoordinatorAddress() { return coordinator_address_; }
|
||||||
|
@ -92,6 +92,7 @@ class Queue {
|
|||||||
public:
|
public:
|
||||||
void Push(Message &&message) {
|
void Push(Message &&message) {
|
||||||
{
|
{
|
||||||
|
MG_ASSERT(inner_.use_count() > 0);
|
||||||
std::unique_lock<std::mutex> lock(inner_->mu);
|
std::unique_lock<std::mutex> lock(inner_->mu);
|
||||||
|
|
||||||
inner_->queue.emplace_back(std::forward<Message>(message));
|
inner_->queue.emplace_back(std::forward<Message>(message));
|
||||||
|
Loading…
Reference in New Issue
Block a user