1

LDAP ライブラリを使用して OpenLDAP サーバーに非常に多数のグループを追加するために使用している python (2.7.4) スクリプトがあります。ほとんどのグループについて、問題なく追加できます。ただし、グループのサブセットについては、ログに次のように表示されます。

    09-17 23:35|ERROR|13213|ldapcmd|add|{'info': 'index generation failed', 'desc': 'Internal (implementation specific) error'}
    Traceback (most recent call last):
      File "/export/home/somedir/lib/somedir/db/ldapcmd.py", line 308, in add
        self._RESULTS = self.__conn.add_s(dn, ldif)
      File "/usr/local/lib/python2.7/site-packages/python_ldap-2.3.9-py2.7-linux-x86_64.egg/ldap/ldapobject.py", line 186, in add_s
        return self.result(msgid,all=1,timeout=self.timeout)
      File "/usr/local/lib/python2.7/site-packages/python_ldap-2.3.9-py2.7-linux-x86_64.egg/ldap/ldapobject.py", line 428, in result
        res_type,res_data,res_msgid = self.result2(msgid,all,timeout)
      File "/usr/local/lib/python2.7/site-packages/python_ldap-2.3.9-py2.7-linux-x86_64.egg/ldap/ldapobject.py", line 432, in result2
        res_type, res_data, res_msgid, srv_ctrls = self.result3(msgid,all,timeout)
      File "/usr/local/lib/python2.7/site-packages/python_ldap-2.3.9-py2.7-linux-x86_64.egg/ldap/ldapobject.py", line 438, in result3
        ldap_result = self._ldap_call(self._l.result3,msgid,all,timeout)
      File "/usr/local/lib/python2.7/site-packages/python_ldap-2.3.9-py2.7-linux-x86_64.egg/ldap/ldapobject.py", line 96, in _ldap_call
        result = func(*args,**kwargs)
    OTHER: {'info': 'index generation failed', 'desc': 'Internal (implementation specific) error'}
    09-17 23:35|ERROR|13213|googleGroupsToLdap|<module>|Internal Ldap - Add FAILED: somegroup@somehiddendomain.com
    Traceback (most recent call last):
      File "../bin/somescript", line 707, in <module>
        INTLDAP.add(dn=DN, attributes=LDAPENTRY)
      File "/export/home/somedir/lib/somedir/db/ldapcmd.py", line 313, in add
        raise DatabaseError(e)
    DatabaseError: OTHER({'info': 'index generation failed', 'desc': 'Internal (implementation specific) error'},)

以前にこのエラーを見た人はいますか?さらに重要なことに、修正方法を知っている人はいますか?

LDAP サーバーでログを有効にする必要がある場合、適切なログ レベルはどのようなものでしょうか?

------------ 午後 3 時 25 分更新 -------------

ロギングを有効にしたところ、ロック テーブルで使用可能なロックが不足しているためにエラーが発生したことがわかりました。この問題を解決するために、以下が DB_CONFIG に追加されました。

    set_lk_max_objects 15000
    set_lk_max_lockers 5000
    set_lk_max_locks 15000

上記を追加した後、slapd をシャットダウンします (または、かなり良くないことが起こるでしょう...)。新しい値を環境にプッシュするには、DB を回復する必要があります。それを行うには、実行しますsudo -u ldap /usr/sbin/slapd_db_recover -h <directory> -v

通過する必要があるログ ファイルの数によっては、かなり速く終了するはずです。その時点で slapd を再起動します。

コマンドを実行して、変更が行われたかどうかを確認できます slapd_db_stat -c 。次のように表示されるはずです (ここでは多くの行が削除されています...)---

    15000   Maximum number of locks possible
    5000    Maximum number of lockers possible
    15000   Maximum number of lock objects possible
4

0 に答える 0