CurOp* CurOp::getOp(const BSONObj& criteria) { // Regarding Matcher: This is not quite the right hammer to use here. // Future: use an actual property of CurOp to flag index builds // and use that to filter. // This will probably need refactoring once we change index builds // to be a real command instead of an insert into system.indexes Matcher matcher(criteria); Client& me = cc(); scoped_lock client_lock(Client::clientsMutex); for (std::set<Client*>::iterator it = Client::clients.begin(); it != Client::clients.end(); it++) { Client *client = *it; verify(client); CurOp* curop = client->curop(); if (client == &me || curop == NULL) { continue; } if ( !curop->active() ) continue; if ( curop->killPendingStrict() ) continue; BSONObj info = curop->description(); if (matcher.matches(info)) { return curop; } } return NULL; }