This is an automated email from the ASF dual-hosted git repository.

arina pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/drill.git


The following commit(s) were added to refs/heads/master by this push:
     new 1288e71  DRILL-7543: Use GitHub Actions for CI
1288e71 is described below

commit 1288e71a756ed409b5eaa6af48b27a320513e043
Author: Volodymyr Vysotskyi <vvo...@gmail.com>
AuthorDate: Tue Feb 4 13:39:21 2020 +0200

    DRILL-7543: Use GitHub Actions for CI
---
 .circleci/config.yml                               | 230 ---------------------
 .github/workflows/ci.yml                           | 103 +++++++++
 .travis.yml                                        |  69 -------
 README.md                                          |   2 +-
 contrib/pom.xml                                    |   8 -
 docs/dev/LicenseHeaders.md                         |   2 +-
 docs/dev/Testing.md                                |   8 -
 drill-yarn/pom.xml                                 |   8 -
 .../drill/exec/compile/DrillJavaFileManager.java   |  15 +-
 .../drill/exec/compile/JDKClassCompiler.java       |  40 ++--
 exec/jdbc-all/pom.xml                              |   6 -
 exec/jdbc/pom.xml                                  |   6 -
 12 files changed, 134 insertions(+), 363 deletions(-)

diff --git a/.circleci/config.yml b/.circleci/config.yml
deleted file mode 100644
index 71d424f..0000000
--- a/.circleci/config.yml
+++ /dev/null
@@ -1,230 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-version: 2
-general:
-jobs:
-  build_jdk8:
-    machine:
-      enabled: true
-      image: circleci/classic:latest
-    parallelism: 1 # TODO: 1. Configuring Parallel Jobs for Running Tests 
https://circleci.com/docs/2.0/parallelism-faster-jobs/
-
-    working_directory: ~/drill
-
-    steps:
-      - checkout
-      - restore_cache:
-          keys:
-            - m2-{{ checksum "pom.xml" }}
-            - m2- # used if checksum fails
-      - run:
-          name: Update maven version
-          # TODO: Could be removed, once Machine Executor image is updated 
https://github.com/circleci/image-builder/issues/140
-          # and the possibility of specifying Maven version is added 
https://github.com/circleci/image-builder/issues/143
-          command:
-            curl -fsSL https://git.io/vpDIf | bash -s -- 3.6.3
-      - run:
-          name: Update packages list
-          command:
-            sudo apt-get update
-      - run:
-          name: Install libaio1.so library for MySQL integration tests
-          command:
-            sudo apt-get install libaio1 libaio-dev
-      - run:
-          name: Drill project build
-          # TODO: 2. Optimizing Maven Builds on CircleCI - 
https://circleci.com/blog/optimizing-maven-builds-on-circleci/
-          # TODO: 3. Resolving memory issues without "SlowTest" and 
"UnlikelyTest" excludedGroups in the build
-          command: >
-            mvn install -Drat.skip=false -Dlicense.skip=false -DmemoryMb=2560 
-DdirectMemoryMb=4608
-            
-DexcludedGroups="org.apache.drill.categories.SlowTest,org.apache.drill.categories.UnlikelyTest"
 --batch-mode
-      - run:
-          name: Save test results
-          command: |
-            mkdir -p ~/test-results/junit/
-            find . -type f -regex ".*/target/surefire-reports/.*xml" -exec cp 
{} ~/test-results/junit/ \;
-          when: always
-      - store_test_results:
-          path: ~/test-results
-      - save_cache:
-          paths:
-            - ~/.m2
-          key: m2-{{ checksum "pom.xml" }}
-
-  build_jdk11:
-    machine:
-      enabled: true
-      image: circleci/classic:latest
-    parallelism: 1
-
-    working_directory: ~/drill
-
-    steps:
-      - checkout
-      - restore_cache:
-          keys:
-            - m2-{{ checksum "pom.xml" }}
-            - m2- # used if checksum fails
-      - run:
-          name: Update packages list
-          command:
-            sudo apt-get update
-      - run:
-          name: Install java 11
-          command:
-            sudo apt-get -y install openjdk-11-jdk
-      - run:
-          name: Set default java 11
-          command:
-            sudo update-java-alternatives --set java-1.11.0-openjdk-amd64
-      - run:
-          name: Update maven version
-          command:
-            curl -fsSL https://git.io/vpDIf | bash -s -- 3.6.3
-      - run:
-          name: Install libaio1.so library for MySQL integration tests
-          command:
-            sudo apt-get install libaio1 libaio-dev
-      - run:
-          name: Drill project build
-          command: >
-            mvn install -Drat.skip=false -Dlicense.skip=false -DmemoryMb=2560 
-DdirectMemoryMb=4608
-            
-DexcludedGroups="org.apache.drill.categories.SlowTest,org.apache.drill.categories.UnlikelyTest"
 --batch-mode
