Сегодня один из пользователей нашего сегментированного кластера MongoDB 3.0.12 (ошибочно) выпустил построение индекса переднего плана для своей собственной базы данных (pride_archive_ms), после того как операция завершилась на основном члене каждого набора реплик (сегменте), он были реплицированы во вторичные.
Я ожидал, что база данных, в которой все еще выполняется построение индекса, будет заблокирована для чтения и записи, но на самом деле все чтения / записи баз данных заблокированы при использовании вторичных или secondaryPreferred предпочтение чтения. Любой открытый сеанс просто добавляется. Это ожидаемое поведение? Документы сообщают, что:
Любая операция, которая требует блокировки чтения или записи для всех баз данных (например, listDatabases), будет ждать завершения построения индекса переднего плана.
Но в нашем случае это простая find () для отдельных баз данных из тот, на котором строится индекс.
Кто-нибудь может пролить свет?
Спасибо
Томас Шуберт дал ответ на этот вопрос в:
https://jira.mongodb.org/browse/SERVER-25168
Тем не менее, мне интересно, почему маршрутизатор не обнаруживать заблокированные по чтению вторичные серверы и обслуживать запросы от первичного, когда указано предпочтение чтения secondaryPreferred
.