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

thomasm pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git


The following commit(s) were added to refs/heads/trunk by this push:
     new a4db47ffbc OAK-11866 Support for datastore files without length (#2458)
a4db47ffbc is described below

commit a4db47ffbc46f2de85dc4929dd58cc7ec7541a17
Author: Thomas Mueller <[email protected]>
AuthorDate: Mon Aug 18 18:57:56 2025 +0200

    OAK-11866 Support for datastore files without length (#2458)
    
    * OAK-11866 Support for datastore files without length
    
    * OAK-11866 Support for datastore files without length
---
 .../indexer/document/flatfile/analysis/modules/BinaryId.java   | 10 ++++++++--
 .../document/flatfile/analysis/modules/BinarySizeTest.java     | 10 ++++++++++
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git 
a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/analysis/modules/BinaryId.java
 
b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/analysis/modules/BinaryId.java
index 741c1cceae..1028cd8a47 100644
--- 
a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/analysis/modules/BinaryId.java
+++ 
b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/analysis/modules/BinaryId.java
@@ -39,8 +39,14 @@ public class BinaryId {
         // <hex digits or '-'>#<length>
         // the '-' is ignored
         int hashIndex = identifier.lastIndexOf('#');
-        String length = identifier.substring(hashIndex + 1);
-        this.length = Long.parseLong(length);
+        if (hashIndex >= 0) {
+            String lengthString = identifier.substring(hashIndex + 1);
+            this.length = Long.parseLong(lengthString);
+        } else {
+            // we do not know the length
+            this.length = 0;
+            hashIndex = identifier.length();
+        }
         StringBuilder buff = new StringBuilder(48);
         for (int i = 0; i < hashIndex; i++) {
             char c = identifier.charAt(i);
diff --git 
a/oak-run-commons/src/test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/analysis/modules/BinarySizeTest.java
 
b/oak-run-commons/src/test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/analysis/modules/BinarySizeTest.java
index a7b38b3cd2..fa97bf707b 100644
--- 
a/oak-run-commons/src/test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/analysis/modules/BinarySizeTest.java
+++ 
b/oak-run-commons/src/test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/analysis/modules/BinarySizeTest.java
@@ -28,6 +28,16 @@ import 
org.apache.jackrabbit.oak.index.indexer.document.flatfile.analysis.stream
 import org.junit.Test;
 
 public class BinarySizeTest {
+    
+    @Test
+    public void blobIdTest() {
+        BinaryId id = new BinaryId("0102030405060708090a0b0c0d0e0f1011121314");
+        assertEquals(0, id.getLength());
+        assertEquals(-7150699912153859141L, id.getLongHash());
+        id = new BinaryId("0102030405060708090a0b0c0d0e0f1011121314#10000");
+        assertEquals(10000, id.getLength());
+        assertEquals(-7150699912153867093L, id.getLongHash());
+    }
 
     @Test
     public void nodeNameFilter() {

Reply via email to