Author: adulceanu
Date: Mon Sep 25 11:24:59 2017
New Revision: 1809603

URL: http://svn.apache.org/viewvc?rev=1809603&view=rev
Log:
OAK-6673 - Improve cold standby logging

Modified:
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClient.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSync.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSyncExecution.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyDiff.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/ChunkedBlobStream.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/ResponseDecoder.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyReferencesReader.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/FileStoreUtil.java

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClient.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClient.java?rev=1809603&r1=1809602&r2=1809603&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClient.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClient.java
 Mon Sep 25 11:24:59 2017
@@ -212,4 +212,8 @@ class StandbyClient implements AutoClose
         return response.getReferences();
     }
 
+    public int getReadTimeoutMs() {
+        return readTimeoutMs;
+    }
+    
 }

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSync.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSync.java?rev=1809603&r1=1809602&r2=1809603&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSync.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSync.java
 Mon Sep 25 11:24:59 2017
@@ -103,7 +103,7 @@ public final class StandbyClientSync imp
         try {
             jmxServer.registerMBean(new StandardMBean(this, 
ClientStandbyStatusMBean.class), new ObjectName(this.getMBeanName()));
         } catch (Exception e) {
-            log.error("can register standby status mbean", e);
+            log.error("cannot register standby status mbean", e);
         }
     }
 
@@ -119,7 +119,7 @@ public final class StandbyClientSync imp
         try {
             jmxServer.unregisterMBean(new ObjectName(this.getMBeanName()));
         } catch (Exception e) {
-            log.error("can unregister standby status mbean", e);
+            log.error("cannot unregister standby status mbean", e);
         }
         closeGroup();
         observer.unregister();

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSyncExecution.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSyncExecution.java?rev=1809603&r1=1809602&r2=1809603&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSyncExecution.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSyncExecution.java
 Mon Sep 25 11:24:59 2017
@@ -78,7 +78,7 @@ class StandbyClientSyncExecution {
         compareAgainstBaseState(current, before, builder);
         boolean ok = store.getRevisions().setHead(before.getRecordId(), 
remoteHead);
         store.flush();
-        log.debug("updated head state successfully: {} in {}ms.", ok, 
System.currentTimeMillis() - t);
+        log.info("updated head state successfully: {} in {}ms.", ok, 
System.currentTimeMillis() - t);
     }
 
     @Nullable

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyDiff.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyDiff.java?rev=1809603&r1=1809602&r2=1809603&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyDiff.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyDiff.java
 Mon Sep 25 11:24:59 2017
@@ -204,7 +204,8 @@ class StandbyDiff implements NodeStateDi
         InputStream in = client.getBlob(blobId);
 
         if (in == null) {
-            throw new IllegalStateException("Unable to load remote blob " + 
blobId + " at " + path + "#" + pName);
+            throw new IllegalStateException("Unable to load remote blob " + 
blobId + " at " + path + "#" + pName
+                    + " in " + client.getReadTimeoutMs() + "ms. Please 
increase the timeout and try again.");
         }
 
         try {

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/ChunkedBlobStream.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/ChunkedBlobStream.java?rev=1809603&r1=1809602&r2=1809603&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/ChunkedBlobStream.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/ChunkedBlobStream.java
 Mon Sep 25 11:24:59 2017
@@ -17,6 +17,8 @@
 
 package org.apache.jackrabbit.oak.segment.standby.codec;
 
+import static 
org.apache.jackrabbit.oak.segment.standby.server.FileStoreUtil.roundDiv;
+
 import java.io.InputStream;
 import java.io.PushbackInputStream;
 
@@ -123,8 +125,8 @@ public class ChunkedBlobStream implement
             decorated = decorateRawBuffer(allocator, buffer);
 
             offset += written;
-            log.info("Sending chunk {}/{} of size {} to client {}", 
roundDiv(offset, chunkSize),
-                    roundDiv(length, chunkSize), written, clientId);
+            log.debug("Sending chunk {}/{} of size {} from blob {} to client 
{}", roundDiv(offset, chunkSize),
+                    roundDiv(length, chunkSize), written, blobId, clientId);
 
             release = false;
             return decorated;
@@ -159,10 +161,6 @@ public class ChunkedBlobStream implement
         return out;
     }
 
-    private static int roundDiv(long x, int y) {
-        return (int) Math.ceil((double) x / (double) y);
-    }
-
     private byte createMask(int bytesRead) {
         byte mask = 0;
         if (offset == 0) {

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/ResponseDecoder.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/ResponseDecoder.java?rev=1809603&r1=1809602&r2=1809603&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/ResponseDecoder.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/ResponseDecoder.java
 Mon Sep 25 11:24:59 2017
@@ -19,6 +19,7 @@ package org.apache.jackrabbit.oak.segmen
 
 import static java.util.Arrays.asList;
 import static java.util.Collections.emptyList;
+import static 
org.apache.jackrabbit.oak.segment.standby.server.FileStoreUtil.roundDiv;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -70,6 +71,8 @@ public class ResponseDecoder extends Byt
         }
     }
     
+    private int blobChunkSize;
+    
     @Override
     protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> 
out) throws Exception {
         int length = in.readInt();
@@ -122,7 +125,7 @@ public class ResponseDecoder extends Byt
         out.add(new GetSegmentResponse(null, segmentId, data));
     }
 