-      - run:
-          name: Save test results
-          command: |
-            mkdir -p ~/test-results/junit/
-            find . -type f -regex ".*/target/surefire-reports/.*xml" -exec cp 
{} ~/test-results/junit/ \;
-          when: always
-      - store_test_results:
-          path: ~/test-results
-      - save_cache:
-          paths:
-            - ~/.m2
-          key: m2-{{ checksum "pom.xml" }}
-
-  build_jdk12:
-    machine:
-      enabled: true
-      image: circleci/classic:latest
-    parallelism: 1
-
-    working_directory: ~/drill
-
-    steps:
-      - checkout
-      - restore_cache:
-          keys:
-            - m2-{{ checksum "pom.xml" }}
-            - m2- # used if checksum fails
-      - run:
-          name: Update packages list
-          command:
-            sudo apt-get update
-      - run:
-          name: Install java 12
-          command:
-            sudo apt-get -y install openjdk-12-jdk
-      - run:
-          name: Set default java 12
-          command:
-            sudo update-java-alternatives --set java-1.12.0-openjdk-amd64
-      - run:
-          name: Update maven version
-          command:
-            curl -fsSL https://git.io/vpDIf | bash -s -- 3.6.3
-      - run:
-          name: Install libaio1.so library for MySQL integration tests
-          command:
-            sudo apt-get install libaio1 libaio-dev
-      - run:
-          name: Drill project build
-          command: >
-            mvn install -Drat.skip=false -Dlicense.skip=false -DmemoryMb=2560 
-DdirectMemoryMb=4608
-            
-DexcludedGroups="org.apache.drill.categories.SlowTest,org.apache.drill.categories.UnlikelyTest"
 --batch-mode
-      - run:
-          name: Save test results
-          command: |
-            mkdir -p ~/test-results/junit/
-            find . -type f -regex ".*/target/surefire-reports/.*xml" -exec cp 
{} ~/test-results/junit/ \;
-          when: always
-      - store_test_results:
-          path: ~/test-results
-      - save_cache:
-          paths:
-            - ~/.m2
-          key: m2-{{ checksum "pom.xml" }}
-
-  build_jdk13:
-    machine:
-      enabled: true
-      image: circleci/classic:latest
-    parallelism: 1
-
-    working_directory: ~/drill
-
-    steps:
-      - checkout
-      - restore_cache:
-          keys:
-            - m2-{{ checksum "pom.xml" }}
-            - m2- # used if checksum fails
-      - run:
-          name: Update packages list
-          command:
-            sudo apt-get update
-      - run:
-          name: Install java 13
-          command:
-            sudo apt-get -y install openjdk-13-jdk
-      - run:
-          name: Set default java 13
-          command:
-            sudo update-java-alternatives --set java-1.13.0-openjdk-amd64
-      - run:
-          name: Update maven version
-          command:
-            curl -fsSL https://git.io/vpDIf | bash -s -- 3.6.3
-      - run:
-          name: Install libaio1.so library for MySQL integration tests
-          command:
-            sudo apt-get install libaio1 libaio-dev
-      - run:
-          name: Drill project build
-          command: >
-            mvn install -Drat.skip=false -Dlicense.skip=false -DmemoryMb=2560 
-DdirectMemoryMb=4608
-            
-DexcludedGroups="org.apache.drill.categories.SlowTest,org.apache.drill.categories.UnlikelyTest"
 --batch-mode
