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();