This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new 0cf1abba13f [bugfix](paimon)add class loader (#30483) 0cf1abba13f is described below commit 0cf1abba13f33a7fc92531bcdd8d3ce425fce8f7 Author: wuwenchi <wuwenchi...@hotmail.com> AuthorDate: Tue Jan 30 15:07:42 2024 +0800 [bugfix](paimon)add class loader (#30483) --- .../org/apache/doris/paimon/PaimonJniScanner.java | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/fe/be-java-extensions/paimon-scanner/src/main/java/org/apache/doris/paimon/PaimonJniScanner.java b/fe/be-java-extensions/paimon-scanner/src/main/java/org/apache/doris/paimon/PaimonJniScanner.java index ac497776004..fce74a27dc6 100644 --- a/fe/be-java-extensions/paimon-scanner/src/main/java/org/apache/doris/paimon/PaimonJniScanner.java +++ b/fe/be-java-extensions/paimon-scanner/src/main/java/org/apache/doris/paimon/PaimonJniScanner.java @@ -60,8 +60,10 @@ public class PaimonJniScanner extends JniScanner { private long tblId; private long lastUpdateTime; private RecordReader.RecordIterator<InternalRow> recordIterator = null; + private final ClassLoader classLoader; public PaimonJniScanner(int batchSize, Map<String, String> params) { + this.classLoader = this.getClass().getClassLoader(); LOG.debug("params:{}", params); this.params = params; String[] requiredFields = params.get("required_fields").split(","); @@ -87,9 +89,19 @@ public class PaimonJniScanner extends JniScanner { @Override public void open() throws IOException { - initTable(); - initReader(); - resetDatetimeV2Precision(); + try { + // When the user does not specify hive-site.xml, Paimon will look for the file from the classpath: + // org.apache.paimon.hive.HiveCatalog.createHiveConf: + // `Thread.currentThread().getContextClassLoader().getResource(HIVE_SITE_FILE)` + // so we need to provide a classloader, otherwise it will cause NPE. + Thread.currentThread().setContextClassLoader(classLoader); + initTable(); + initReader(); + resetDatetimeV2Precision(); + } catch (Exception e) { + LOG.warn("Failed to open paimon_scanner: " + e.getMessage(), e); + throw e; + } } private void initReader() throws IOException { @@ -182,7 +194,7 @@ public class PaimonJniScanner extends JniScanner { PaimonTableCacheKey key = new PaimonTableCacheKey(ctlId, dbId, tblId, paimonOptionParams, dbName, tblName); TableExt tableExt = PaimonTableCache.getTable(key); if (tableExt.getCreateTime() < lastUpdateTime) { - LOG.warn("invalidate cacha table:{}, localTime:{}, remoteTime:{}", key, tableExt.getCreateTime(), + LOG.warn("invalidate cache table:{}, localTime:{}, remoteTime:{}", key, tableExt.getCreateTime(), lastUpdateTime); PaimonTableCache.invalidateTableCache(key); tableExt = PaimonTableCache.getTable(key); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org