Как я могу предотвратить взаимные блокировки postgres при запуске шутовых тестов на CircleCI? - PullRequest
0 голосов
/ 16 октября 2018

Когда я запускаю свои тесты на CircleCI, он регистрирует следующее сообщение много раз, и в конечном итоге тесты не проходят, потому что ни один из методов базы данных не может извлечь данные из-за взаимоблокировок:

{
  "message": "Error running raw sql query in pool.",
  "stack": "error: deadlock detected\n    at Connection.Object.<anonymous>.Connection.parseE (/home/circleci/backend/node_modules/pg/lib/connection.js:567:11)\n    at Connection.Object.<anonymous>.Connection.parseMessage (/home/circleci/-backend/node_modules/pg/lib/connection.js:391:17)\n    at Socket.<anonymous> (/home/circleci/backend/node_modules/pg/lib/connection.js:129:22)\n    at emitOne (events.js:116:13)\n    at Socket.emit (events.js:211:7)\n    at addChunk (_stream_readable.js:263:12)\n    at readableAddChunk (_stream_readable.js:250:11)\n    at Socket.Readable.push (_stream_readable.js:208:10)\n    at TCP.onread (net.js:597:20)",
  "name": "error",
  "length": 316,
  "severity": "ERROR",
  "code": "40P01",
  "detail": "Process 1000 waits for AccessExclusiveLock on relation 17925 of database 16384; blocked by process 986.\nProcess 986 waits for RowShareLock on relation 17870 of database 16384; blocked by process 1000.",
  "hint": "See server log for query details.",
  "file": "deadlock.c",
  "line": "1140",
  "routine": "DeadLockReport",
  "level": "error",
  "timestamp": "2018-10-15T20:54:29.221Z"
}

Этокоманда теста, которую я запускаю: jest --logHeapUsage --forceExit --runInBand

  • Я также попробовал это: jest --logHeapUsage --forceExit --maxWorkers=2

Практически все тесты выполняют какую-то функцию базы данных.Эта проблема только начала возникать, когда мы добавили больше тестов.У кого-нибудь еще была такая же проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...