This is an automated email from the ASF dual-hosted git repository.
cgivre 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 582dc40dac DRILL-8523: Remove Support for Java 8 (#2987)
582dc40dac is described below
commit 582dc40dacf0c85de18f0a4a0d72cac966da73f6
Author: Charles S. Givre <[email protected]>
AuthorDate: Thu May 8 07:48:15 2025 -0400
DRILL-8523: Remove Support for Java 8 (#2987)
---
.github/workflows/ci.yml | 7 +-
.../drill/exec/compile/ClassCompilerSelector.java | 12 +--
.../drill/exec/compile/ClassTransformer.java | 89 ++++++++++------------
.../drill/exec/compile/QueryClassLoader.java | 21 ++---
.../test/java/org/apache/drill/PlanningBase.java | 33 ++++----
.../exec/compile/TestClassTransformation.java | 16 ++--
.../physical/impl/TestNestedDateTimeTimestamp.java | 24 +++---
.../physical/impl/writer/TestParquetWriter.java | 12 ++-
.../org/apache/drill/exec/rpc/data/TestBitRpc.java | 2 +-
.../exec/vector/accessor/GenericAccessorTest.java | 2 +-
.../work/fragment/FragmentStatusReporterTest.java | 8 +-
exec/jdbc-all/pom.xml | 2 +-
pom.xml | 45 +++++++----
13 files changed, 147 insertions(+), 126 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 243c009185..c148858e70 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -34,11 +34,8 @@ jobs:
strategy:
matrix:
# Java versions to run unit tests
- java: [ '8', '11', '17' ]
+ java: [ '11', '17', '21' ]
profile: ['default-hadoop']
- include:
- - java: '8'
- profile: 'hadoop-2'
fail-fast: false
steps:
- name: Checkout
@@ -82,7 +79,7 @@ jobs:
uses: actions/setup-java@v4
with:
distribution: 'temurin'
- java-version: '8'
+ java-version: '11'
cache: 'maven'
# Caches built protobuf library
- name: Cache protobufs
diff --git
a/exec/java-exec/src/main/java/org/apache/drill/exec/compile/ClassCompilerSelector.java
b/exec/java-exec/src/main/java/org/apache/drill/exec/compile/ClassCompilerSelector.java
index f35942eac8..e5c40139bf 100644
---
a/exec/java-exec/src/main/java/org/apache/drill/exec/compile/ClassCompilerSelector.java
+++
b/exec/java-exec/src/main/java/org/apache/drill/exec/compile/ClassCompilerSelector.java
@@ -17,10 +17,6 @@
*/
package org.apache.drill.exec.compile;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Map;
-
import org.apache.drill.common.config.DrillConfig;
import org.apache.drill.common.exceptions.UserException;
import org.apache.drill.exec.compile.ClassTransformer.ClassNames;
@@ -34,6 +30,12 @@ import
org.apache.drill.exec.server.options.TypeValidators.BooleanValidator;
import org.apache.drill.exec.server.options.TypeValidators.LongValidator;
import org.apache.drill.exec.server.options.TypeValidators.StringValidator;
import org.codehaus.commons.compiler.CompileException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Map;
/**
* Selects between the two supported Java compilers: Janino and
@@ -65,7 +67,7 @@ import org.codehaus.commons.compiler.CompileException;
*/
public class ClassCompilerSelector {
- private static final org.slf4j.Logger logger =
org.slf4j.LoggerFactory.getLogger(ClassCompilerSelector.class);
+ private static final Logger logger =
LoggerFactory.getLogger(ClassCompilerSelector.class);
public enum CompilerPolicy {
DEFAULT, JDK, JANINO;
diff --git
a/exec/java-exec/src/main/java/org/apache/drill/exec/compile/ClassTransformer.java
b/exec/java-exec/src/main/java/org/apache/drill/exec/compile/ClassTransformer.java
index e777a883d1..83e401f248 100644
---
a/exec/java-exec/src/main/java/org/apache/drill/exec/compile/ClassTransformer.java
+++
b/exec/java-exec/src/main/java/org/apache/drill/exec/compile/ClassTransformer.java
@@ -17,11 +17,11 @@
*/
package org.apache.drill.exec.compile;
-import java.io.IOException;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.Set;
-
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.drill.common.config.DrillConfig;
import org.apache.drill.common.util.DrillFileUtils;
@@ -35,11 +35,10 @@ import org.codehaus.commons.compiler.CompileException;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.tree.ClassNode;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
+import java.io.IOException;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Set;
/**
* Compiles generated code, merges the resulting class with the
@@ -52,7 +51,7 @@ import com.google.common.collect.Sets;
public class ClassTransformer {
private static final org.slf4j.Logger logger =
org.slf4j.LoggerFactory.getLogger(ClassTransformer.class);
- private static final int MAX_SCALAR_REPLACE_CODE_SIZE = 2*1024*1024; // 2meg
+ private static final int MAX_SCALAR_REPLACE_CODE_SIZE = 2 * 1024 * 1024; //
2meg
private final ByteCodeLoader byteCodeLoader = new ByteCodeLoader();
private final DrillConfig config;
@@ -72,7 +71,7 @@ public class ClassTransformer {
* @throws IllegalArgumentException if the string doesn't match any of the
enum values
*/
public static ScalarReplacementOption fromString(final String s) {
- switch(s) {
+ switch (s) {
case "off":
return OFF;
case "try":
@@ -228,8 +227,11 @@ public class ClassTransformer {
final TemplateClassDefinition<?> templateDefinition,
final String entireClass,
final String materializedClassName) throws ClassTransformationException {
- // unfortunately, this hasn't been set up at construction time, so we have
to do it here
- final ScalarReplacementOption scalarReplacementOption =
ScalarReplacementOption.fromString(optionManager.getOption(ExecConstants.SCALAR_REPLACEMENT_VALIDATOR));
+ final ScalarReplacementOption scalarReplacementOption =
+
ScalarReplacementOption.fromString(optionManager.getOption(ExecConstants.SCALAR_REPLACEMENT_VALIDATOR));
+
+ // Track injected class names to avoid duplicates
+ Set<String> injectedClassNames = new java.util.HashSet<>();
try {
final long t1 = System.nanoTime();
@@ -251,7 +253,7 @@ public class ClassTransformer {
final Set<ClassSet> namesCompleted = Sets.newHashSet();
names.add(set);
- while ( !names.isEmpty() ) {
+ while (!names.isEmpty()) {
final ClassSet nextSet = names.removeFirst();
if (namesCompleted.contains(nextSet)) {
continue;
@@ -259,45 +261,24 @@ public class ClassTransformer {
final ClassNames nextPrecompiled = nextSet.precompiled;
final byte[] precompiledBytes =
byteCodeLoader.getClassByteCodeFromPath(nextPrecompiled.clazz);
final ClassNames nextGenerated = nextSet.generated;
- // keeps only classes that have not be merged
+ // keeps only classes that have not been merged
Pair<byte[], ClassNode> classNodePair =
classesToMerge.remove(nextGenerated.slash);
- final ClassNode generatedNode;
- if (classNodePair != null) {
- generatedNode = classNodePair.getValue();
- } else {
- generatedNode = null;
- }
+ final ClassNode generatedNode = (classNodePair != null) ?
classNodePair.getValue() : null;
- /*
- * TODO
- * We're having a problem with some cases of scalar replacement, but
we want to get
- * the code in so it doesn't rot anymore.
- *
- * Here, we use the specified replacement option. The loop will allow
us to retry if
- * we're using TRY.
- */
MergedClassResult result = null;
- boolean scalarReplace = scalarReplacementOption !=
ScalarReplacementOption.OFF && entireClass.length() <
MAX_SCALAR_REPLACE_CODE_SIZE;
- while(true) {
+ boolean scalarReplace = scalarReplacementOption !=
ScalarReplacementOption.OFF
+ && entireClass.length() < MAX_SCALAR_REPLACE_CODE_SIZE;
+ while (true) {
try {
result = MergeAdapter.getMergedClass(nextSet, precompiledBytes,
generatedNode, scalarReplace);
break;
- } catch(RuntimeException e) {
- // if we had a problem without using scalar replacement, then
rethrow
+ } catch (RuntimeException e) {
if (!scalarReplace) {
throw e;
}
-
- // if we did try to use scalar replacement, decide if we need to
retry or not
if (scalarReplacementOption == ScalarReplacementOption.ON) {
- // option is forced on, so this is a hard error
throw e;
}
-
- /*
- * We tried to use scalar replacement, with the option to fall
back to not using it.
- * Log this failure before trying again without scalar replacement.
- */
logger.info("scalar replacement failure (retrying)\n", e);
scalarReplace = false;
}
@@ -307,26 +288,38 @@ public class ClassTransformer {
s = s.replace(DrillFileUtils.SEPARATOR_CHAR, '.');
names.add(nextSet.getChild(s));
}
- classLoader.injectByteCode(nextGenerated.dot, result.bytes);
+
+ // Only inject bytecode if not already injected
+ if (!injectedClassNames.contains(nextGenerated.dot)) {
+ classLoader.injectByteCode(nextGenerated.dot, result.bytes);
+ injectedClassNames.add(nextGenerated.dot);
+ }
+
namesCompleted.add(nextSet);
}
// adds byte code of the classes that have not been merged to make them
accessible for outer class
for (Map.Entry<String, Pair<byte[], ClassNode>> clazz :
classesToMerge.entrySet()) {
-
classLoader.injectByteCode(clazz.getKey().replace(DrillFileUtils.SEPARATOR_CHAR,
'.'), clazz.getValue().getKey());
+ String classNameDot =
clazz.getKey().replace(DrillFileUtils.SEPARATOR_CHAR, '.');
+ if (!injectedClassNames.contains(classNameDot)) {
+ classLoader.injectByteCode(classNameDot, clazz.getValue().getKey());
+ injectedClassNames.add(classNameDot);
+ }
}
+
Class<?> c = classLoader.findClass(set.generated.dot);
if (templateDefinition.getExternalInterface().isAssignableFrom(c)) {
logger.debug("Compiled and merged {}: bytecode size = {}, time = {}
ms.",
- c.getSimpleName(),
- DrillStringUtils.readable(totalBytecodeSize),
- (System.nanoTime() - t1 + 500_000) / 1_000_000);
+ c.getSimpleName(),
+ DrillStringUtils.readable(totalBytecodeSize),
+ (System.nanoTime() - t1 + 500_000) / 1_000_000);
return c;
}
throw new ClassTransformationException("The requested class did not
implement the expected interface.");
} catch (CompileException | IOException | ClassNotFoundException e) {
- throw new ClassTransformationException(String.format("Failure generating
transformation classes for value: \n %s", entireClass), e);
+ throw new ClassTransformationException(
+ String.format("Failure generating transformation classes for value:
\n %s", entireClass), e);
}
}
}
diff --git
a/exec/java-exec/src/main/java/org/apache/drill/exec/compile/QueryClassLoader.java
b/exec/java-exec/src/main/java/org/apache/drill/exec/compile/QueryClassLoader.java
index a9858b2847..825d6e9563 100644
---
a/exec/java-exec/src/main/java/org/apache/drill/exec/compile/QueryClassLoader.java
+++
b/exec/java-exec/src/main/java/org/apache/drill/exec/compile/QueryClassLoader.java
@@ -17,32 +17,33 @@
*/
package org.apache.drill.exec.compile;
-import java.io.IOException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.atomic.AtomicLong;
-
+import com.google.common.collect.MapMaker;
import org.apache.drill.common.config.DrillConfig;
import org.apache.drill.exec.compile.ClassTransformer.ClassNames;
import org.apache.drill.exec.exception.ClassTransformationException;
import org.apache.drill.exec.server.options.OptionSet;
import org.codehaus.commons.compiler.CompileException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
-import com.google.common.collect.MapMaker;
+import java.io.IOException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.atomic.AtomicLong;
/**
* Per-compilation unit class loader that holds both caching and compilation
* steps. */
public class QueryClassLoader extends URLClassLoader {
- static final org.slf4j.Logger logger =
org.slf4j.LoggerFactory.getLogger(QueryClassLoader.class);
+ static final Logger logger = LoggerFactory.getLogger(QueryClassLoader.class);
- private ClassCompilerSelector compilerSelector;
+ private final ClassCompilerSelector compilerSelector;
private AtomicLong index = new AtomicLong(0);
- private ConcurrentMap<String, byte[]> customClasses = new
MapMaker().concurrencyLevel(4).makeMap();
+ private final ConcurrentMap<String, byte[]> customClasses = new
MapMaker().concurrencyLevel(4).makeMap();
public QueryClassLoader(DrillConfig config, OptionSet sessionOptions) {
super(new URL[0], Thread.currentThread().getContextClassLoader());
diff --git a/exec/java-exec/src/test/java/org/apache/drill/PlanningBase.java
b/exec/java-exec/src/test/java/org/apache/drill/PlanningBase.java
index 1106ea18f4..1cdc07afd5 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/PlanningBase.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/PlanningBase.java
@@ -17,29 +17,26 @@
*/
package org.apache.drill;
-import java.io.IOException;
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
-
-import org.apache.calcite.jdbc.DynamicSchema;
-import org.apache.drill.exec.alias.AliasRegistryProvider;
-import org.apache.drill.exec.ops.ViewExpansionContext;
+import com.codahale.metrics.MetricRegistry;
import com.google.common.base.Function;
+import com.google.common.collect.ImmutableList;
+import com.google.common.io.Resources;
import io.netty.buffer.DrillBuf;
+import org.apache.calcite.jdbc.DynamicSchema;
import org.apache.calcite.schema.SchemaPlus;
import org.apache.drill.common.config.DrillConfig;
import org.apache.drill.common.config.LogicalPlanPersistence;
import org.apache.drill.common.scanner.ClassPathScanner;
import org.apache.drill.common.scanner.persistence.ScanResult;
import org.apache.drill.common.types.TypeProtos;
-import org.apache.drill.exec.expr.holders.ValueHolder;
-import org.apache.drill.exec.vector.ValueHolderHelper;
-import org.apache.drill.test.TestTools;
import org.apache.drill.exec.ExecTest;
+import org.apache.drill.exec.alias.AliasRegistryProvider;
import org.apache.drill.exec.expr.fn.FunctionImplementationRegistry;
+import org.apache.drill.exec.expr.holders.ValueHolder;
import org.apache.drill.exec.memory.BufferAllocator;
import org.apache.drill.exec.memory.RootAllocatorFactory;
import org.apache.drill.exec.ops.QueryContext;
+import org.apache.drill.exec.ops.ViewExpansionContext;
import org.apache.drill.exec.physical.PhysicalPlan;
import org.apache.drill.exec.planner.physical.PlannerSettings;
import org.apache.drill.exec.planner.sql.DrillOperatorTable;
@@ -55,16 +52,18 @@ import org.apache.drill.exec.store.StoragePluginRegistry;
import org.apache.drill.exec.store.StoragePluginRegistryImpl;
import
org.apache.drill.exec.store.sys.store.provider.LocalPersistentStoreProvider;
import org.apache.drill.exec.testing.ExecutionControls;
+import org.apache.drill.exec.vector.ValueHolderHelper;
+import org.apache.drill.test.TestTools;
import org.junit.Rule;
import org.junit.rules.TestRule;
+import org.mockito.ArgumentMatchers;
-import com.codahale.metrics.MetricRegistry;
-import com.google.common.collect.ImmutableList;
-import com.google.common.io.Resources;
-import org.mockito.Matchers;
+import java.io.IOException;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Matchers.eq;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -131,11 +130,11 @@ public class PlanningBase extends ExecTest {
when(context.getManagedBuffer()).thenReturn(allocator.buffer(4));
when(context.getConstantValueHolder(eq("0.03"),
eq(TypeProtos.MinorType.VARDECIMAL),
- Matchers.<Function<DrillBuf, ValueHolder>>any()))
+ ArgumentMatchers.<Function<DrillBuf, ValueHolder>>any()))
.thenReturn(ValueHolderHelper.getVarDecimalHolder(allocator.buffer(4),
"0.03"));
when(context.getConstantValueHolder(eq("0.01"),
eq(TypeProtos.MinorType.VARDECIMAL),
- Matchers.<Function<DrillBuf, ValueHolder>>any()))
+ ArgumentMatchers.<Function<DrillBuf, ValueHolder>>any()))
.thenReturn(ValueHolderHelper.getVarDecimalHolder(allocator.buffer(4),
"0.01"));
when(context.getOption(anyString())).thenCallRealMethod();
when(context.getViewExpansionContext()).thenReturn(viewExpansionContext);
diff --git
a/exec/java-exec/src/test/java/org/apache/drill/exec/compile/TestClassTransformation.java
b/exec/java-exec/src/test/java/org/apache/drill/exec/compile/TestClassTransformation.java
index de12fd7450..52d1951648 100644
---
a/exec/java-exec/src/test/java/org/apache/drill/exec/compile/TestClassTransformation.java
+++
b/exec/java-exec/src/test/java/org/apache/drill/exec/compile/TestClassTransformation.java
@@ -17,15 +17,10 @@
*/
package org.apache.drill.exec.compile;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.List;
-
import org.apache.drill.common.util.DrillFileUtils;
import org.apache.drill.exec.ExecConstants;
-import org.apache.drill.exec.compile.bytecode.ValueHolderReplacementVisitor;
-import org.apache.drill.test.BaseTestQuery;
import org.apache.drill.exec.compile.ClassTransformer.ClassSet;
+import org.apache.drill.exec.compile.bytecode.ValueHolderReplacementVisitor;
import org.apache.drill.exec.compile.sig.GeneratorMapping;
import org.apache.drill.exec.compile.sig.MappingSet;
import org.apache.drill.exec.exception.ClassTransformationException;
@@ -33,6 +28,7 @@ import org.apache.drill.exec.expr.ClassGenerator;
import org.apache.drill.exec.expr.CodeGenerator;
import org.apache.drill.exec.rpc.user.UserSession;
import org.apache.drill.exec.server.options.SessionOptionManager;
+import org.apache.drill.test.BaseTestQuery;
import org.codehaus.commons.compiler.CompileException;
import org.junit.Assert;
import org.junit.BeforeClass;
@@ -40,9 +36,15 @@ import org.junit.Test;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassWriter;
import org.objectweb.asm.tree.ClassNode;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
public class TestClassTransformation extends BaseTestQuery {
- private static final org.slf4j.Logger logger =
org.slf4j.LoggerFactory.getLogger(TestClassTransformation.class);
+ private static final Logger logger =
LoggerFactory.getLogger(TestClassTransformation.class);
private static final int ITERATION_COUNT =
Integer.parseInt(System.getProperty("TestClassTransformation.iteration", "1"));
diff --git
a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestNestedDateTimeTimestamp.java
b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestNestedDateTimeTimestamp.java
index 05697aa60a..a47db151de 100644
---
a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestNestedDateTimeTimestamp.java
+++
b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestNestedDateTimeTimestamp.java
@@ -17,6 +17,15 @@
*/
package org.apache.drill.exec.physical.impl;
+import org.apache.drill.categories.FlakyTest;
+import org.apache.drill.exec.expr.fn.impl.DateUtility;
+import org.apache.drill.exec.rpc.user.QueryDataBatch;
+import org.apache.drill.test.BaseTestQuery;
+import org.apache.drill.test.TestBuilder;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
@@ -29,17 +38,14 @@ import java.util.List;
import java.util.Map;
import java.util.TreeMap;
-import org.apache.drill.categories.FlakyTest;
-import org.apache.drill.exec.expr.fn.impl.DateUtility;
-import org.apache.drill.exec.rpc.user.QueryDataBatch;
-import org.apache.drill.test.BaseTestQuery;
-import org.apache.drill.test.TestBuilder;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
/**
* For DRILL-6242, output for Date, Time, Timestamp should use different
classes
+ *
+ * Note that Drill treats all timestanps as naive (without timezone
information). When running tests locally,
+ * these tests may fail if the local timezone is not UTC. To run tests on a
machine with a non-UTC timezone,
+ * you should run the tests with the following command:
+ *
+ * mvn test -Duser.timezone=UTC
*/
@Category(FlakyTest.class)
public class TestNestedDateTimeTimestamp extends BaseTestQuery {
diff --git
a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/writer/TestParquetWriter.java
b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/writer/TestParquetWriter.java
index 076bb2b45b..8a0e3ad3ed 100644
---
a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/writer/TestParquetWriter.java
+++
b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/writer/TestParquetWriter.java
@@ -17,6 +17,8 @@
*/
package org.apache.drill.exec.physical.impl.writer;
+import com.google.common.base.Joiner;
+import com.google.common.collect.ImmutableList;
import org.apache.calcite.util.Pair;
import org.apache.commons.io.FileUtils;
import org.apache.drill.categories.ParquetTest;
@@ -30,8 +32,6 @@ import org.apache.drill.exec.planner.physical.PlannerSettings;
import org.apache.drill.exec.store.dfs.FileSystemConfig;
import org.apache.drill.exec.store.parquet.ParquetFormatConfig;
import org.apache.drill.exec.util.JsonStringArrayList;
-import com.google.common.base.Joiner;
-import com.google.common.collect.ImmutableList;
import org.apache.drill.test.ClusterFixture;
import org.apache.drill.test.ClusterTest;
import org.apache.drill.test.TestBuilder;
@@ -41,16 +41,18 @@ import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.parquet.hadoop.ParquetFileReader;
import org.apache.parquet.hadoop.metadata.ParquetMetadata;
-import org.apache.parquet.schema.MessageType;
import org.apache.parquet.schema.LogicalTypeAnnotation;
+import org.apache.parquet.schema.MessageType;
import org.apache.parquet.schema.PrimitiveType;
import org.joda.time.Period;
-
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.condition.DisabledOnOs;
+import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
+import org.junit.jupiter.api.condition.OS;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -1002,6 +1004,8 @@ public class TestParquetWriter extends ClusterTest {
// Only attempt this test on Linux / amd64 because com.rdblue.brotli-codec
// only bundles natives for Mac and Linux on AMD64. See PARQUET-1975.
@Test
+ @EnabledIfSystemProperty(named = "os.arch", matches = "(amd64|x86_64)")
+ @DisabledOnOs({ OS.WINDOWS, OS.MAC })
public void testTPCHReadWriteBrotli() throws Exception {
try {
client.alterSession(ExecConstants.PARQUET_WRITER_COMPRESSION_TYPE,
"brotli");
diff --git
a/exec/java-exec/src/test/java/org/apache/drill/exec/rpc/data/TestBitRpc.java
b/exec/java-exec/src/test/java/org/apache/drill/exec/rpc/data/TestBitRpc.java
index c162a7625f..439dedd8db 100644
---
a/exec/java-exec/src/test/java/org/apache/drill/exec/rpc/data/TestBitRpc.java
+++
b/exec/java-exec/src/test/java/org/apache/drill/exec/rpc/data/TestBitRpc.java
@@ -56,7 +56,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
diff --git
a/exec/java-exec/src/test/java/org/apache/drill/exec/vector/accessor/GenericAccessorTest.java
b/exec/java-exec/src/test/java/org/apache/drill/exec/vector/accessor/GenericAccessorTest.java
index 57a01911cd..41afede8c1 100644
---
a/exec/java-exec/src/test/java/org/apache/drill/exec/vector/accessor/GenericAccessorTest.java
+++
b/exec/java-exec/src/test/java/org/apache/drill/exec/vector/accessor/GenericAccessorTest.java
@@ -31,7 +31,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
diff --git
a/exec/java-exec/src/test/java/org/apache/drill/exec/work/fragment/FragmentStatusReporterTest.java
b/exec/java-exec/src/test/java/org/apache/drill/exec/work/fragment/FragmentStatusReporterTest.java
index b4bc9cc76e..5eb7f80680 100644
---
a/exec/java-exec/src/test/java/org/apache/drill/exec/work/fragment/FragmentStatusReporterTest.java
+++
b/exec/java-exec/src/test/java/org/apache/drill/exec/work/fragment/FragmentStatusReporterTest.java
@@ -34,11 +34,11 @@ import static
org.apache.drill.exec.proto.UserBitShared.FragmentState.CANCELLATI
import static org.apache.drill.exec.proto.UserBitShared.FragmentState.FAILED;
import static org.apache.drill.exec.proto.UserBitShared.FragmentState.RUNNING;
import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.verifyNoInteractions;
import static org.mockito.Mockito.when;
public class FragmentStatusReporterTest extends BaseTest {
@@ -93,14 +93,14 @@ public class FragmentStatusReporterTest extends BaseTest {
@Test
public void testClose() throws Exception {
statusReporter.close();
- verifyZeroInteractions(foremanTunnel);
+ verifyNoInteractions(foremanTunnel);
}
@Test
public void testCloseClosed() throws Exception {
statusReporter.close();
statusReporter.close();
- verifyZeroInteractions(foremanTunnel);
+ verifyNoInteractions(foremanTunnel);
}
@Test
diff --git a/exec/jdbc-all/pom.xml b/exec/jdbc-all/pom.xml
index 1b7fef416c..6a2159c221 100644
--- a/exec/jdbc-all/pom.xml
+++ b/exec/jdbc-all/pom.xml
@@ -33,7 +33,7 @@
"package.namespace.prefix" equals to "oadd.". It can be overridden if
necessary within any profile -->
<properties>
<package.namespace.prefix>oadd.</package.namespace.prefix>
- <jdbc-all-jar.maxsize>55000000</jdbc-all-jar.maxsize>
+ <jdbc-all-jar.maxsize>56000000</jdbc-all-jar.maxsize>
</properties>
<dependencies>
diff --git a/pom.xml b/pom.xml
index 5e96f05fe2..4cffc55d72 100644
--- a/pom.xml
+++ b/pom.xml
@@ -94,7 +94,7 @@
<httpdlog-parser.version>5.10.0</httpdlog-parser.version>
<iceberg.version>0.12.1</iceberg.version>
<jackson.version>2.18.3</jackson.version>
- <janino.version>3.1.11</janino.version>
+ <janino.version>3.1.12</janino.version>
<javassist.version>3.29.2-GA</javassist.version>
<javax.el.version>3.0.0</javax.el.version>
<javax.validation.api>2.0.1.Final</javax.validation.api>
@@ -113,13 +113,15 @@
<log4j.version>2.23.1</log4j.version>
<!-- Upgrading logback further breaks JDK 8 build compatibility -->
<logback.version>1.3.15</logback.version>
- <maven.compiler.source>1.8</maven.compiler.source>
- <maven.compiler.target>1.8</maven.compiler.target>
+ <maven.compiler.release>11</maven.compiler.release>
+ <maven.compiler.source>11</maven.compiler.source>
+ <maven.compiler.target>11</maven.compiler.target>
<maven.min.version>3.6.3</maven.min.version>
<maven.version>3.8.4</maven.version>
- <memoryMb>3072</memoryMb>
+ <memoryMb>4096</memoryMb>
<metrics.version>4.2.19</metrics.version>
- <mockito.version>3.11.2</mockito.version>
+ <mockito.version>5.17.0</mockito.version>
+ <mockito_inline.version>5.2.0</mockito_inline.version>
<mongo.version>4.11.1</mongo.version>
<msgpack.version>0.6.6</msgpack.version>
<netty.tcnative.classifier />
@@ -162,27 +164,27 @@
<subscribe>[email protected]</subscribe>
<unsubscribe>[email protected]</unsubscribe>
<post>[email protected]</post>
- <archive>http://mail-archives.apache.org/mod_mbox/drill-user/</archive>
+ <archive>https://mail-archives.apache.org/mod_mbox/drill-user/</archive>
</mailingList>
<mailingList>
<name>Developer List</name>
<subscribe>[email protected]</subscribe>
<unsubscribe>[email protected]</unsubscribe>
<post>[email protected]</post>
- <archive>http://mail-archives.apache.org/mod_mbox/drill-dev/</archive>
+ <archive>https://mail-archives.apache.org/mod_mbox/drill-dev/</archive>
</mailingList>
<mailingList>
<name>Commits List</name>
<subscribe>[email protected]</subscribe>
<unsubscribe>[email protected]</unsubscribe>
<post>[email protected]</post>
-
<archive>http://mail-archives.apache.org/mod_mbox/drill-commits/</archive>
+
<archive>https://mail-archives.apache.org/mod_mbox/drill-commits/</archive>
</mailingList>
<mailingList>
<name>Issues List</name>
<subscribe>[email protected]</subscribe>
<unsubscribe>[email protected]</unsubscribe>
- <archive>http://mail-archives.apache.org/mod_mbox/drill-issues/</archive>
+
<archive>https://mail-archives.apache.org/mod_mbox/drill-issues/</archive>
</mailingList>
</mailingLists>
@@ -215,7 +217,7 @@
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
- <version>6.4.1</version>
+ <version>12.1.1</version>
</plugin>
</plugins>
</reporting>
@@ -352,7 +354,6 @@
</dependencies>
<configuration>
<includes>**/*.java</includes>
- <encoding>UTF-8</encoding>
<failsOnError>true</failsOnError>
<consoleOutput>true</consoleOutput>
<includeResources>true</includeResources>
@@ -505,7 +506,7 @@
<version>[${maven.version.min},4)</version>
</requireMavenVersion>
<requireJavaVersion>
- <version>[1.8,18)</version>
+ <version>[1.8,22)</version>
</requireJavaVersion>
</rules>
</configuration>
@@ -627,6 +628,7 @@
-XX:MaxDirectMemorySize=${directMemoryMb}M
-Djava.net.preferIPv4Stack=true
-Djava.awt.headless=true
+ -Duser.timezone=UTC
-ea
${junit.args}
-Djdk.attach.allowAttachSelf=true
@@ -883,6 +885,7 @@
<version>${junit.platform.version}</version>
<scope>test</scope>
</dependency>
+
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-suite-engine</artifactId>
@@ -913,13 +916,25 @@
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>${mockito.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ </exclusion>
+ </exclusions>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
- <version>${mockito.version}</version>
+ <version>${mockito_inline.version}</version>
<scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <artifactId>mockito-core</artifactId>
+ <groupId>org.mockito</groupId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>de.huxhorn.lilith</groupId>
@@ -2923,7 +2938,9 @@
<jdk>[9,)</jdk>
</activation>
<properties>
- <maven.compiler.release>8</maven.compiler.release>
+ <maven.compiler.source>11</maven.compiler.source>
+ <maven.compiler.target>11</maven.compiler.target>
+ <maven.compiler.release>11</maven.compiler.release>
<junit.args>
--add-opens java.base/java.lang=ALL-UNNAMED
--add-opens java.base/java.net=ALL-UNNAMED