問題
LPS-98420の後、実際のLDAPインポートトリガー時間とインスタンス設定で設定したインポートインターバルが不一致になる場合があります。
以下に例を示します。
- システム設定 -> LDAP -> インポート間隔」を「2」に設定します。
- インスタンス設定 -> LDAP -> インポート間隔」を「3」に設定します。
期待される結果インポートトリガー時間は3分です。
実際の結果です:実際のインポートトリガー時間は4分です。
理由
LDAPインポート間隔」の設定は、 システム設定 レベルと インスタンス設定 レベルの両方に存在します。
システム設定 レベルの「LDAP インポート間隔」は、 LPS-98420の後、トリガータイマーと見なされます。 LDAPインポートをトリガーする代わりに、 システム設定 レベルの「LDAPインポート間隔」を使用して、 インポート予定のインスタンスがあるかどうかのチェック をトリガーすることができます。
インスタンス設定 レベルの「LDAP インポート間隔」は、本当のインポートトリガー間隔と考えることができます。 ただし、 Instance Settings の「LDAP Import Interval」と、 System Settings の「Interval」を合わせて考慮し、実際のLDAP Import時間を決定する必要があります。
この例のように、 システム設定 LDAPインポート間隔が2分の場合、2分ごとに、 LDAPインポートを有効にしているインスタンスで、再度インポートする予定のものがあるかどうかを確認することを意味します。 LDAP が有効で、デフォルトの Liferay Instance Settingsでインポート間隔が 3 分になっているとします。 ユーザーは、LDAPインポートが3分ごとに発生することを期待しているかもしれません(インスタンス設定で設定されています)。
しかし、 LPS-98420の変更により、このシナリオでは、Liferayは2分ごとに別のインポート予定のインスタンスがあるかどうかをチェックしますが、「最後のインポート時間」(インスタンス設定レベル)を3分ごとに過ぎて行われるように設定されているため、インポートは行われないことになりました。 インスタンスは3分後にインポートできる状態になっていますが、自らトリガーをかけることができないため、スケジューラーを待つ必要があります。 したがって、実際のインポートは次のトリガーチェックまで行われないため、2回目のトリガーでの実際のLDAPインポート時間は、4分となります。
解決策
シングルインスタンス バンドルでは、システムとインスタンスの設定の間隔値を一致させるのが最善で、インポートは必要な時に正確にトリガーされ実行されます。 マルチインスタンス バンドルでは、特に LDAP インポート間隔が異なる必要がある場合、システム間隔をインスタンスの最小公倍数として設定するのが最善です。
インスタンスAの間隔が20分、インスタンスBの間隔が30分という2インスタンスバンドルを例にとると、インスタンスBは、インスタンスAが20分、インスタンスBが30分となります。 Systemの間隔を10分に設定したいところですが、これは2つのうち最も公約数の少ないものです。 LDAPインポーターは、10分(インポートなし)、20分(インスタンスA)、30分(インスタンスB)、といった具合にトリガーします。 これにより、両方のインスタンスが指定された時間にインポートを実行するようになります。