--TEST-- MongoDB\Driver\Manager::executeReadWriteCommand() pins transaction to server --SKIPIF-- --FILE-- executeCommand( DATABASE_NAME, new \MongoDB\Driver\Command([ 'create' => COLLECTION_NAME ]), [ 'writeConcern' => new \MongoDB\Driver\WriteConcern( \MongoDB\Driver\WriteConcern::MAJORITY ) ] ); $session = $manager->startSession(); var_dump($session->getServer() instanceof \MongoDB\Driver\Server); $session->startTransaction(); var_dump($session->getServer() instanceof \MongoDB\Driver\Server); $command = new MongoDB\Driver\Command([ 'aggregate' => COLLECTION_NAME, 'pipeline' => [ ['$group' => ['_id' => 1]], /* Note: $out cannot be used in a transaction. This is technically not a * write command, but it works for the purposes of this test. */ ], 'cursor' => (object) [] ]); $manager->executeReadWriteCommand(DATABASE_NAME, $command, ['session' => $session]); $pinnedServer = $session->getServer(); var_dump($pinnedServer instanceof \MongoDB\Driver\Server); $bulk = new MongoDB\Driver\BulkWrite(); $bulk->insert(['x' => 1]); $manager->executeBulkWrite(NS, $bulk, ['session' => $session]); $session->commitTransaction(); var_dump($session->getServer() == $pinnedServer); $bulk = new MongoDB\Driver\BulkWrite(); $bulk->insert(['x' => 1]); $manager->executeBulkWrite(NS, $bulk, ['session' => $session]); var_dump($session->getServer() instanceof \MongoDB\Driver\Server); ?> ===DONE=== --EXPECT-- bool(false) bool(false) bool(true) bool(true) bool(false) ===DONE===