Community
Participate
Working Groups
The various checks done in "installBundle" to ensure the bundle has both a unique location as well as a unique BSN and version end up resulting in an O(n) set op operations. This is problematic when EquinoxBundlesState.composeState makes this call for each bundle. The net result is a n^2 complexity problem. Rather than iterating over each bundle already installed looking for matches we should look at creating the appropriate index in EquinoxBundlesState to reduce the checks in installBundle to a constant time lookup. See: EquinoxBundlesState.installBundle (for loop starting on line 607)
Created attachment 106977 [details] patch This patch adds indexes on the state for location and the bsn/version pair. One thing to note is that the location index is by the "real location" so to ensure a match the location key must be normalized using FileUtils.getRealLocation before performing a lookup.
I've committed to the 3.5 stream to allow further testing.
Marking fixed along with bug 238312