Example #1
0
bool ServiceContextMongoD::killOperation(unsigned int opId) {
    for (LockedClientsCursor cursor(this); Client* client = cursor.next();) {
        stdx::lock_guard<Client> lk(*client);
        bool found = _killOperationsAssociatedWithClientAndOpId_inlock(client, opId);
        if (found) {
            return true;
        }
    }

    return false;
}
Example #2
0
    bool GlobalEnvironmentMongoD::killOperation(unsigned int opId) {
        boost::lock_guard<boost::mutex> clientLock(Client::clientsMutex);

        for(ClientSet::const_iterator j = Client::clients.begin();
                j != Client::clients.end(); ++j) {

            Client* client = *j;

            bool found = _killOperationsAssociatedWithClientAndOpId_inlock(client, opId);
            if (found) {
                return true;
            }
        }

        return false;
    }
Example #3
0
void GlobalEnvironmentMongoD::killAllUserOperations(const OperationContext* txn) {
    boost::mutex::scoped_lock scopedLock(Client::clientsMutex);
    for (ClientSet::const_iterator i = Client::clients.begin();
            i != Client::clients.end(); i++) {

        Client* client = *i;
        if (!client->isFromUserConnection()) {
            // Don't kill system operations.
            continue;
        }

        if (client->curop()->opNum() == txn->getOpID()) {
            // Don't kill ourself.
            continue;
        }

        bool found = _killOperationsAssociatedWithClientAndOpId_inlock(
                         client, client->curop()->opNum());
        invariant(found);
    }
}
Example #4
0
    void GlobalEnvironmentMongoD::killAllUserOperations(const OperationContext* txn) {
        boost::lock_guard<boost::mutex> scopedLock(Client::clientsMutex);
        for (ClientSet::const_iterator i = Client::clients.begin();
                i != Client::clients.end(); i++) {

            Client* client = *i;
            if (!client->isFromUserConnection()) {
                // Don't kill system operations.
                continue;
            }

            if (client->curop()->opNum() == txn->getOpID()) {
                // Don't kill ourself.
                continue;
            }

            bool found = _killOperationsAssociatedWithClientAndOpId_inlock(
                    client, client->curop()->opNum());
            if (!found) {
                warning() << "Attempted to kill operation " << client->curop()->opNum()
                          << " but the opId changed";
            }
        }
    }