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

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


The following commit(s) were added to refs/heads/master by this push:
     new 0aa1f6eaaa [jindo] Disable directory timestamps for faster listings 
(#9019)
0aa1f6eaaa is described below

commit 0aa1f6eaaabe71ed5f87c493bd4d37f35a014c0b
Author: Dapeng Sun(孙大鹏) <[email protected]>
AuthorDate: Tue Aug 4 16:22:00 2026 +0800

    [jindo] Disable directory timestamps for faster listings (#9019)
---
 .../java/org/apache/paimon/jindo/JindoFileIO.java  |  6 +++++
 .../org/apache/paimon/jindo/JindoFileIOTest.java   | 27 ++++++++++++++++++++++
 2 files changed, 33 insertions(+)

diff --git 
a/paimon-filesystems/paimon-jindo/src/main/java/org/apache/paimon/jindo/JindoFileIO.java
 
b/paimon-filesystems/paimon-jindo/src/main/java/org/apache/paimon/jindo/JindoFileIO.java
index 4b821a051a..58c9d2aac1 100644
--- 
a/paimon-filesystems/paimon-jindo/src/main/java/org/apache/paimon/jindo/JindoFileIO.java
+++ 
b/paimon-filesystems/paimon-jindo/src/main/java/org/apache/paimon/jindo/JindoFileIO.java
@@ -75,6 +75,7 @@ public class JindoFileIO extends HadoopCompliantFileIO 
implements HadoopOptionsP
     private static final String OSS_SECURITY_TOKEN = "fs.oss.securityToken";
     private static final String OSS_REGION = "fs.oss.region";
     private static final String OSS_USER_AGENT_EXTENDED = 
"fs.oss.user.agent.extended";
+    private static final String OSS_SHOW_DIR_TIMESTAMP = 
"fs.oss.show-dir-timestamp";
     private static final String DLF_ACCESS_TRACKING_EXTENDED_INFO =
             "dlf.access-tracking.extended-info";
 
@@ -150,6 +151,11 @@ public class JindoFileIO extends HadoopCompliantFileIO 
implements HadoopOptionsP
                     .forEachRemaining(entry -> 
hadoopOptions.set(entry.getKey(), entry.getValue()));
         }
 
+        // Resolving a timestamp for every listed directory is expensive in 
Jindo.
+        if (!hadoopOptions.containsKey(OSS_SHOW_DIR_TIMESTAMP)) {
+            hadoopOptions.set(OSS_SHOW_DIR_TIMESTAMP, "false");
+        }
+
         String dlfAccessTrackingExtendedInfo =
                 context.options().get(DLF_ACCESS_TRACKING_EXTENDED_INFO);
         if 
(!StringUtils.isNullOrWhitespaceOnly(dlfAccessTrackingExtendedInfo)) {
diff --git 
a/paimon-filesystems/paimon-jindo/src/test/java/org/apache/paimon/jindo/JindoFileIOTest.java
 
b/paimon-filesystems/paimon-jindo/src/test/java/org/apache/paimon/jindo/JindoFileIOTest.java
index b0908cc489..7978dfa2fb 100644
--- 
a/paimon-filesystems/paimon-jindo/src/test/java/org/apache/paimon/jindo/JindoFileIOTest.java
+++ 
b/paimon-filesystems/paimon-jindo/src/test/java/org/apache/paimon/jindo/JindoFileIOTest.java
@@ -18,6 +18,7 @@
 
 package org.apache.paimon.jindo;
 
+import org.apache.paimon.catalog.CatalogContext;
 import org.apache.paimon.data.BlobDescriptor;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.options.Options;
@@ -44,6 +45,32 @@ import static org.mockito.Mockito.when;
 /** Tests for {@link JindoFileIO}. */
 public class JindoFileIOTest {
 
+    private static final String SHOW_DIR_TIMESTAMP = 
"fs.oss.show-dir-timestamp";
+
+    @Test
+    public void testDisableDirectoryTimestampByDefault() {
+        JindoFileIO fileIO = new JindoFileIO();
+        fileIO.configure(CatalogContext.create(new Options()));
+
+        assertThat(
+                        fileIO.hadoopOptions(new Path("oss://bucket/table"), 
"meta")
+                                .get(SHOW_DIR_TIMESTAMP))
+                .isEqualTo("false");
+    }
+
+    @Test
+    public void testKeepExplicitDirectoryTimestampSetting() {
+        Options options = new Options();
+        options.set(SHOW_DIR_TIMESTAMP, "true");
+        JindoFileIO fileIO = new JindoFileIO();
+        fileIO.configure(CatalogContext.create(options));
+
+        assertThat(
+                        fileIO.hadoopOptions(new Path("oss://bucket/table"), 
"meta")
+                                .get(SHOW_DIR_TIMESTAMP))
+                .isEqualTo("true");
+    }
+
     @Test
     public void testCreateBlobClientUsesConfiguredSts() {
         Options options = new Options();

Reply via email to