Repository: hbase
Updated Branches:
  refs/heads/0.98 c5d7fcde9 -> e78224bd6


HBASE-12095 SecureWALCellCodec should handle the case where encryption is 
disabled


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/e78224bd
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/e78224bd
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/e78224bd

Branch: refs/heads/0.98
Commit: e78224bd66a0adbd08e6eea9a3dd494d17f861c3
Parents: c5d7fcd
Author: Ted Yu <te...@apache.org>
Authored: Wed Oct 1 14:20:02 2014 +0000
Committer: Ted Yu <te...@apache.org>
Committed: Wed Oct 1 14:20:02 2014 +0000

----------------------------------------------------------------------
 .../hbase/regionserver/wal/SecureWALCellCodec.java   | 15 ++++++++++++++-
 .../regionserver/wal/TestHLogReaderOnSecureHLog.java | 14 +++++++++-----
 2 files changed, 23 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/e78224bd/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/SecureWALCellCodec.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/SecureWALCellCodec.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/SecureWALCellCodec.java
index 9b3c1b3..ac242bf 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/SecureWALCellCodec.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/SecureWALCellCodec.java
@@ -46,6 +46,10 @@ public class SecureWALCellCodec extends WALCellCodec {
   private Encryptor encryptor;
   private Decryptor decryptor;
 
+  public SecureWALCellCodec(Configuration conf, CompressionContext 
compression) {
+    super(conf, compression);
+  }
+
   public SecureWALCellCodec(Configuration conf, Encryptor encryptor) {
     super(conf, null);
     this.encryptor = encryptor;
@@ -68,11 +72,16 @@ public class SecureWALCellCodec extends WALCellCodec {
     public EncryptedKvDecoder(InputStream in, Decryptor decryptor) {
       super(in);
       this.decryptor = decryptor;
-      this.iv = new byte[decryptor.getIvLength()];
+      if (decryptor != null) {
+        this.iv = new byte[decryptor.getIvLength()];
+      }
     }
 
     @Override
     protected Cell parseCell() throws IOException {
+      if (this.decryptor == null) {
+        return super.parseCell();
+      }
       int ivLength = 0;
       try {
         ivLength = StreamUtils.readRawVarint32(in);
@@ -171,6 +180,10 @@ public class SecureWALCellCodec extends WALCellCodec {
     @Override
     public void write(Cell cell) throws IOException {
       if (!(cell instanceof KeyValue)) throw new IOException("Cannot write 
non-KV cells to WAL");
+      if (encryptor == null) {
+        super.write(cell);
+        return;
+      }
 
       KeyValue kv = (KeyValue)cell;
       byte[] kvBuffer = kv.getBuffer();

http://git-wip-us.apache.org/repos/asf/hbase/blob/e78224bd/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestHLogReaderOnSecureHLog.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestHLogReaderOnSecureHLog.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestHLogReaderOnSecureHLog.java
index b09d361..e3f8ed3 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestHLogReaderOnSecureHLog.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestHLogReaderOnSecureHLog.java
@@ -42,7 +42,6 @@ import org.apache.hadoop.hbase.MediumTests;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.io.crypto.KeyProviderForTesting;
 import 
org.apache.hadoop.hbase.protobuf.generated.ZooKeeperProtos.SplitLogTask.RecoveryMode;
-import 
org.apache.hadoop.hbase.regionserver.wal.TestCustomWALCellCodec.CustomWALCellCodec;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.FSUtils;
 import org.apache.hadoop.hbase.zookeeper.ZKSplitLog;
@@ -73,11 +72,16 @@ public class TestHLogReaderOnSecureHLog {
     conf.setBoolean(HConstants.ENABLE_WAL_ENCRYPTION, true);
   }
 
-  private Path writeWAL(String tblName) throws IOException {
+  private Path writeWAL(String tblName, boolean encrypt) throws IOException {
     Configuration conf = TEST_UTIL.getConfiguration();
     String clsName = conf.get(WALCellCodec.WAL_CELL_CODEC_CLASS_KEY, 
WALCellCodec.class.getName());
-    conf.setClass(WALCellCodec.WAL_CELL_CODEC_CLASS_KEY, 
CustomWALCellCodec.class,
+    conf.setClass(WALCellCodec.WAL_CELL_CODEC_CLASS_KEY, 
SecureWALCellCodec.class,
       WALCellCodec.class);
+    if (encrypt) {
+      conf.set("hbase.regionserver.wal.encryption", "true");
+    } else {
+      conf.set("hbase.regionserver.wal.encryption", "false");
+    }
     TableName tableName = TableName.valueOf(tblName);
     HTableDescriptor htd = new HTableDescriptor(tableName);
     htd.addFamily(new HColumnDescriptor(tableName.getName()));
@@ -115,7 +119,7 @@ public class TestHLogReaderOnSecureHLog {
     conf.setClass("hbase.regionserver.hlog.writer.impl", 
SecureProtobufLogWriter.class,
       HLog.Writer.class);
     FileSystem fs = TEST_UTIL.getTestFileSystem();
-    Path walPath = writeWAL("testHLogReaderOnSecureHLog");
+    Path walPath = writeWAL("testHLogReaderOnSecureHLog", true);
 
     // Insure edits are not plaintext
     long length = fs.getFileStatus(walPath).getLen();
@@ -159,7 +163,7 @@ public class TestHLogReaderOnSecureHLog {
     conf.setClass("hbase.regionserver.hlog.writer.impl", 
ProtobufLogWriter.class,
       HLog.Writer.class);
     FileSystem fs = TEST_UTIL.getTestFileSystem();
-    Path walPath = writeWAL("testSecureHLogReaderOnHLog");
+    Path walPath = writeWAL("testSecureHLogReaderOnHLog", false);
 
     // Ensure edits are plaintext
     long length = fs.getFileStatus(walPath).getLen();

Reply via email to