gortiz commented on code in PR #15312:
URL: https://github.com/apache/pinot/pull/15312#discussion_r2005375692


##########
pinot-query-runtime/src/main/java/org/apache/pinot/query/runtime/QueryRunner.java:
##########
@@ -130,13 +131,14 @@ public class QueryRunner {
   private JoinOverFlowMode _joinOverflowMode;
   @Nullable
   private PhysicalTimeSeriesServerPlanVisitor _timeSeriesPhysicalPlanVisitor;
+  private BooleanSupplier _sendStats;
 
   /**
    * Initializes the query executor.
    * <p>Should be called only once and before calling any other method.
    */
   public void init(PinotConfiguration config, InstanceDataManager 
instanceDataManager, HelixManager helixManager,
-      ServerMetrics serverMetrics, @Nullable TlsConfig tlsConfig) {
+      ServerMetrics serverMetrics, @Nullable TlsConfig tlsConfig, 
BooleanSupplier sendStats) {

Review Comment:
   An engineer (in fact, a mathematician) I respect told me once that his 
primary requirement for a module to be considered _good enough_ is to be able 
to run several instances of it in the same process. Using singletons with state 
goes against that pattern. We need to do it sometimes because we cannot 
refactor Pinot right now.
   
   Could we create an integration test with two servers with a different send 
stats configuration? In the model you propose, we couldn't.
   
   Also, we cannot use SendStatsPredicate directly in pinot-query-runtime 
because it is declared in pinot-server, which depends on pinot-query-runtime. 
We could probably move SendStatsPredicate somewhere else, but finding a place 
where it _can_ be (in technical terms) and _should_ be (in semantic terms) 
doesn't seem trivial.
   
   > Can you think of any strategy to avoid adding this extra parameter in so 
many places?
   
   In Java, we have three options: Using thread locals, dependency injection, 
or context objects containing all required information. None makes much sense 
here, given we would want to change the parameters. If I had to choose one, DI 
would probably be the cleanest, but it would also require more changes in the 
code. In the past, we discussed that, but we thought it was a low priority high 
effort task
   



-- 
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: commits-unsubscr...@pinot.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to