Я получаю дубликаты _ids при вставке документов в нашу базу данных mongo. Это периодически возникающая проблема, которая возникает только при некоторой нагрузке (воспроизводится с помощью некоторых тестовых сценариев).
Вот некоторый тестовый код, поэтому вы не думаете, что я пытаюсь дважды вставить один и тот же объект (я знаю, что драйвер PHP mongo добавляет поле _id):
// Insert a job
$job = array(
'type' => 'cleanup',
'meta' => 'cleaning the data',
'user_id' => new MongoId($user_id),
'created' => time(),
'status' => 'pending'
);
$this->db->job->insert($job, array('safe' => true)); // <-- failz here
Я пришел в бешенство и установил последний стабильный (1.1.4) драйвер Монго, но безрезультатно. Это не под большой нагрузкой. Возможно, мы выполняем 5 запросов в секунду на одном сервере, поэтому ограничение в 16 миллионов записей в секунду для значения inc, вероятно, не является проблемой.
Любые идеи будут с благодарностью. Я надеюсь, что кто-то где-то использовал mongo с PHP и вставил более 5 документов в секунду и имел эту проблему;).
-EDIT-
На CentOS 5.4 x86_64, linux 2.6.18-164.el5xen, Apache рабочий 2.2.15, PHP 5.2.13, MongoDB 1.8.1
-EDIT2-
Как отмечено в комментариях, я использую последнюю версию драйвера PECL на данный момент (1.2.0), и проблема все еще происходит.
-EDIT3-
Забыл опубликовать точную ошибку:
Uncaught exception 'MongoCursorException' with message 'E11000 duplicate key error index: hannibal.job.$_id_ dup key