Hi Duo,

Thank you for the response. As per the design, Can I please know, where
this NEW_VERSION_BEHAVIOR is intended to work with Buffered Mutator? For
example DELETE PUT PUT sequence ( in Buffered Mutator ) for same row,
column will it work without any mask issues as previously considered as
limitations HBase?

Regards
Kevin

On Tue, Apr 16, 2019 at 2:03 PM 张铎(Duo Zhang) <[email protected]> wrote:

> Sorry, this behavior has not been tested critically yet...
>
> The guy who developed this feature has left and we haven't enabled this
> feature in our cluster yet.
>
> So feel free to open issues if you find some bugs of it. We will try to fix
> it if possible.
>
> Thanks.
>
> Kevin Ratnasekera <[email protected]> 于2019年4月16日周二 上午3:09写道:
>
> > Code for delete row issue in cases of qualifier = null, even after row is
> > deleted it will return non null value,
> >
> > @Test
> > public void testing() throws IOException {
> >
> >   Connection conn = ConnectionFactory.createConnection(conf);
> >
> >   TableName test = TableName.valueOf("Test");
> >   TableDescriptorBuilder tableDescBuilder =
> > TableDescriptorBuilder.newBuilder(test);
> >   ColumnFamilyDescriptorBuilder columnDescBuilder =
> > ColumnFamilyDescriptorBuilder
> >           .newBuilder(Bytes.toBytes("test-family"));
> >   columnDescBuilder.setNewVersionBehavior(true);
> >   ColumnFamilyDescriptor columnDescriptor = columnDescBuilder.build();
> >   tableDescBuilder.addColumnFamily(columnDescriptor);
> >   TableDescriptor tableDescriptor = tableDescBuilder.build();
> >
> >   conn.getAdmin().createTable(tableDescriptor);
> >
> >   Table table = conn.getTable(test);
> >
> >   Put put = new Put(Bytes.toBytes("com.example/http"));
> >   put.addColumn(Bytes.toBytes("test-family"), null,
> > Bytes.toBytes("test-value"));
> >   table.put(put);
> >
> >   Delete del = new Delete(Bytes.toBytes("com.example/http"));
> >   table.delete(del);
> >
> >   Get get = new Get(Bytes.toBytes("com.example/http"));
> >   //get.addColumn(Bytes.toBytes("test-family"), null);
> >   Result result = table.get(get);
> >   byte [] value = result.getValue(Bytes.toBytes("test-family"), null);
> >
> >   if(value ==  null) {
> >      // Testing purposes
> >   }
> > }
> >
> >
> > On Mon, Apr 15, 2019 at 10:51 PM Kevin Ratnasekera <
> > [email protected]>
> > wrote:
> >
> > > Hi all,
> > >
> > > Here's test code I used for testing purposes and I would like to know
> the
> > > behavior,
> > >
> > >
> > > @Test
> > > public void testing() throws IOException {
> > >
> > >   Connection conn = ConnectionFactory.createConnection(conf);
> > >
> > >   TableName test = TableName.valueOf("Test");
> > >   TableDescriptorBuilder tableDescBuilder =
> > TableDescriptorBuilder.newBuilder(test);
> > >   ColumnFamilyDescriptorBuilder columnDescBuilder =
> > ColumnFamilyDescriptorBuilder
> > >           .newBuilder(Bytes.toBytes("test-family"));
> > >   columnDescBuilder.setNewVersionBehavior(true);
> > >   ColumnFamilyDescriptor columnDescriptor = columnDescBuilder.build();
> > >   tableDescBuilder.addColumnFamily(columnDescriptor);
> > >   TableDescriptor tableDescriptor = tableDescBuilder.build();
> > >
> > >   conn.getAdmin().createTable(tableDescriptor);
> > >
> > >   Table table = conn.getTable(test);
> > >   BufferedMutator bm =  conn.getBufferedMutator(test);
> > >
> > >   Delete del = new Delete(Bytes.toBytes("com.example/http"));
> > >   del.addColumn(Bytes.toBytes("test-family"),
> > Bytes.toBytes("test-qualifier"));
> > >   bm.mutate(del);
> > >
> > >   Put put = new Put(Bytes.toBytes("com.example/http"));
> > >   put.addColumn(Bytes.toBytes("test-family"),
> > Bytes.toBytes("test-qualifier"), Bytes.toBytes("test-value"));
> > >   bm.mutate(put);
> > >
> > >   put = new Put(Bytes.toBytes("com.example/http"));
> > >   put.addColumn(Bytes.toBytes("test-family"),
> > Bytes.toBytes("test-qualifier"), Bytes.toBytes("test-value-2"));
> > >   bm.mutate(put);
> > >
> > >   bm.flush();
> > >   bm.close();
> > >
> > >   Get get = new Get(Bytes.toBytes("com.example/http"));
> > >   get.addColumn(Bytes.toBytes("test-family"),
> > Bytes.toBytes("test-qualifier"));
> > >   Result result = table.get(get);
> > >   byte [] val = result.getValue(Bytes.toBytes("test-family"),
> > Bytes.toBytes("test-qualifier"));
> > >
> > >   if(val ==  null) {
> > >      // Testing purposes
> > >   }
> > > }
> > >
> > > I would like to know the exact behavior of value val variable here,
> when
> > NEW_VERSION_BEHAVIOR
> > > is true. Above code when it is executed returns null as value for val
> > > variable. As I can see, delete overshadows the subsequent puts.
> > >
> > > Regards
> > > Kevin
> > >
> > > On Mon, Apr 15, 2019 at 2:05 PM Kevin Ratnasekera <
> > [email protected]>
> > > wrote:
> > >
> > >> Update:
> > >> Found out that above delete row works all columns which have non null
> > >> qualifier. Delete doesn't work for puts with column qualifier is null.
> > >>
> > >> On related note,
> > >>
> > >> Delete delete = new Delete(keyRaw);
> > >>
> > >> delete.addFamily(hcol.getFamily());
> > >>
> > >> Let's say I need to perform delete on all columns created inside a
> > family
> > >> in a particular row, once I execute  above delete operation, I am not
> be
> > >> able to do put operation on the same row same column family.
> > >>
> > >> Is there something I am missing here?
> > >>
> > >> Regards
> > >>
> > >> Kevin
> > >>
> > >>
> > >> On Mon, Apr 15, 2019 at 12:20 AM Kevin Ratnasekera <
> > >> [email protected]> wrote:
> > >>
> > >>> Hi all,
> > >>>
> > >>> I am from Apache Gora project. I currently in the process of upgrade
> > our
> > >>> HBase dependencies to 2.0.5. We faced the issue described in [1] and
> > had to
> > >>> put workarounds to get through it some time back. ( By timestamps )
> > Now I
> > >>> started to test NEW_VERSION_BEHAVIOR and I noticed even trivial row
> > deletes
> > >>> fails when NEW_VERSION_BEHAVIOR is set to true.
> > >>>
> > >>> Delete del = new Delete(toBytes(key));
> > >>>
> > >>> table = connection.getTable(tableName);
> > >>>
> > >>> table.delete(del);
> > >>> Result result = table.get(new Get(toBytes(key)));
> > >>>
> > >>> Here Get returns some cells which are marked for delete. ( Some
> columns
> > >>> are deleted and some are not ) These deletes works fine when
> > >>> NEW_VERSION_BEHAVIOR is set to false. Please note I do this tests
> > using HBaseTestingUtility
> > >>> minicluster.
> > >>>
> > >>> Are there any known issues with NEW_VERSION_BEHAVIOR with deletes? It
> > >>> would be really helpful if someone can give some pointers to debug
> the
> > root
> > >>> cause of this.
> > >>>
> > >>> [1] https://issues.apache.org/jira/browse/HBASE-2256
> > >>>
> > >>> Regards
> > >>> Kevin
> > >>>
> > >>
> >
>

Reply via email to