Merge pull request #66 from caskdata/feature/tephra-112_tx-snapshot-stats

TEPHRA-112 Log basic stats when loading a transaction snapshot
diff --git a/tephra-core/src/main/java/co/cask/tephra/coprocessor/TransactionStateCache.java b/tephra-core/src/main/java/co/cask/tephra/coprocessor/TransactionStateCache.java
index 966c389..2e92209 100644
--- a/tephra-core/src/main/java/co/cask/tephra/coprocessor/TransactionStateCache.java
+++ b/tephra-core/src/main/java/co/cask/tephra/coprocessor/TransactionStateCache.java
@@ -157,6 +157,9 @@
         } else {
           latestState = currentSnapshot;
           LOG.info("Transaction state reloaded with snapshot from " + latestState.getTimestamp());
+          if (LOG.isDebugEnabled()) {
+            LOG.debug("Latest transaction snapshot: " + latestState.toString());
+          }
           lastRefresh = now;
         }
       } else {
diff --git a/tephra-core/src/main/java/co/cask/tephra/persist/HDFSTransactionStateStorage.java b/tephra-core/src/main/java/co/cask/tephra/persist/HDFSTransactionStateStorage.java
index efe5803..ea886eb 100644
--- a/tephra-core/src/main/java/co/cask/tephra/persist/HDFSTransactionStateStorage.java
+++ b/tephra-core/src/main/java/co/cask/tephra/persist/HDFSTransactionStateStorage.java
@@ -24,6 +24,7 @@
 import com.google.common.base.Function;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
+import com.google.common.io.CountingInputStream;
 import com.google.common.primitives.Longs;
 import com.google.inject.Inject;
 import org.apache.hadoop.conf.Configuration;
@@ -161,7 +162,10 @@
   }
 
   private TransactionSnapshot readSnapshotInputStream(InputStream in) throws IOException {
-    return codecProvider.decode(in);
+    CountingInputStream countingIn = new CountingInputStream(in);
+    TransactionSnapshot snapshot = codecProvider.decode(countingIn);
+    LOG.info("Read encoded transaction snapshot of {} bytes", countingIn.getCount());
+    return snapshot;
   }
 
   private TransactionSnapshot readSnapshotFile(Path filePath) throws IOException {