-    private static void decodeGetBlobResponse(int length, ByteBuf in, 
List<Object> out) throws IOException {
+    private void decodeGetBlobResponse(int length, ByteBuf in, List<Object> 
out) throws IOException {
         byte mask = in.readByte();
         long blobLength = in.readLong();
         
@@ -134,6 +137,8 @@ public class ResponseDecoder extends Byt
         
         // START_CHUNK flag enabled
         if ((mask & (1 << 0)) != 0) {
+            blobChunkSize = in.readableBytes() - 8;
+            
             if (tempFile.exists()) {
                 log.debug("Detected previous incomplete transfer for {}. 
Cleaning up...", blobId);
                 Files.delete(tempFile.toPath());
@@ -142,7 +147,8 @@ public class ResponseDecoder extends Byt
 
         long hash = in.readLong();
 
-        log.debug("Received chunk of size {} from blob {} ", 
in.readableBytes(), blobId);
+        log.debug("Received chunk {}/{} of size {} from blob {}", 
roundDiv(tempFile.length() + in.readableBytes(), blobChunkSize),
+                roundDiv(blobLength, blobChunkSize), in.readableBytes(), 
blobId);
         byte[] chunkData = new byte[in.readableBytes()];
         in.readBytes(chunkData);
 
@@ -164,7 +170,8 @@ public class ResponseDecoder extends Byt
                 FileInputStream fis = new 
DeleteOnCloseFileInputStream(tempFile);
                 out.add(new GetBlobResponse(null, blobId, fis, 
fis.getChannel().size()));
             } else {
-                log.debug("Size mismatch for blob {}", blobId);
+                log.debug("Blob {} discarded due to size mismatch. Expected 
size: {}, actual size: {} ", blobId,
+                        blobLength, tempFile.length());
             }
         }
     }

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=1809603&r1=1809602&r2=1809603&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 Sep 25 11:24:59 2017
@@ -25,13 +25,9 @@ import java.util.UUID;
 
 import org.apache.jackrabbit.oak.segment.Segment;
 import org.apache.jackrabbit.oak.segment.file.FileStore;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 class DefaultStandbyReferencesReader implements StandbyReferencesReader {
 
-    private static final Logger log = 
LoggerFactory.getLogger(DefaultStandbyReferencesReader.class);
-
     private final FileStore store;
 
     DefaultStandbyReferencesReader(FileStore store) {

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/FileStoreUtil.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/FileStoreUtil.java?rev=1809603&r1=1809602&r2=1809603&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/FileStoreUtil.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/FileStoreUtil.java
 Mon Sep 25 11:24:59 2017
@@ -25,7 +25,7 @@ import org.apache.jackrabbit.oak.segment
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-final class FileStoreUtil {
+public final class FileStoreUtil {
 
     private static final Logger log = 
LoggerFactory.getLogger(FileStoreUtil.class);
 
@@ -33,6 +33,10 @@ final class FileStoreUtil {
         // Prevent instantiation
     }
 
+    public static int roundDiv(long x, int y) {
+        return (int) Math.ceil((double) x / (double) y);
+    }
+    
     static Segment readSegmentWithRetry(FileStore store, SegmentId id) {
         for (int i = 0; i < 160; i++) {
             if (store.containsSegment(id)) {


Reply via email to