-      - run:
-          name: Save test results
-          command: |
-            mkdir -p ~/test-results/junit/
-            find . -type f -regex ".*/target/surefire-reports/.*xml" -exec cp 
{} ~/test-results/junit/ \;
-          when: always
-      - store_test_results:
-          path: ~/test-results
-      - save_cache:
-          paths:
-            - ~/.m2
-          key: m2-{{ checksum "pom.xml" }}
-
-workflows:
-  version: 2
-  build_and_test:
-    jobs:
-      - build_jdk8
-      - build_jdk11
-      - build_jdk12
-      - build_jdk13
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..a6bea1b
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,103 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# This workflow is triggered for each push event to the master branch or pull 
request.
+# It contains two jobs:
+# - "Main Build" job runs all unit tests jor two LTS java versions and the 
latest Java version.
+# - "Run checkstyle and generate protobufs" job builds Drill and checks its 
license,
+# builds Drill native client and regenerates protobufs to ensure that 
committed files are up-to-date.
+name: Github CI
+
+on: [push, pull_request]
+
+jobs:
+  build:
+    name: Main Build
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        # Java versions to run unit tests
+        java: [ '1.8', '11', '13' ]
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v2
+      # Caches maven cache and uses hashes of pom.xml files to find the 
required cache
+      - name: Cache Maven Repository
+        uses: actions/cache@v1
+        with:
+          path: ~/.m2/repository
+          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+              ${{ runner.os }}-maven-
+      - name: Set up JDK ${{ matrix.java }}
+        uses: actions/setup-java@v1
+        with:
+          java-version: ${{ matrix.java }}
+      - name: Build and test
+        run: mvn install
+
+  checkstyle_protobuf:
+    name: Run checkstyle and generate protobufs
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v2
+      - name: Cache Maven Repository
+        uses: actions/cache@v1
+        with:
+          path: ~/.m2/repository
+          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+            ${{ runner.os }}-maven-
+      # Caches built protobuf library
+      - name: Cache protobufs
+        uses: actions/cache@v1
+        with:
+          path: ~/protobuf
+          key: ${{ runner.os }}-protobuf
+      # Install libraries required for protobuf generation
+      - name: Install dependencies
+        run: |
+          sudo apt-get install -y libboost-all-dev libzookeeper-mt-dev 
libsasl2-dev cmake libcppunit-dev checkinstall && \
+          pushd .. && \
+          if [ -f $HOME/protobuf/protobuf_3.6.1* ]; then \
+            sudo dpkg -i $HOME/protobuf/protobuf_3.6.1*; \
+          else \
+            wget 
https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-java-3.6.1.zip
 && \
+            unzip protobuf-java-3.6.1.zip && pushd protobuf-3.6.1 && \
+            ./configure && sudo make && sudo checkinstall -y && \
+            if [ ! -d $HOME/protobuf ]; then \
+              mkdir -p $HOME/protobuf; \
+            fi && \
+            mv protobuf_3.6.1* $HOME/protobuf/ && popd; \
+          fi && \
+          sudo ldconfig && popd; \
+      # Builds Drill project, performs license checkstyle goal and regenerates 
java and C++ protobuf files
+      - name: Build
+        run: |
+          MAVEN_OPTS="-Xms1G -Xmx1G" mvn install -Drat.skip=false 
-Dlicense.skip=false --batch-mode 
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
 -DskipTests=true -Dmaven.javadoc.skip=true -Dmaven.source.skip=true && \
+          pushd protocol && mvn process-sources -P proto-compile && popd && \
+          mkdir contrib/native/client/build && pushd 
contrib/native/client/build && cmake -G "Unix Makefiles" .. && make cpProtobufs 
&& popd; \
+      # Checks whether project files weren't changed after regenerating 
protobufs
+      - name: Check protobufs
+        run: |
+          if [ "$(git status -s | grep -c "")" -gt 0 ]; then \
+            echo "The following changes are found in files after regenerating 
protobufs (output may be used as a patchto apply):" >&2 &&
+            echo "$(git diff --color)" && \
+            exit 1; \
+          else
+            echo "All checks are passed!";
+          fi
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index b8db94d..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,69 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-matrix:
-  fast_finish: true
-  include:
-    - env: PHASE=tests
-    - env: PHASE=build_checkstyle_protobuf
-sudo: required
-language: java
-jdk:
-  - openjdk8
-cache:
-  directories:
-  - "$HOME/.m2"
-  - "$HOME/protobuf"
-before_install:
-  - git fetch --unshallow
-  # Install libraries required for protobuf generation
-  - |
-    if [ $PHASE = "build_checkstyle_protobuf" ]; then \
-      sudo apt-get install -y libboost-all-dev libzookeeper-mt-dev 
libsasl2-dev cmake libcppunit-dev checkinstall && \
-      pushd .. && \
-      if [ -f $HOME/protobuf/protobuf_3.6.1* ]; then \
-        sudo dpkg -i $HOME/protobuf/protobuf_3.6.1*; \
-      else \
-        wget 
https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-java-3.6.1.zip
 && \
