amansinha100 commented on a change in pull request #1776: DRILL-7223: Create an 
option to control timeout for REFRESH METADATA
URL: https://github.com/apache/drill/pull/1776#discussion_r280268645
 
 

 ##########
 File path: 
exec/java-exec/src/main/java/org/apache/drill/exec/store/TimedCallable.java
 ##########
 @@ -188,6 +187,23 @@ private long getExecutionTime(TimeUnit unit) {
     return unit.convert(executionTime, TimeUnit.NANOSECONDS);
   }
 
+  /**
+   * Execute the list of runnables with the given parallelization.  At end, 
return values and report completion time
+   * stats to provided logger. Each runnable is allowed a certain timeout. If 
the timeout exceeds, existing/pending
+   * tasks will be cancelled and a {@link UserException} is thrown.
+   * @param activity Name of activity for reporting in logger.
+   * @param logger The logger to use to report results.
+   * @param tasks List of callable that should be executed and timed.  If this 
list has one item, task will be
+   *                  completed in-thread. Each callable must handle {@link 
InterruptedException}s.
+   * @param parallelism  The number of threads that should be run to complete 
this task.
+   * @param timeout if bigger than zero, set the timeout per runnable (in msec)
+   * @return The list of outcome objects.
+   * @throws IOException All exceptions are coerced to IOException since this 
was build for storage system tasks initially.
+   */
+  public static <V> List<V> run(final String activity, final Logger logger, 
final List<TimedCallable<V>> tasks, int parallelism, long timeout) throws 
IOException {
+    TIMEOUT_PER_RUNNABLE_IN_MSECS = timeout;
 
 Review comment:
   By convention we treat these as static final constants (although I see that 
the `final` is missing).  Also assigning to this static variable is not thread 
safe. Actually, now that this is a config option, why do we need a static 
constant ?  Why not just pass it as a parameter wherever needed including 
passing it to the constructor of classes that are extending the abstract class 
and then we can set the timeout as a local class variable ?

----------------------------------------------------------------
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

Reply via email to