Github user ilooner commented on a diff in the pull request:
https://github.com/apache/drill/pull/1208#discussion_r181858695
--- Diff:
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/partitionsender/PartitionerDecorator.java
---
@@ -118,105 +127,114 @@ public PartitionOutgoingBatch
getOutgoingBatches(int index) {
return null;
}
- @VisibleForTesting
- protected List<Partitioner> getPartitioners() {
+ List<Partitioner> getPartitioners() {
return partitioners;
}
/**
* Helper to execute the different methods wrapped into same logic
* @param iface
- * @throws IOException
+ * @throws ExecutionException
*/
- protected void executeMethodLogic(final GeneralExecuteIface iface)
throws IOException {
- if (partitioners.size() == 1 ) {
- // no need for threads
- final OperatorStats localStatsSingle =
partitioners.get(0).getStats();
- localStatsSingle.clear();
- localStatsSingle.startProcessing();
+ @VisibleForTesting
+ void executeMethodLogic(final GeneralExecuteIface iface) throws
ExecutionException {
+ // To simulate interruption of main fragment thread and interrupting
the partition threads, create a
+ // CountDownInject latch. Partitioner threads await on the latch and
main fragment thread counts down or
+ // interrupts waiting threads. This makes sure that we are actually
interrupting the blocked partitioner threads.
+ try (CountDownLatchInjection testCountDownLatch =
injector.getLatch(context.getExecutionControls(), "partitioner-sender-latch")) {
--- End diff --
I'm not sure that we should be using the injector to create a count down
latch here. My understanding is that we have to define a
`partitioner-sender-latch` injection site on the
`"drill.exec.testing.controls"` property and it is intended only for testing.
See ControlsInjectionUtil.createLatch(). The default value for
`drill.exec.testing.controls` is empty so the getLatch method would return a
Noop latch since `partitioner-sender-latch` is undefined. Since we always want
to create a count down latch here (not just for testing) shouldn't we directly
create one?
---