-        unzip protobuf-java-3.6.1.zip && pushd protobuf-3.6.1 && \
-        ./configure && sudo make && sudo checkinstall -y && \
-        if [ ! -d $HOME/protobuf ]; then \
-          mkdir -p $HOME/protobuf; \
-        fi && \
-        mv protobuf_3.6.1* $HOME/protobuf/ && popd; \
-      fi && \
-      sudo ldconfig && popd; \
-    fi
-install:
-  # For tests phase runs unit tests
-  # For protobuf phase: builds Drill project, performs license checkstyle goal 
and regenerates Java and C++ Protobuf files
-  - |
-    if [ $PHASE = "tests" ]; then \
-      mvn install --batch-mode 
-DexcludedGroups="org.apache.drill.categories.SlowTest,org.apache.drill.categories.UnlikelyTest,org.apache.drill.categories.SecurityTest"
 -DforkCount=1 -DmemoryMb=2560 -DdirectMemoryMb=4608 -Ptravis; \
-    elif [ $PHASE = "build_checkstyle_protobuf" ]; then \
-      MAVEN_OPTS="-Xms1G -Xmx1G" mvn install -Drat.skip=false 
-Dlicense.skip=false --batch-mode 
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
 -DskipTests=true -Dmaven.javadoc.skip=true -Dmaven.source.skip=true && \
-      pushd protocol && mvn process-sources -P proto-compile && popd && \
-      mkdir contrib/native/client/build && pushd contrib/native/client/build 
&& cmake -G "Unix Makefiles" .. && make cpProtobufs && popd; \
-    fi
-script:
-  # Checks whether project files weren't changed after regenerating protobufs
-  - |
-    if [ "$(git status -s | grep -c "")" -gt 0 ]; then \
-      echo "The following changes are found in files after regenerating 
protobufs (output may be used as a patch to apply):" >&2 &&
-      echo "$(git diff --color)" && \
-      exit 1; \
-    else
-      echo "All checks are passed!";
-    fi
diff --git a/README.md b/README.md
index 32ab540..a0bdc12 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
 # Apache Drill
 
