Поиск вновь созданного объекта не удается в AD? - PullRequest
0 голосов
/ 18 ноября 2011

У меня есть служба, которая подключается к Active Directory через Spring-LDAP.Когда выполняется вызов для создания нового пользователя, а затем выполняется отдельный вызов для поиска этого пользователя сразу после этого, поиск иногда завершается ошибкой с ошибкой отсутствия объекта.

Похоже, это связано срепликация, так как тот же поиск работает только несколько минут спустя.Обратите внимание, что это два отдельных запроса, и поэтому нельзя гарантировать одно и то же физическое соединение из пула.

Какие у меня есть варианты для решения этой проблемы?Разве AD не достаточно умен, чтобы запрашивать другие серверы, если не может найти локальную копию объекта?

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

Клиенты LDAP никогда не должны добавлять или изменять запись, а затем сразу же читать добавленную или измененную запись из-за возможной модели согласованности репликации (и кто знает, что делает Active Directory). Правильная процедура заключается в добавлении элемента управления после чтения запроса в запрос на добавление или изменение. Подробнее см. LDAP: Практика программирования .

0 голосов
/ 11 декабря 2011

Как отмечалось выше, задержка репликации проблематична для приложений, которые предполагают гарантии согласованности типа записи-затем-чтения.Обычно люди имеют дело с этим одним из нескольких способов: 0) Увеличить скорость репликации.Это "настраивается" вами.Хотя он никогда не достигнет 0, вы можете сделать это за секунды.1) Измените приложение, чтобы сделать запись на детерминированном DC, а затем выполните чтение из того же места.Вы получите согласованность записи-затем-чтения на том же контроллере домена, а чтение с x-DC проблематично.2) Измените приложение, чтобы не делать этого вообще.:)

Очевидно, что вы также можете использовать комбинацию стратегий ...

...