findOne transactions in Promise.all occur "NoSuchTransaction"

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Gone away
    • Priority: Critical - P2
    • None
    • Affects Version/s: None
    • Component/s: None
    • None
    • Not Needed
    • None
    • None
    • None
    • None
    • None
    • None

      MongoDB v4.4

      Node.js driver: 3.6.6

       

      As i know, find query don't compete race condition. but i don't know why?

       

      // 코드 자리 표시자
      const session = Connection.client.startSession();
          try {      session.startTransaction();      const result = await Promise.all([        Connection.db.collection("movies").findOne(          {            genres: { $in: ["Drama"] },          },          { session }        ),        Connection.db.collection("movies").findOne(          {            genres: { $in: ["Fantasy"] },          },          { session }        ),        Connection.db.collection("movies").findOne(          {            genres: { $in: ["Crime"] },          },          { session }        ),      ]);      await session.commitTransaction();      res.status(200).send(result);    } catch (error) {      console.log(error);
            await session.abortTransaction();      // console.log(abort);
            res.status(500).send(error.message);    } finally {      session.endSession();    }
      

       

      MongoError: Given transaction number 3 does not match any in-progress transactions. The active transaction number is 2
      at Connection.<anonymous> (/Users/ian/Workspace/my/mongodb-transaction-test/node_modules/mongodb/lib/core/connection/pool.js:451:61)
      at Connection.emit (events.js:315:20)
      at Connection.EventEmitter.emit (domain.js:467:12)
      at processMessage (/Users/ian/Workspace/my/mongodb-transaction-test/node_modules/mongodb/lib/core/connection/connection.js:451:10)
      at TLSSocket.<anonymous> (/Users/ian/Workspace/my/mongodb-transaction-test/node_modules/mongodb/lib/core/connection/connection.js:620:15)
      at TLSSocket.emit (events.js:315:20)
      at TLSSocket.EventEmitter.emit (domain.js:467:12)
      at addChunk (internal/streams/readable.js:309:12)
      at readableAddChunk (internal/streams/readable.js:284:9)
      at TLSSocket.Readable.push (internal/streams/readable.js:223:10)

      { operationTime: Timestamp \{ _bsontype: 'Timestamp', low_: 5012, high_: 1619623035 }

      ,
      ok: 0,
      code: 251,
      codeName: 'NoSuchTransaction',
      '$clusterTime':

      { clusterTime: Timestamp \{ _bsontype: 'Timestamp', low_: 5012, high_: 1619623035 }

      ,
      signature: { hash: [Binary], keyId: [Long] }
      },
      [Symbol(errorLabels)]: Set(1) { 'TransientTransactionError' }
      }

            Assignee:
            Durran Jordan
            Reporter:
            승환 최
            None
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: