Details
-
Improvement
-
Resolution: Fixed
-
Minor
-
2.4.0.patch
-
None
Description
PSPNG sometimes logs attribute_value_exists errors and then recovers.
It turns out that the source of these problems is that PSPNG frequently uses java set differencing and often with case-insensitive string comparisons. Unfortunately, Java Set removeAll has optimizations where it loops through the smaller set and uses the other set's comparison semantics. Therefore, removeAll can produce inconsistent results and PSPNG then tries to make ldap modifications that try to add/remove unnecessary values.
See
https://bugs.openjdk.java.net/browse/JDK-6394757
https://bugs.openjdk.java.net/browse/JDK-8180409
Solution: Make both sets comparison operations the same.