Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.8.1
-
None
-
Fixed incorrect processing of non-comparable keys in spring-data for repository methods: findAllById(ids) and deleteAllById(ids).
-
Release Notes Required
Description
/** {@inheritDoc} */ @Override public void deleteAllById(Iterable<ID> ids) { if (ids instanceof Set) cache.removeAll((Set<ID>)ids); if (ids instanceof Collection) cache.removeAll(new HashSet<>((Collection<ID>)ids)); TreeSet<ID> keys = new TreeSet<>(); for (ID id : ids) keys.add(id); cache.removeAll(keys); }
As you can see cache.removeAll may be executed THREE times in some situations.
Also this method can throw ClassCast exception if ids collection contains objects that are not implement Comparable interface.
Attachments
Issue Links
- links to