Назад | Перейти на главную страницу

Построение индекса переднего плана MongoDB блокирует вторичное чтение для всех баз данных

Сегодня один из пользователей нашего сегментированного кластера MongoDB 3.0.12 (ошибочно) выпустил сборку индекса переднего плана в своей собственной базе данных (pride_archive_ms), после того, как операция завершилась на основном члене каждого набора реплик (сегменте), он был реплицирован на вторичные.

Я ожидал, что база данных, в которой все еще выполняется построение индекса, будет заблокирована для чтения и записи, но на самом деле все чтение / запись баз данных блокируются при использовании вторичного или вторичного предпочтения чтения. Любой открытый сеанс просто добавляется. Это ожидаемое поведение? Документы сообщают, что:

Любая операция, которая требует блокировки чтения или записи во всех базах данных (например, listDatabases), будет ждать завершения построения индекса переднего плана.

Но в нашем случае это простая функция find () для баз данных, отличных от той, на которой строится индекс.

Может ли кто-нибудь пролить свет?

Спасибо

Томас Шуберт дал ответ на этот вопрос в:

https://jira.mongodb.org/browse/SERVER-25168

Тем не менее, мне интересно, почему маршрутизатор не обнаруживает вторичные серверы с блокировкой чтения и не обслуживает запросы от первичного, когда secondaryPreferred указано предпочтение чтения.