Я думаю, что один из моих клиентов LDAP достиг предела нумерации страниц в OpenLDAP. Конкретная ошибка, которую видит клиент, - это следующая вещь Java:
REASON: Caught exception running LDAP sync.
[LDAP: error code 2 - paged results cookie is invalid];
nested exception is javax.naming.CommunicationException:
[LDAP: error code 2 - paged results cookie is invalid];
remaining name 'dc=example,dc=com'
Поиск в Google для этой ошибки вызвал обсуждение разбивки на страницы LDAP и соответствующих ограничений. Этот документ о Ограничения OpenLDAP упоминает olcSizeLimit
и size.pr
.
Я смог изменить свой olcSizeLimit с 500 на -1, используя этот ldif:
dn: cn=config
changetype: modify
replace: olcSizeLimit
olcSizeLimit: -1
К сожалению, мой клиент все еще сталкивается с проблемой разбивки на страницы.
size.pr
- это параметр slapd.conf, тогда как мой OpenLDAP использует вместо него slapd.d. После поиска в схеме LDAP я обнаружил olcDbClientPr
который описывается как 'PagedResults handling'
. Кроме того, вот как это описано в Исходный код OpenLDAP:
{ "client-pr", "accept-unsolicited|disable|<size>", 2, 2, 0,
ARG_MAGIC|LDAP_BACK_CFG_CLIENT_PR,
meta_back_cf_gen, "( OLcfgDbAt:3.111 "
"NAME 'olcDbClientPr' "
"DESC 'PagedResults handling' "
"SYNTAX OMsDirectoryString "
"SINGLE-VALUE )",
NULL, NULL },
Если предположить, что olcDbClientPr - это то же самое, что и size.pr, как мне его установить?
Я пробовал это:
dn: cn=config
changetype: modify
replace: olcDbClientPr
olcDbClientPr: -1
Это вызывает эту ошибку:
modifying entry "cn=config"
ldap_modify: Object class violation (65)
additional info: attribute 'olcDbClientPr' not allowed
Если это актуально, вот содержимое моего cn=config
каталог:
# ls /etc/openldap/slapd.d/cn=config/
cn=module{0}.ldif olcDatabase={0}config.ldif olcDatabase={1}hdb.ldif
cn=schema olcDatabase={-1}frontend.ldif olcDatabase={1}monitor.ldif
cn=schema.ldif olcDatabase={1}hdb
size.pr
является для каждой базы данных (и dn / group scopable), olcLimits
вариант. Вас также могут заинтересовать глобальные olcSizeLimit
вариант.
Из slapd-config(5)
:
olcSizeLimit: size [. {soft | hard | unchecked}] = [...]
Укажите максимальное количество записей, которые нужно вернуть из операции поиска. Максимальный размер по умолчанию - 500. Используйте unlimited, чтобы указать никаких ограничений. Второй формат позволяет точно устанавливать пределы размера. Дополнительные аргументы могут быть добавлены в то же значение или как дополнительные значения. См. OlcLimits для объяснения различных флагов.
olcDbClientPr
является не такой же как size.pr
.