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 {