You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by to...@apache.org on 2019/09/06 21:10:19 UTC

svn commit: r1866534 - in /jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure: AzureJournalFile.java ReverseFileReader.java

Author: tomekr
Date: Fri Sep  6 21:10:18 2019
New Revision: 1866534

URL: http://svn.apache.org/viewvc?rev=1866534&view=rev
Log:
OAK-8604: Keep the last journal entry in metadata

Modified:
    jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzureJournalFile.java
    jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/ReverseFileReader.java

Modified: jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzureJournalFile.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzureJournalFile.java?rev=1866534&r1=1866533&r2=1866534&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzureJournalFile.java (original)
+++ jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzureJournalFile.java Fri Sep  6 21:10:18 2019
@@ -110,6 +110,10 @@ public class AzureJournalFile implements
 
         private ReverseFileReader reader;
 
+        private boolean metadataFetched;
+
+        private boolean firstLineReturned;
+
         private AzureJournalReader(CloudBlob blob) {
             this.blob = blob;
         }
@@ -118,7 +122,18 @@ public class AzureJournalFile implements
         public String readLine() throws IOException {
             if (reader == null) {
                 try {
+                    if (!metadataFetched) {
+                        blob.downloadAttributes();
+                        metadataFetched = true;
+                        if (blob.getMetadata().containsKey("lastEntry")) {
+                            firstLineReturned = true;
+                            return blob.getMetadata().get("lastEntry");
+                        }
+                    }
                     reader = new ReverseFileReader(blob);
+                    if (firstLineReturned) {
+                        while("".equals(reader.readLine())); // the first line was already returned, let's fast-forward it
+                    }
                 } catch (StorageException e) {
                     throw new IOException(e);
                 }
@@ -143,6 +158,7 @@ public class AzureJournalFile implements
                 try {
                     currentBlob = directory.getAppendBlobReference(getJournalFileName(1));
                     currentBlob.createOrReplace();
+                    currentBlob.downloadAttributes();
                 } catch (URISyntaxException | StorageException e) {
                     throw new IOException(e);
                 }
@@ -179,6 +195,8 @@ public class AzureJournalFile implements
             }
             try {
                 currentBlob.appendText(line + "\n");
+                currentBlob.getMetadata().put("lastEntry", line);
+                currentBlob.uploadMetadata();
                 blockCount++;
             } catch (StorageException e) {
                 throw new IOException(e);

Modified: jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/ReverseFileReader.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/ReverseFileReader.java?rev=1866534&r1=1866533&r2=1866534&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/ReverseFileReader.java (original)
+++ jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/ReverseFileReader.java Fri Sep  6 21:10:18 2019
@@ -44,7 +44,7 @@ public class ReverseFileReader {
     private int fileOffset;
 
     public ReverseFileReader(CloudBlob blob) throws StorageException {
-        this(blob, BUFFER_SIZE);
+        this (blob, BUFFER_SIZE);
     }
 
     public ReverseFileReader(CloudBlob blob, int bufferSize) throws StorageException {