Notice that class path scanning only occurs when the following evaluates to
true:
if (builtInPlugins.isEmpty()) {
We encourage the value of this to always be false. I think it would be good to
log an info message indicating that package scanning is taking place and the
application should be corrected.
Ralph
> On Mar 8, 2021, at 2:06 PM, Volkan Yazıcı <[email protected]> wrote:
>
> PluginManager#collectPlugins() performs quite some package scanning
> sequentially. I have the impression that this operation can simply be
> parallelized as follows:
>
> Stream
> .of(inputs)
> .flatMap(input -> Stream
> .of(ops)
> .map(op -> new Object[]{op, input}))
> .parallel()
> .map(opAndInput -> {
> final Function<Input, Output> op = opAndInput[0];
> final Input input = opAndInput[1];
> return op.accept(input);
> })
> .reduce(this::merge);
>
> Here input denotes the packages and ops denote the independent sequential
> steps performed in collectPlugins(). I don't know about the overhead of
> this call, but the above simple effort might be worth a shot. What do you
> think?