На машине разработчика запрос $sample работает нормально.
На серийной машине это выходит из строя.
Это очень простой запрос для получения случайных элементов из коллекции. Никаких других команд конвейера агрегации.
Есть предложения, где искать?
Goog обнаружил еще пару проблем, но ничего особенного.
производственная машина: Ubuntu v3.6.7
ошибка:
$sample stage could not find a non-duplicate document after 100 while using a random cursor
код:
let grams = await GramsModel.coll.aggregate(
[
{ $sample: { size: 2 } }
]
).toArray()
бревно
@random.rikai-bots.com 279|tutorw | MongoError: $sample stage could not find a non-duplicate document after 100 while using a random cursor. This is likely a sporadic failure, please try again.
@random.rikai-bots.com 279|tutorw | at Function.MongoError.create (/opt/rikai/web-apps/tutorweb/node_modules/mongodb-core/lib/error.js:31:11)
@random.rikai-bots.com 279|tutorw | at queryCallback (/opt/rikai/web-apps/tutorweb/node_modules/mongodb-core/lib/cursor.js:212:36)
@random.rikai-bots.com 279|tutorw | at /opt/rikai/web-apps/tutorweb/node_modules/mongodb-core/lib/connection/pool.js:469:18
@random.rikai-bots.com 279|tutorw | at process._tickCallback (internal/process/next_tick.js:61:11)
@random.rikai-bots.com 279|tutorw | Mon, 08 Oct 2018 20:00:33 GMT server
Ошибка НЕ является спорадической - 100% происходит на Ubuntu / 3.6.7 и никогда на Mac / 3.6.5.
В противном случае мне просто нужно написать свою собственную функцию получения случайных элементов, используя смещения или что-то в этом роде ...
Интересно, как это может отличаться в разных envs? Я также сбросил и перезагрузил данные из prod в свой dev env. Может ли это случиться, если есть одна повторяющаяся запись (кроме поля _id)?

Это происходит только тогда, когда курсор возвращает повторяющиеся документы после 100 попыток. Источник здесь