Files

1.4 KiB

id, title
id title
common-issues Common Issues

There are some common issues you may encounter with mongodb-memory-server (or also manually handling mongod instances), this guide will try to explain why they happen how to fix those issues.

MongoWriteConcernError: operation was interrupted

The Error MongoWriteConcernError: operation was interrupted happens when a operation which is not retryable fails, which includes for example db.dropDatabase. This Error happens because mongodb firstly starts all instances, says they are okay and has a primary (which are all events mongodb-memory-server listens for before resolving .start), but the shortly after the .start is resolved, the instace that is primary decides to step-down due to whatever reason.

The fix is to manually re-try those operations, like:

// original:
async function setup(db) {
  await db.dropDatabase();
}

// fix
async function setup(db) {
  let retries = 5;
  while (retries > 0) {
    retries -= 1;
    try {
      await _setup(db);
    } catch (err) {
      if (err instanceof mongodb.MongoWriteConcernError && /operation was interrupted/.test(err.message)) {
        continue;
      }

      throw err;
    }
  }
}

async function _setup(db) {
  await db.dropDatabase();
}

See Operations which are retry-able.