Thanks for the clarification Keith, I wasn't 100% on that.
On Thu, Apr 11, 2013 at 10:01 AM, Keith Turner <[email protected]> wrote: > On Wed, Apr 10, 2013 at 6:06 PM, John Vines <[email protected]> wrote: > > Deletes will remove all entries which occur before the key. I believe > there > > is undefined behavior for when a delete key is identical. It should work > if > > you set the delete keys time +1. > > The behavior is defined when keys are identical except for delete. > Delete is the last thing a key is sorted on, and delete keys sort > before non delete keys. So a delete key with timestamp T will delete > all keys with the same row and column with timestamps <= T. > > > > > Sent from my phone, please pardon the typos and brevity. > > > > On Apr 10, 2013 6:02 PM, "Bell, Philip S CIV SPAWARSYSCEN-PACIFIC, 81320" > > <[email protected]> wrote: > >> > >> Using the following code, rows are never deleted even when identified > and > >> submitted for deletion to the batchwriter. > >> After running the code the rows still show up in search. > >> > >> This has been seen in 1.4.1 and 1.4.2 > >> > >> The same rows can be deleted from the accumulo shell interface > >> > >> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > >> > >> > >> for( Entry<Key, Value> e : mainScanner ) > >> { > >> Text currentUUID = e.getKey().getRow(); > >> > >> Text colFam = e.getKey().getColumnFamily(); > >> Text colQual = e.getKey().getColumnQualifier(); > >> > >> String colVis = e.getKey().getColumnVisibility().toString(); > >> > >> System.out.println( currentUUID + ":" + colFam + ":" + colQual + > >> ":" + colVis + ":" + e.getKey().getTimestamp() ); > >> > >> if( colFam.toString().equalsIgnoreCase( "root" ) || > >> colVis.length() > 0 ) > >> { > >> Mutation delMutation = new Mutation( currentUUID ); > >> delMutation.putDelete( colFam, colQual, new > >> ColumnVisibility( colVis ), e.getKey().getTimestamp() ); > >> > >> System.out.println( "removing" ); > >> > >> try > >> { > >> bw.addMutation( delMutation ); > >> } > >> catch( MutationsRejectedException e1 ) > >> { > >> e1.printStackTrace(); > >> } > >> > >> count++; > >> if( count % 1000000 == 0 ) > >> { > >> System.out.println( this.getName() + ": " + > count > >> + " completed in " + getTimePassed() ); > >> } > >> } > >> }// for each entry found > >> > >> try > >> { > >> bw.flush(); > >> bw.close(); > >> } > >> catch( Exception e1 ) > >> { > >> e1.printStackTrace(); > >> } >
