HBASE-9093 Hbase client API: Restore the writeToWal method

git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1508702 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Michael Stack 2013-07-31 01:20:10 +00:00
parent 85fed73517
commit e6d1848bb7
2 changed files with 100 additions and 0 deletions

View File

@ -178,6 +178,34 @@ public abstract class Mutation extends OperationWithAttributes implements Row, C
return this.durability;
}
/**
* Set the durability for this mutation. If this is set to true,
* the default durability of the table is set.
* @param writeToWal
*/
@Deprecated
public void setWriteToWal(boolean writeToWal) {
if(!writeToWal) {
setDurability(Durability.SKIP_WAL);
} else {
// This is required to handle the case where this method is
// called twice, first with writeToWal = false,
// and then with writeToWal = true
setDurability(Durability.USE_DEFAULT);
}
}
/**
* Get the durability for this mutation.
* @return - true if this mutation is set to write to the WAL either
* synchronously, asynchronously or fsync to disk on the file system.
* - to get the exact durability, use the {#getDurability} method.
*/
@Deprecated
public boolean getWriteToWal() {
return Durability.SKIP_WAL != getDurability();
}
/**
* Method for retrieving the put's familyMap
* @return familyMap

View File

@ -0,0 +1,72 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.hadoop.hbase.client;
import org.apache.hadoop.hbase.SmallTests;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.categories.Category;
/**
* Tests for testing methods added in HBASE-9093. This set of tests is meant
* to test the {@linkplain Mutation#setWriteToWal(boolean)}
* and {@linkplain Mutation#getWriteToWal()} methods which provide
* a compatibility layer with HBase versions < 95's client side WAL semantics.
*/
@Category(SmallTests.class)
public class TestPutWriteToWal {
private Put put;
@Before
public void setUp() throws Exception {
put = new Put("test".getBytes());
}
@Test
public void testWriteToWal(){
put.setWriteToWal(true);
Assert.assertEquals(Durability.USE_DEFAULT, put.getDurability());
}
@Test
public void testNoWriteToWal() {
put.setWriteToWal(false);
Assert.assertEquals(Durability.SKIP_WAL, put.getDurability());
}
@Test
public void testWriteToWalSwitch() {
put.setWriteToWal(false);
Assert.assertEquals(Durability.SKIP_WAL, put.getDurability());
put.setWriteToWal(true);
Assert.assertEquals(Durability.USE_DEFAULT, put.getDurability());
}
@Test
public void testPutCopy() {
put.setWriteToWal(false);
Put putCopy1 = new Put(put);
Assert.assertEquals(Durability.SKIP_WAL, putCopy1.getDurability());
put.setWriteToWal(true);
Put putCopy2 = new Put(put);
Assert.assertEquals(Durability.USE_DEFAULT, putCopy2.getDurability());
}
}