leventov opened a new issue #9482: An ExecutorService must not be created for each KerberosHttpClient; Don't assign ExecutorService into variable of Executor type URL: https://github.com/apache/druid/issues/9482 Similarly to #9286, we should catch assignments of `ExecutorService` (within type hierarchy) into variables of `Executor` type. Two Structural search patterns are needed: - "Java" pattern: `$x$ = $y$;`, where the Type of `$x$` is `Executor` and the Type of `$y$` is `ExecutorService`. - "Java - Class Member" pattern: `$Type$ $x$ = $y$;`, where the Text of `$Type$` is `Executor` and the Type of `$y$` is `ExecutorService`. (BTW, there is only "Java" pattern suggested in #9286 and added in #9325; a similar "Java - Class Member" pattern should be added for `ExecutorService` - `ScheduledExecutorService` pair, too.) This is needed because [`ExecutorService` instances must be shut down explicitly](https://github.com/code-review-checklists/java-concurrency#explicit-shutdown) and `Executor` doesn't allow for this. Incidentally, the sole violation of this rule in Druid code, in `KerberosHttpClient`: https://github.com/apache/druid/blob/a6776648112917b72c077ba3ac0cb7f61993a2d0/extensions-core/druid-kerberos/src/main/java/org/apache/druid/security/kerberos/KerberosHttpClient.java#L44-L54 Is actually an instance of another Java concurrency problem: [an `ExecutorService` must not be created for each instance of a short-lived object](https://github.com/code-review-checklists/java-concurrency#reuse-threads) like `KerberosHttpClient`. So the `exec` in `KerberosHttpClient` should properly made static, or cached on the DI level as a `@Named` `ExecutorService`.
---------------------------------------------------------------- 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. For queries about this service, please contact Infrastructure at: [email protected] With regards, Apache Git Services --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
