Return-Path: X-Original-To: apmail-hbase-issues-archive@www.apache.org Delivered-To: apmail-hbase-issues-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 6861B109F7 for ; Fri, 2 Aug 2013 20:55:51 +0000 (UTC) Received: (qmail 69632 invoked by uid 500); 2 Aug 2013 20:55:51 -0000 Delivered-To: apmail-hbase-issues-archive@hbase.apache.org Received: (qmail 69601 invoked by uid 500); 2 Aug 2013 20:55:51 -0000 Mailing-List: contact issues-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list issues@hbase.apache.org Received: (qmail 69592 invoked by uid 99); 2 Aug 2013 20:55:51 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Aug 2013 20:55:51 +0000 Date: Fri, 2 Aug 2013 20:55:51 +0000 (UTC) From: "Ted Yu (JIRA)" To: issues@hbase.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Updated] (HBASE-9115) HTableInterface.append operation may overwrites values MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/HBASE-9115?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Yu updated HBASE-9115: -------------------------- Status: Open (was: Patch Available) > HTableInterface.append operation may overwrites values > ------------------------------------------------------ > > Key: HBASE-9115 > URL: https://issues.apache.org/jira/browse/HBASE-9115 > Project: HBase > Issue Type: Bug > Affects Versions: 0.94.10 > Environment: MAC OS X 10.8.4, Hbase in the pseudo-distributed mode, hadoop v1.2.0, Hbase Java API based client. > *hdfs-site.xml*: > {code:xml} > > > dfs.replication > 1 > > > dfs.support.append > true > > > {code} > *hbase-site.xml*: > {code:xml} > > > hbase.rootdir > hdfs://localhost:9000/hbase > > > hbase.cluster.distributed > true > > > hbase.zookeeper.quorum > localhost > > > dfs.support.append > true > > > {code} > Reporter: Aleksandr B > Assignee: Ted Yu > Priority: Critical > Fix For: 0.95.2, 0.94.11 > > Attachments: 9115-0.94.txt, 9115-trunk.txt > > > I use Hbase Java API and I try to append values Bytes.toBytes("one two") and Bytes.toBytes(" three") in 3 columns. > Only for 2 out of these 3 columns the result is "one two three". > *Output from the hbase shell:* > {noformat} > hbase(main):008:0* scan "mytesttable" > ROW COLUMN+CELL > mytestRowKey column=TestA:dlbytes, timestamp=1375436156140, value=one two three > mytestRowKey column=TestA:tbytes, timestamp=1375436156140, value=one two three > mytestRowKey column=TestA:ulbytes, timestamp=1375436156140, value= three > 1 row(s) in 0.0280 seconds > {noformat} > *My test code:* > {code:title=Database.java|borderStyle=solid} > import static org.junit.Assert.*; > import java.io.IOException; > > 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.client.HBaseAdmin; > import org.apache.hadoop.hbase.client.HTableInterface; > import org.apache.hadoop.hbase.client.HTablePool; > import org.apache.hadoop.hbase.client.Append; > import org.apache.hadoop.hbase.client.Result; > import org.apache.hadoop.hbase.util.Bytes; > import org.junit.Test; > ... > @Test > public void testAppend() throws IOException { > byte [] rowKey = Bytes.toBytes("mytestRowKey"); > byte [] column1 = Bytes.toBytes("ulbytes"); > byte [] column2 = Bytes.toBytes("dlbytes"); > byte [] column3 = Bytes.toBytes("tbytes"); > String part11 = "one two"; > String part12 = " three"; > String cFamily = "TestA"; > String TABLE = "mytesttable"; > Configuration conf = HBaseConfiguration.create(); > HTablePool pool = new HTablePool(conf, 10); > HBaseAdmin admin = new HBaseAdmin(conf); > > if(admin.tableExists(TABLE)){ > admin.disableTable(TABLE); > admin.deleteTable(TABLE); > } > > HTableDescriptor tableDescriptor = new HTableDescriptor(TABLE); > HColumnDescriptor hcd = new HColumnDescriptor(cFamily); > hcd.setMaxVersions(1); > tableDescriptor.addFamily(hcd); > admin.createTable(tableDescriptor); > HTableInterface table = pool.getTable(TABLE); > > Append a = new Append(rowKey); > a.setReturnResults(false); > a.add(Bytes.toBytes(cFamily), column1, Bytes.toBytes(part11)); > a.add(Bytes.toBytes(cFamily), column2, Bytes.toBytes(part11)); > a.add(Bytes.toBytes(cFamily), column3, Bytes.toBytes(part11)); > table.append(a); > a = new Append(rowKey); > a.add(Bytes.toBytes(cFamily), column1, Bytes.toBytes(part12)); > a.add(Bytes.toBytes(cFamily), column2, Bytes.toBytes(part12)); > a.add(Bytes.toBytes(cFamily), column3, Bytes.toBytes(part12)); > Result result = table.append(a); > byte [] resultForColumn1 = result.getValue(Bytes.toBytes(cFamily), column1); > byte [] resultForColumn2 = result.getValue(Bytes.toBytes(cFamily), column2); > byte [] resultForColumn3 = result.getValue(Bytes.toBytes(cFamily), column3); > if (resultForColumn1 == null || resultForColumn2 == null || resultForColumn3 == null) > System.out.println("The DB table contains these values but they are never given back, strange..."); > else { > assertEquals(0, Bytes.compareTo(Bytes.toBytes(part11 + part12), > resultForColumn1)); > assertEquals(0, Bytes.compareTo(Bytes.toBytes(part11 + part12), > resultForColumn2)); > assertEquals(0, Bytes.compareTo(Bytes.toBytes(part11 + part12), > resultForColumn3)); > } > HTable t = new HTable(conf, TABLE); > Get getOperation = new Get(rowKey); > getOperation.addColumn(Bytes.toBytes(cFamily), column1); > Result res = t.get(getOperation); > assertEquals(0, Bytes.compareTo(Bytes.toBytes(part11 + part12), res.getValue(Bytes.toBytes(cFamily), column1))); > } > {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira