Thanks Ted, Created a JIRA with attached test case.
https://issues.apache.org/jira/browse/HBASE-8626 On Sun, May 26, 2013 at 6:05 PM, Ted Yu <[email protected]> wrote: > There is TestAtomicOperation.java in the code base but obviously it doesn't > cover your use case. > > I assume you are using 0.94.x > I put your test case > in > src/test/java/org/apache/hadoop/hbase/regionserver/TestHBaseRowMutations.java > but found that the test didn't start a cluster. > Therefore it got stuck here: > at org.apache.hadoop.hbase.client.HBaseAdmin.<init>(HBaseAdmin.java:126) > > Do you mind opening a JIRA and attach your test there ? > > Thanks > > On Sun, May 26, 2013 at 3:31 AM, Vinod V <[email protected]> wrote: > > > Below is a test case describing the issues I am facing when doing the > > following RowMutations: > > > > 1. Delete a column family of a row > > 2. Put new columns and values to the same column family of same row > > > > Seems like the column family gets deleted fine but the Puts do not happen > > even though they are part of the same row mutation. > > > > import junit.framework.Assert; > > import org.apache.hadoop.conf.Configuration; > > import org.apache.hadoop.hbase.HBaseConfiguration; > > import org.apache.hadoop.hbase.HColumnDescriptor; > > import org.apache.hadoop.hbase.HTableDescriptor; > > import org.apache.hadoop.hbase.TableExistsException; > > import org.apache.hadoop.hbase.client.*; > > import org.apache.hadoop.hbase.util.Bytes; > > import org.junit.Before; > > import org.junit.BeforeClass; > > import org.junit.Test; > > > > import java.util.NavigableMap; > > > > public class TestHBaseRowMutations { > > static String tableName = "nnn"; > > static byte[] cf1 = Bytes.toBytes("cf1"); > > static byte[] row = Bytes.toBytes("r1"); > > static HTablePool hTablePool; > > > > @BeforeClass > > public static void beforeClass() throws Exception { > > Configuration config = HBaseConfiguration.create(); > > hTablePool = new HTablePool(config, Integer.MAX_VALUE); > > HBaseAdmin admin = new HBaseAdmin(config); > > HTableDescriptor tableDescriptor = new > HTableDescriptor(tableName); > > tableDescriptor.addFamily(new HColumnDescriptor(cf1)); > > try { > > admin.createTable(tableDescriptor); > > } catch (TableExistsException ignored){} > > } > > > > @Before > > public void before() throws Exception { > > HTableInterface table = hTablePool.getTable(tableName); > > try { > > Delete delete = new Delete(row); > > table.delete(delete); > > System.out.println("deleted old row"); > > > > Put put = new Put(row); > > put.add(cf1, Bytes.toBytes("c1"), Bytes.toBytes("v1")); > > put.add(cf1, Bytes.toBytes("c11"), Bytes.toBytes("v11")); > > table.put(put); > > System.out.println("Created row with seed data"); > > } finally { > > table.close(); > > } > > } > > > > > > @Test > > public void testColumnFamilyDeleteRM() throws Exception { > > HTableInterface table = hTablePool.getTable(tableName); > > try { > > RowMutations rm =new RowMutations(row); > > > > //delete column family cf1 > > Delete delete = new Delete(row); > > delete.deleteFamily(cf1); > > rm.add(delete); > > System.out.println("Added delete of cf1 column family to row > > mutation"); > > > > //add new columns to same column family cf1 > > Put put = new Put(row); > > put.add(cf1, Bytes.toBytes("c1"), Bytes.toBytes("new_v1")); > > put.add(cf1, Bytes.toBytes("c11"), Bytes.toBytes("new_v11")); > > rm.add(put); > > System.out.println("Added puts of cf1 column family to row > > mutation"); > > > > //atomic mutate the row > > table.mutateRow(rm); > > System.out.println("Mutated row"); > > > > //now read the column family cf1 back > > Result result = table.get(new Get(row)); > > NavigableMap<byte[], byte[]> familyMap = > > result.getFamilyMap(cf1); > > > > *//column family cf1 should have 2 columns because of the Put > > above > > //------Following assert fails as cf1 does not exist anymore, > > why does cf1 not exist anymore?------- > > Assert.assertNotNull(familyMap);* > > Assert.assertEquals(2, familyMap.size()); > > } finally { > > table.close(); > > } > > } > > > > } > > > > > > > > -- > > View this message in context: > > > http://apache-hbase.679495.n3.nabble.com/Using-RowMutations-to-replace-all-columns-of-a-row-tp4045247p4045263.html > > Sent from the HBase User mailing list archive at Nabble.com. > > >
