From 15987f51f109002078d1edc529dfb7817f626c4c Mon Sep 17 00:00:00 2001 From: Abhishek Radhakrishnan Date: Mon, 30 Sep 2024 07:22:49 -0700 Subject: [PATCH] Update Delta Kernel to 3.2.1 (#17179) Updated Delta Kernel from 3.2.0 to 3.2.1. This upstream version bump contains fixes to reading long columns, class loader and better retry mechanism when reading checkpoint files. --- .../druid-deltalake-extensions/pom.xml | 8 +------- .../druid/delta/input/DeltaInputSource.java | 19 ++++--------------- 2 files changed, 5 insertions(+), 22 deletions(-) diff --git a/extensions-contrib/druid-deltalake-extensions/pom.xml b/extensions-contrib/druid-deltalake-extensions/pom.xml index 6a2b7cc0646c..6b923106e46b 100644 --- a/extensions-contrib/druid-deltalake-extensions/pom.xml +++ b/extensions-contrib/druid-deltalake-extensions/pom.xml @@ -35,7 +35,7 @@ 4.0.0 - 3.2.0 + 3.2.1 @@ -49,12 +49,6 @@ delta-kernel-defaults ${delta-kernel.version} - - io.delta - delta-storage - ${delta-kernel.version} - - org.apache.hadoop hadoop-client-api diff --git a/extensions-contrib/druid-deltalake-extensions/src/main/java/org/apache/druid/delta/input/DeltaInputSource.java b/extensions-contrib/druid-deltalake-extensions/src/main/java/org/apache/druid/delta/input/DeltaInputSource.java index c4c2f2668b04..4f255d020f76 100644 --- a/extensions-contrib/druid-deltalake-extensions/src/main/java/org/apache/druid/delta/input/DeltaInputSource.java +++ b/extensions-contrib/druid-deltalake-extensions/src/main/java/org/apache/druid/delta/input/DeltaInputSource.java @@ -42,7 +42,6 @@ import io.delta.kernel.types.StructType; import io.delta.kernel.utils.CloseableIterator; import io.delta.kernel.utils.FileStatus; -import io.delta.storage.LogStore; import org.apache.druid.data.input.ColumnsFilter; import org.apache.druid.data.input.InputFormat; import org.apache.druid.data.input.InputRowSchema; @@ -340,20 +339,10 @@ private CloseableIterator getTransformedDataIterator( private Snapshot getSnapshotForTable(final Table table, final Engine engine) { - // Setting the LogStore class loader before calling the Delta Kernel snapshot API is required as a workaround with - // the 3.2.0 Delta Kernel because the Kernel library cannot instantiate the LogStore class otherwise. Please see - // https://github.com/delta-io/delta/issues/3299 for details. This workaround can be removed once the issue is fixed. - final ClassLoader currCtxCl = Thread.currentThread().getContextClassLoader(); - try { - Thread.currentThread().setContextClassLoader(LogStore.class.getClassLoader()); - if (snapshotVersion != null) { - return table.getSnapshotAsOfVersion(engine, snapshotVersion); - } else { - return table.getLatestSnapshot(engine); - } - } - finally { - Thread.currentThread().setContextClassLoader(currCtxCl); + if (snapshotVersion != null) { + return table.getSnapshotAsOfVersion(engine, snapshotVersion); + } else { + return table.getLatestSnapshot(engine); } }