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 al...@apache.org on 2016/10/10 16:07:46 UTC

svn commit: r1764144 - /jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyReferencesReader.java

Author: alexparvulescu
Date: Mon Oct 10 16:07:46 2016
New Revision: 1764144

URL: http://svn.apache.org/viewvc?rev=1764144&view=rev
Log:
OAK-4917 DefaultStandbyReferencesReader does not re-attempt to read segment upon failure
 patch provided by Timothee Maret


Modified:
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyReferencesReader.java

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyReferencesReader.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyReferencesReader.java?rev=1764144&r1=1764143&r2=1764144&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyReferencesReader.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyReferencesReader.java Mon Oct 10 16:07:46 2016
@@ -21,6 +21,7 @@ import static com.google.common.collect.
 
 import java.util.List;
 import java.util.UUID;
+import java.util.concurrent.TimeUnit;
 
 import org.apache.jackrabbit.oak.segment.Segment;
 import org.apache.jackrabbit.oak.segment.SegmentId;
@@ -62,12 +63,24 @@ class DefaultStandbyReferencesReader imp
     }
 
     private Segment readSegment(SegmentId id) {
-        try {
-            return store.readSegment(id);
-        } catch (SegmentNotFoundException e) {
-            log.warn(String.format("Unable to read segment %s", id), e);
+
+        for (int i = 0; i < 10; i++) {
+            try {
+                return store.readSegment(id);
+            } catch (SegmentNotFoundException e) {
+                log.warn("Unable to read segment, waiting...", e);
+            }
+
+            try {
+                TimeUnit.MILLISECONDS.sleep(2000);
+            } catch (InterruptedException e) {
+                Thread.currentThread().interrupt();
+                return null;
+            }
         }
 
+        log.warn("Unable to read segment %s", id);
+
         return null;
     }