-[![Build 
Status](https://travis-ci.org/apache/drill.svg?branch=master)](https://travis-ci.org/apache/drill)
+[![Build 
Status](https://github.com/apache/drill/workflows/Github%20CI/badge.svg)](https://github.com/apache/drill/actions)
 
[![Artifact](https://img.shields.io/maven-central/v/org.apache.drill/distribution.svg)](https://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.apache.drill%22%20AND%20a%3A%22distribution%22)
 
[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](http://www.apache.org/licenses/LICENSE-2.0)
 
diff --git a/contrib/pom.xml b/contrib/pom.xml
index 2478cf3..6c2bb89 100644
--- a/contrib/pom.xml
+++ b/contrib/pom.xml
@@ -56,12 +56,4 @@
     <module>udfs</module>
   </modules>
 
-  <profiles>
-    <profile>
-      <id>travis</id>
-      <properties>
-        <skipTests>true</skipTests>
-      </properties>
-    </profile>
-  </profiles>
 </project>
diff --git a/docs/dev/LicenseHeaders.md b/docs/dev/LicenseHeaders.md
index 21634ed..b39306f 100644
--- a/docs/dev/LicenseHeaders.md
+++ b/docs/dev/LicenseHeaders.md
@@ -15,7 +15,7 @@ allows us to inforce requiring all license headers to be 
wrapped only in `/*` an
 
 ## Doing License Checks
 
-The license checks are disabled locally by default and are enabled on Travis. 
If you'd like to perform
+The license checks are disabled locally by default and are enabled on Github 
Actions. If you'd like to perform
 license checks locally you can do the following:
 
 ```
diff --git a/docs/dev/Testing.md b/docs/dev/Testing.md
index 148c7b1..fcbdb14 100644
--- a/docs/dev/Testing.md
+++ b/docs/dev/Testing.md
@@ -66,14 +66,6 @@ On the other hand, if the test is more of a SQL or 
planner-level concept, then t
 
 ## Categories
 
-Currently Drill uses Travis to run smoke tests for every PR and commit. All of 
Drill's unit tests cannot be run on Travis because Drill's tests take longer to 
run than the
-maximum allowed container time for the free tier of Travis. In order to decide 
which tests are run on Travis and which tests are not, tests are categorized 
using JUnit's
-`@Category` annotation. Currently the following categories are excluded from 
Travis:
-
-  - **SlowTest:** Tests that are slow.
-  - **UnlikelyTest:** Tests that cover parts of the code that are rarely or 
never touched.
-  - **SecurityTest:** Corner case tests for security features.
-  
 To mark a test with a category you can do the following:
 
 ```
diff --git a/drill-yarn/pom.xml b/drill-yarn/pom.xml
index c9ab97b..0120402 100644
--- a/drill-yarn/pom.xml
+++ b/drill-yarn/pom.xml
@@ -135,12 +135,4 @@
     </dependency>
   </dependencies>
 
-  <profiles>
-    <profile>
-      <id>travis</id>
-      <properties>
-        <skipTests>true</skipTests>
-      </properties>
-    </profile>
-  </profiles>
 </project>
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/compile/DrillJavaFileManager.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/compile/DrillJavaFileManager.java
index 6a90270..98571f5 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/compile/DrillJavaFileManager.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/compile/DrillJavaFileManager.java
@@ -28,17 +28,14 @@ import javax.tools.JavaFileObject.Kind;
 
 import org.apache.drill.shaded.guava.com.google.common.base.Predicate;
 import org.apache.drill.shaded.guava.com.google.common.collect.Sets;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /* package */
 class DrillJavaFileManager extends ForwardingJavaFileManager<JavaFileManager> {
-  static final org.slf4j.Logger logger = 
org.slf4j.LoggerFactory.getLogger(DrillJavaFileManager.class);
+  private static final Logger logger = 
LoggerFactory.getLogger(DrillJavaFileManager.class);
 
-  public static final Predicate<Kind> NO_SOURCES_KIND = new Predicate<Kind>() {
-    @Override
-    public boolean apply(Kind input) {
-      return input != Kind.SOURCE;
-    }
-  };
+  public static final Predicate<Kind> NO_SOURCES_KIND = input -> input != 
Kind.SOURCE;
 
   private final ClassLoader classLoader;
 
@@ -60,8 +57,8 @@ class DrillJavaFileManager extends 
ForwardingJavaFileManager<JavaFileManager> {
   @Override
   public JavaFileObject getJavaFileForOutput(Location location, String 
className, Kind kind, FileObject sibling) throws IOException {
     logger.trace("Creating JavaFileForOutput@(location:{}, className:{}, 
kinds:{})", location, className, kind);
-    if (sibling != null && sibling instanceof DrillJavaFileObject) {
-      return ((DrillJavaFileObject)sibling).addOutputJavaFile(className);
+    if (sibling instanceof DrillJavaFileObject) {
+      return ((DrillJavaFileObject) sibling).addOutputJavaFile(className);
     }
     throw new IOException("The source file passed to getJavaFileForOutput() is 
not a DrillJavaFileObject: " + sibling);
   }
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/compile/JDKClassCompiler.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/compile/JDKClassCompiler.java
index 642ef37..01b3b26 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/compile/JDKClassCompiler.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/compile/JDKClassCompiler.java
@@ -25,6 +25,7 @@ import java.util.Map;
 import javax.tools.DiagnosticListener;
 import javax.tools.JavaCompiler;
 import javax.tools.JavaCompiler.CompilationTask;
+import javax.tools.JavaFileManager;
 import javax.tools.JavaFileObject;
 import javax.tools.ToolProvider;
 
@@ -33,14 +34,24 @@ import org.codehaus.commons.compiler.CompileException;
 
 import org.apache.drill.shaded.guava.com.google.common.base.Charsets;
 import org.apache.drill.shaded.guava.com.google.common.collect.Lists;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 class JDKClassCompiler extends AbstractClassCompiler {
-  static final org.slf4j.Logger logger = 
org.slf4j.LoggerFactory.getLogger(JDKClassCompiler.class);
+  private static final Logger logger = 
LoggerFactory.getLogger(JDKClassCompiler.class);
 
   private final Collection<String> compilerOptions;
   private final DiagnosticListener<JavaFileObject> listener;
   private final JavaCompiler compiler;
-  private final DrillJavaFileManager fileManager;
+  private final ClassLoader classLoader;
+
+  private JDKClassCompiler(JavaCompiler compiler, ClassLoader classLoader, 
boolean debug) {
+    super(debug);
+    this.compiler = compiler;
+    this.listener = new DrillDiagnosticListener();
+    this.classLoader = classLoader;
+    this.compilerOptions = Lists.newArrayList(this.debug ? 
"-g:source,lines,vars" : "-g:none");
+  }
 
   public static JDKClassCompiler newInstance(ClassLoader classLoader, boolean 
debug) {
     JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
@@ -50,36 +61,29 @@ class JDKClassCompiler extends AbstractClassCompiler {
     return new JDKClassCompiler(compiler, classLoader, debug);
   }
 
-  private JDKClassCompiler(JavaCompiler compiler, ClassLoader classLoader, 
boolean debug) {
-    super(debug);
-    this.compiler = compiler;
-    this.listener = new DrillDiagnosticListener();
-    this.fileManager = new 
DrillJavaFileManager(compiler.getStandardFileManager(listener, null, 
Charsets.UTF_8), classLoader);
-    this.compilerOptions = Lists.newArrayList(this.debug ? 
"-g:source,lines,vars" : "-g:none");
-  }
-
   @Override
   protected byte[][] getByteCode(final ClassNames className, final String 
sourceCode)
       throws CompileException, IOException, ClassNotFoundException {
     return doCompile(className, sourceCode).getByteCode();
-   }
+  }
 
   @Override
-  public Map<String,byte[]> compile(final ClassNames className, final String 
sourceCode)
+  public Map<String, byte[]> compile(final ClassNames className, final String 
sourceCode)
       throws CompileException, IOException, ClassNotFoundException {
     return doCompile(className, sourceCode).getClassByteCodes();
- }
+  }
 
   private DrillJavaFileObject doCompile(final ClassNames className, final 
String sourceCode)
-        throws CompileException, IOException, ClassNotFoundException {
-    try {
+      throws CompileException, IOException, ClassNotFoundException {
+    // JavaFileManager should be closed after its usage to release all 
resources opened by this file manager
+    try (JavaFileManager fileManager = new 
DrillJavaFileManager(compiler.getStandardFileManager(listener, null, 
Charsets.UTF_8), classLoader)) {
       // Create one Java source file in memory, which will be compiled later.
       DrillJavaFileObject compilationUnit = new 
DrillJavaFileObject(className.dot, sourceCode);
 
       CompilationTask task = compiler.getTask(null, fileManager, listener, 
compilerOptions, null, Collections.singleton(compilationUnit));
 
       // Run the compiler.
-      if(!task.call()) {
+      if (!task.call()) {
         throw new CompileException("Compilation failed", null);
       } else if (!compilationUnit.isCompiled()) {
         throw new ClassNotFoundException(className + ": Class file not created 
by compilation.");
@@ -103,5 +107,7 @@ class JDKClassCompiler extends AbstractClassCompiler {
   }
 
   @Override
-  protected org.slf4j.Logger getLogger() { return logger; }
+  protected Logger getLogger() {
+    return logger;
+  }
 }
diff --git a/exec/jdbc-all/pom.xml b/exec/jdbc-all/pom.xml
index 3669ea1..833f57c 100644
--- a/exec/jdbc-all/pom.xml
+++ b/exec/jdbc-all/pom.xml
@@ -894,12 +894,6 @@
         </plugins>
       </build>
     </profile>
-    <profile>
-      <id>travis</id>
-      <properties>
-        <skipTests>true</skipTests>
-      </properties>
-    </profile>
   </profiles>
 
 </project>
diff --git a/exec/jdbc/pom.xml b/exec/jdbc/pom.xml
index 112a219..ecc7d44 100644
--- a/exec/jdbc/pom.xml
+++ b/exec/jdbc/pom.xml
@@ -186,11 +186,5 @@
         </dependency>
       </dependencies>
     </profile>
-    <profile>
-      <id>travis</id>
-      <properties>
-        <skipTests>true</skipTests>
-      </properties>
-    </profile>
   </profiles>
 </project>

Reply via email to