Github user jacques-n commented on a diff in the pull request:
https://github.com/apache/drill/pull/197#discussion_r41816180
--- Diff:
contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/HiveRecordReader.java
---
@@ -223,6 +228,24 @@ private void init() throws ExecutionSetupException {
@Override
public void setup(@SuppressWarnings("unused") OperatorContext context,
OutputMutator output)
throws ExecutionSetupException {
+ final ListenableFuture<Void> result = context.runCallableAs(proxyUgi,
+ new Callable<Void>() {
+ @Override
+ public Void call() throws Exception {
+ init();
+ return null;
+ }
+ });
+ try {
+ result.get();
+ } catch (InterruptedException e) {
+ result.cancel(true);
+ // Preserve evidence that the interruption occurred so that code
higher up on the call stack can learn of the
+ // interruption and respond to it if it wants to.
+ Thread.currentThread().interrupt();
--- End diff --
I don't think you want to set the interrupt bit on the proxy thread, you
probably need throw the interrupted exception in the original context. I also
suggest creating a little inner class rather than an anonymous object for
easier understanding.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---