Fix performance degradation in ignite streaming endpoint #516
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
#495 had unfortunately introduced a bug1 in affinitycall's stream implementation which caused the backend to always use the slow fallback path (i.e.
.collect().stream()
). This is particularily slow for medium to large bounding boxes, as it will not use the preflight optimizations implemented forstream
.For example, this has the effect that with this version all ohsome-api data extractions are very slow.
Checklist
I have made corresponding changes to the documentationI have adjusted the examples or created an issue in the corresponding repositoryI have adjusted the benchmark or created an issue in the corresponding repositoryFootnotes
the concrete problem being that
stream.toList()
returns an immutable list which cannot be shuffled in the following code line, while the previously usedstream.collect(Collectors.toList())
does return a mutable list (even though it does not guarantee the mutability of it, btw). ↩