diff --git a/assignment-client/src/AssignmentClientMonitor.cpp b/assignment-client/src/AssignmentClientMonitor.cpp index 330023dae0..fefed6e143 100644 --- a/assignment-client/src/AssignmentClientMonitor.cpp +++ b/assignment-client/src/AssignmentClientMonitor.cpp @@ -276,6 +276,7 @@ void AssignmentClientMonitor::checkSpares() { // Spawn or kill children, as needed. If --min or --max weren't specified, allow the child count // to drift up or down as far as needed. + if (spareCount < 1 || totalCount < _minAssignmentClientForks) { if (!_maxAssignmentClientForks || totalCount < _maxAssignmentClientForks) { spawnChildClient(); @@ -307,7 +308,7 @@ void AssignmentClientMonitor::handleChildStatusPacket(QSharedPointer()->addOrUpdateNode(senderID, NodeType::Unassigned, senderSockAddr, senderSockAddr); - auto childData = std::unique_ptr + auto newChildData = std::unique_ptr { new AssignmentClientChildData(Assignment::Type::AllTypes) }; - matchingNode->setLinkedData(std::move(childData)); + matchingNode->setLinkedData(std::move(newChildData)); } else { // tell unknown assignment-client child to exit. qDebug() << "Asking unknown child at" << senderSockAddr << "to exit."; @@ -329,9 +330,8 @@ void AssignmentClientMonitor::handleChildStatusPacket(QSharedPointer(matchingNode->getLinkedData()); } + childData = dynamic_cast(matchingNode->getLinkedData()); if (childData) { // update our records about how to reach this child