uschindler commented on code in PR #12183:
URL: https://github.com/apache/lucene/pull/12183#discussion_r1324955170
##########
lucene/core/src/java/org/apache/lucene/search/TaskExecutor.java:
##########
@@ -64,4 +68,57 @@ final <T> List<T> invokeAll(Collection<RunnableFuture<T>>
tasks) throws IOExcept
}
return results;
}
+
+ /**
+ * Execute all the tasks provided as an argument concurrently only if it is
a {@link
+ * ThreadPoolExecutor} and the current thread invoking this is not a {@link
ThreadPoolExecutor}
+ * thread, else run all the tasks sequentially, wait for them to complete
and return the obtained
+ * results.
+ *
+ * @param tasks the tasks to execute
+ * @return a list containing the results from the tasks execution
+ * @param <T> the return type of the task execution
+ */
+ public final <T> List<T>
invokeAllWithThreadPoolExecutor(Collection<RunnableFuture<T>> tasks)
+ throws IOException {
+ boolean executeOnCallerThread;
+ long frames;
+ try {
+ frames =
+ StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE)
Review Comment:
This is exactly the problematic option. Retain class reference requires
additional privileges (as it is security relevant).
Please avoid this where possible.
Actually in your code this option is not required, because you only need the
string class name. So remove it.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]