[jira] [Commented] (HBASE-8701) distributedLogReplay need to apply wal edits in the receiving order of those edits

2013-06-21 Thread Jeffrey Zhong (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8701?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690072#comment-13690072
 ] 

Jeffrey Zhong commented on HBASE-8701:
--

{quote}
But some can be -ve? So they will be out of order? 
{quote}
the negative mvcc is only used in KV comparison to resolve conflicts when row + 
timestamp is same. The hfile sequence number used in flush is from current 
region server log sequence number not the mvcc value. KVs of the same 
key+timestamp can be out of order in multiple store files while the right KV is 
selected with the help of these negative mvcc values(origin log sequence 
number). (You can refer to KVScannerComparator#compare)

{quote}
Is that safe presumption to make in replay?
Is this the least sequenceid of the batch?
Do we have to add it to WALEdit at all?
{quote}
I checked the wal serialization code, kv isn't PBed and we don't write mvcc 
values into wal. Therefore, I still need to add the original log sequence 
number into receiving RS hlogkey of a wal entry to maintain the original order 
of changes when re-replaying these edits for a RS chain failure scenario.
During replay, we can use the last sequence id of a batch because a batch 
request is from a single wal and the relative order of changes is maintained 
when constructing the batch request. So the last KV wins if there are multiple 
KVs of the same key + timestamp.
I don't have to put the original seq number into WALEdit while need to change 
several method signatures to pass the info down.



 distributedLogReplay need to apply wal edits in the receiving order of those 
 edits
 --

 Key: HBASE-8701
 URL: https://issues.apache.org/jira/browse/HBASE-8701
 Project: HBase
  Issue Type: Bug
  Components: MTTR
Reporter: Jeffrey Zhong
Assignee: Jeffrey Zhong
 Fix For: 0.98.0, 0.95.2

 Attachments: 8701-v3.txt, hbase-8701-v4.patch, hbase-8701-v5.patch, 
 hbase-8701-v6.patch, hbase-8701-v7.patch


 This issue happens in distributedLogReplay mode when recovering multiple puts 
 of the same key + version(timestamp). After replay, the value is 
 nondeterministic of the key
 h5. The original concern situation raised from [~eclark]:
 For all edits the rowkey is the same.
 There's a log with: [ A (ts = 0), B (ts = 0) ]
 Replay the first half of the log.
 A user puts in C (ts = 0)
 Memstore has to flush
 A new Hfile will be created with [ C, A ] and MaxSequenceId = C's seqid.
 Replay the rest of the Log.
 Flush
 The issue will happen in similar situation like Put(key, t=T) in WAL1 and 
 Put(key,t=T) in WAL2
 h5. Below is the option(proposed by Ted) I'd like to use:
 a) During replay, we pass original wal sequence number of each edit to the 
 receiving RS
 b) In receiving RS, we store negative original sequence number of wal edits 
 into mvcc field of KVs of wal edits
 c) Add handling of negative MVCC in KVScannerComparator and KVComparator   
 d) In receiving RS, write original sequence number into an optional field of 
 wal file for chained RS failure situation 
 e) When opening a region, we add a safety bumper(a large number) in order for 
 the new sequence number of a newly opened region not to collide with old 
 sequence numbers. 
 In the future, when we stores sequence number along with KVs, we can adjust 
 the above solution a little bit by avoiding to overload MVCC field.
 h5. The other alternative options are listed below for references:
 Option one
 a) disallow writes during recovery
 b) during replay, we pass original wal sequence ids
 c) hold flush till all wals of a recovering region are replayed. Memstore 
 should hold because we only recover unflushed wal edits. For edits with same 
 key + version, whichever with larger sequence Id wins.
 Option two
 a) During replay, we pass original wal sequence ids
 b) for each wal edit, we store each edit's original sequence id along with 
 its key. 
 c) during scanning, we use the original sequence id if it's present otherwise 
 its store file sequence Id
 d) compaction can just leave put with max sequence id
 Please let me know if you have better ideas.

--
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


[jira] [Created] (HBASE-8781) ImmutableBytesWritable constructor with another IBW as param need to consider the offset of the passed IBW

2013-06-21 Thread Anoop Sam John (JIRA)
Anoop Sam John created HBASE-8781:
-

 Summary: ImmutableBytesWritable constructor with another IBW as 
param need to consider the offset of the passed IBW
 Key: HBASE-8781
 URL: https://issues.apache.org/jira/browse/HBASE-8781
 Project: HBase
  Issue Type: Bug
Affects Versions: 0.94.8
Reporter: Anoop Sam John
Assignee: Anoop Sam John
Priority: Minor
 Fix For: 0.98.0


{code}
/**
   * Set the new ImmutableBytesWritable to the contents of the passed
   * codeibw/code.
   * @param ibw the value to set this ImmutableBytesWritable to.
   */
  public ImmutableBytesWritable(final ImmutableBytesWritable ibw) {
this(ibw.get(), 0, ibw.getSize());
  }
{code}


It should be this(ibw.get(), ibw.getOffset(), ibw.getSize());


--
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


[jira] [Updated] (HBASE-8781) ImmutableBytesWritable constructor with another IBW as param need to consider the offset of the passed IBW

2013-06-21 Thread Anoop Sam John (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8781?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Anoop Sam John updated HBASE-8781:
--

Status: Patch Available  (was: Open)

Run QA

 ImmutableBytesWritable constructor with another IBW as param need to consider 
 the offset of the passed IBW
 --

 Key: HBASE-8781
 URL: https://issues.apache.org/jira/browse/HBASE-8781
 Project: HBase
  Issue Type: Bug
Affects Versions: 0.94.8
Reporter: Anoop Sam John
Assignee: Anoop Sam John
Priority: Minor
 Fix For: 0.98.0

 Attachments: HBASE-8781.patch


 {code}
 /**
* Set the new ImmutableBytesWritable to the contents of the passed
* codeibw/code.
* @param ibw the value to set this ImmutableBytesWritable to.
*/
   public ImmutableBytesWritable(final ImmutableBytesWritable ibw) {
 this(ibw.get(), 0, ibw.getSize());
   }
 {code}
 It should be this(ibw.get(), ibw.getOffset(), ibw.getSize());

--
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


[jira] [Updated] (HBASE-8781) ImmutableBytesWritable constructor with another IBW as param need to consider the offset of the passed IBW

2013-06-21 Thread Anoop Sam John (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8781?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Anoop Sam John updated HBASE-8781:
--

Attachment: HBASE-8781.patch

 ImmutableBytesWritable constructor with another IBW as param need to consider 
 the offset of the passed IBW
 --

 Key: HBASE-8781
 URL: https://issues.apache.org/jira/browse/HBASE-8781
 Project: HBase
  Issue Type: Bug
Affects Versions: 0.94.8
Reporter: Anoop Sam John
Assignee: Anoop Sam John
Priority: Minor
 Fix For: 0.98.0

 Attachments: HBASE-8781.patch


 {code}
 /**
* Set the new ImmutableBytesWritable to the contents of the passed
* codeibw/code.
* @param ibw the value to set this ImmutableBytesWritable to.
*/
   public ImmutableBytesWritable(final ImmutableBytesWritable ibw) {
 this(ibw.get(), 0, ibw.getSize());
   }
 {code}
 It should be this(ibw.get(), ibw.getOffset(), ibw.getSize());

--
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


[jira] [Commented] (HBASE-8781) ImmutableBytesWritable constructor with another IBW as param need to consider the offset of the passed IBW

2013-06-21 Thread ramkrishna.s.vasudevan (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8781?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690094#comment-13690094
 ] 

ramkrishna.s.vasudevan commented on HBASE-8781:
---

+1

 ImmutableBytesWritable constructor with another IBW as param need to consider 
 the offset of the passed IBW
 --

 Key: HBASE-8781
 URL: https://issues.apache.org/jira/browse/HBASE-8781
 Project: HBase
  Issue Type: Bug
Affects Versions: 0.94.8
Reporter: Anoop Sam John
Assignee: Anoop Sam John
Priority: Minor
 Fix For: 0.98.0

 Attachments: HBASE-8781.patch


 {code}
 /**
* Set the new ImmutableBytesWritable to the contents of the passed
* codeibw/code.
* @param ibw the value to set this ImmutableBytesWritable to.
*/
   public ImmutableBytesWritable(final ImmutableBytesWritable ibw) {
 this(ibw.get(), 0, ibw.getSize());
   }
 {code}
 It should be this(ibw.get(), ibw.getOffset(), ibw.getSize());

--
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


[jira] [Updated] (HBASE-8779) add mutateRow method support to thrift2

2013-06-21 Thread duanhongyi (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8779?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

duanhongyi updated HBASE-8779:
--

Fix Version/s: 0.95.2

 add mutateRow method support to thrift2
 ---

 Key: HBASE-8779
 URL: https://issues.apache.org/jira/browse/HBASE-8779
 Project: HBase
  Issue Type: New Feature
  Components: Thrift
Reporter: duanhongyi
 Fix For: 0.95.2

 Attachments: thrift2-HBASE-8779.patch, 
 thrift-ThriftHBaseServiceHandler.java-HBASE-8779.patch, 
 thrift-ThriftUtilities.java-HBASE-8779.patch


 examples py:
 TPut put = TPut()
 m1 = TMutation(put=put)
 TDelete single_delete = TDelete()
 m2 = TMutation(singleDelete=single_delete)
 row_mu = TRowMutations(row,[m1,m2])
 thbase_service.mutateRow(table,row_mu)  # atomically on a single row

--
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


[jira] [Created] (HBASE-8782) Thrift2 can not parse table names when using framed transport

2013-06-21 Thread Hamed Madani (JIRA)
Hamed Madani created HBASE-8782:
---

 Summary: Thrift2 can not parse table names when using framed 
transport
 Key: HBASE-8782
 URL: https://issues.apache.org/jira/browse/HBASE-8782
 Project: HBase
  Issue Type: Bug
  Components: Thrift
Reporter: Hamed Madani
 Attachments: HBASE_8782.patch

ThriftHBaseServiceHandler.java use .array() on table names which resulted to 
incorrect values for table name with framed transport. Replacing table.array() 
with getBytes(table) fixed this problem. I've attached the patch

--
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


[jira] [Updated] (HBASE-8782) Thrift2 can not parse table names when using framed transport

2013-06-21 Thread Hamed Madani (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8782?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Hamed Madani updated HBASE-8782:


Attachment: HBASE_8782.patch

 Thrift2 can not parse table names when using framed transport
 -

 Key: HBASE-8782
 URL: https://issues.apache.org/jira/browse/HBASE-8782
 Project: HBase
  Issue Type: Bug
  Components: Thrift
Reporter: Hamed Madani
 Attachments: HBASE_8782.patch


 ThriftHBaseServiceHandler.java use .array() on table names which resulted to 
 incorrect values for table name with framed transport. Replacing 
 table.array() with getBytes(table) fixed this problem. I've attached the patch

--
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


[jira] [Updated] (HBASE-8782) Thrift2 can not parse table names when using framed transport

2013-06-21 Thread Hamed Madani (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8782?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Hamed Madani updated HBASE-8782:


Affects Version/s: 0.95.1
   Status: Patch Available  (was: Open)

 Thrift2 can not parse table names when using framed transport
 -

 Key: HBASE-8782
 URL: https://issues.apache.org/jira/browse/HBASE-8782
 Project: HBase
  Issue Type: Bug
  Components: Thrift
Affects Versions: 0.95.1
Reporter: Hamed Madani
 Attachments: HBASE_8782.patch


 ThriftHBaseServiceHandler.java use .array() on table names which resulted to 
 incorrect values for table name with framed transport. Replacing 
 table.array() with getBytes(table) fixed this problem. I've attached the patch

--
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


[jira] [Commented] (HBASE-8776) port HBASE-8723 to 0.94

2013-06-21 Thread Lars Hofhansl (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8776?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690119#comment-13690119
 ] 

Lars Hofhansl commented on HBASE-8776:
--

Was late yesterday evening (in Germany). So you want to match the 180s ZK 
timeout, to cover RS failure detection?
The default is already awfully long when ZK or the HMaster/RS is actually down. 
I prefer letting the caller know quickly rather retrying endlessly; and just 
make long enough to ride over a split/regionmove.
It looks like HBASE-8723 was specifically about an integration test, so maybe 
just increase it for the test?

Count me +0. If you think we need this change in 0.94, it's fine to commit.


 port HBASE-8723 to 0.94
 ---

 Key: HBASE-8776
 URL: https://issues.apache.org/jira/browse/HBASE-8776
 Project: HBase
  Issue Type: Bug
Affects Versions: 0.94.8
Reporter: Sergey Shelukhin
Assignee: Sergey Shelukhin
 Fix For: 0.94.9

 Attachments: HBASE-8776-v0.patch




--
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


[jira] [Commented] (HBASE-8721) Deletes can mask puts that happen after the delete

2013-06-21 Thread Lars Hofhansl (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8721?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690122#comment-13690122
 ] 

Lars Hofhansl commented on HBASE-8721:
--

Who is going to sponsor this change with a +1? Doesn't look like anybody will.
We're going to increase HFile sizes, break all kinds of implicit assumptions, 
the use case is narrow, and we're already getting a version specific family 
delete marker, which should address some of the issues.


 Deletes can mask puts that happen after the delete
 --

 Key: HBASE-8721
 URL: https://issues.apache.org/jira/browse/HBASE-8721
 Project: HBase
  Issue Type: Improvement
  Components: regionserver
Reporter: Feng Honghua
 Attachments: HBASE-8721-0.94-V0.patch


 this fix aims for bug mentioned in http://hbase.apache.org/book.html 5.8.2.1:
 Deletes mask puts, even puts that happened after the delete was entered. 
 Remember that a delete writes a tombstone, which only disappears after then 
 next major compaction has run. Suppose you do a delete of everything = T. 
 After this you do a new put with a timestamp = T. This put, even if it 
 happened after the delete, will be masked by the delete tombstone. Performing 
 the put will not fail, but when you do a get you will notice the put did have 
 no effect. It will start working again after the major compaction has run. 
 These issues should not be a problem if you use always-increasing versions 
 for new puts to a row. But they can occur even if you do not care about time: 
 just do delete and put immediately after each other, and there is some chance 
 they happen within the same millisecond.

--
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


[jira] [Commented] (HBASE-8779) add mutateRow method support to thrift2

2013-06-21 Thread Ted Yu (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8779?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690127#comment-13690127
 ] 

Ted Yu commented on HBASE-8779:
---

Can you put diff for the files in a single patch ?

You can generate patch at the root of your workspace.

Indentation should be two spaces per tab.

Thanks

 add mutateRow method support to thrift2
 ---

 Key: HBASE-8779
 URL: https://issues.apache.org/jira/browse/HBASE-8779
 Project: HBase
  Issue Type: New Feature
  Components: Thrift
Reporter: duanhongyi
 Fix For: 0.95.2

 Attachments: thrift2-HBASE-8779.patch, 
 thrift-ThriftHBaseServiceHandler.java-HBASE-8779.patch, 
 thrift-ThriftUtilities.java-HBASE-8779.patch


 examples py:
 TPut put = TPut()
 m1 = TMutation(put=put)
 TDelete single_delete = TDelete()
 m2 = TMutation(singleDelete=single_delete)
 row_mu = TRowMutations(row,[m1,m2])
 thbase_service.mutateRow(table,row_mu)  # atomically on a single row

--
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


[jira] [Commented] (HBASE-8773) Can be setup the COMPRESSION base on HTable in meta or user set in Configuration

2013-06-21 Thread jay wong (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8773?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690129#comment-13690129
 ] 

jay wong commented on HBASE-8773:
-

[~anoop.hbase] yes. it because of that when i want create some HFiles with M/R. 
and the table just use LZO compression. but the jobtracker server just don't 
have LZO lib. then the M/R couldn't run.
so I want write the HFile with no compression. 

and when the hfile compact. It also be used LZO compression.

 Can be setup the COMPRESSION base on HTable in meta or user set in 
 Configuration
 

 Key: HBASE-8773
 URL: https://issues.apache.org/jira/browse/HBASE-8773
 Project: HBase
  Issue Type: New Feature
  Components: HFile
Affects Versions: 0.94.8
Reporter: jay wong
 Fix For: 0.94.9

 Attachments: HBASE-8773.patch


 when I want create HFile with the ImportTsv. I found that if i set the 
 compression in the Configuration or not, It's always invalid。
 It because of the method 'configureIncrementalLoad' in HFileOutputFormat will 
 set the compression with the HTable in meta. So if add a configuration to 
 switch use set compression with HTable or Not

--
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


[jira] [Commented] (HBASE-8780) a column Family can have VERSIONS less than zero

2013-06-21 Thread Anoop Sam John (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8780?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690134#comment-13690134
 ] 

Anoop Sam John commented on HBASE-8780:
---

Looks good..  Can u attach a patch for Trunk? Then we can run HadoopQA

 a column Family can have VERSIONS less than zero 
 -

 Key: HBASE-8780
 URL: https://issues.apache.org/jira/browse/HBASE-8780
 Project: HBase
  Issue Type: Bug
  Components: Client
Affects Versions: 0.94.8
Reporter: Demai Ni
Priority: Trivial
 Attachments: HBASE-8780-0.94.8-v0.patch, HBASE-8780-test.txt


 User can create/alter a columnfam and set its VERSION(aka maxVERSIONS) to a 
 negative or zero value. Although there is a checking in 
 HColumnDesciptor#construtor, hbase shell command will invoke the 
 setter(setMaxVersions and setMinVersions) directly, hence by pass the 
 checking.  For example:
 {code:title=set VERSIONS = -1}
 hbase(main):016:0 create 't5_dn',{NAME='cf1',VERSIONS=-1}
 0 row(s) in 1.0420 seconds
 hbase(main):017:0 put 't5_dn','row1','cf1:q1','row1cf1_v1'
 0 row(s) in 0.0700 seconds
 hbase(main):018:0 scan 't5_dn'
 ROW   COLUMN+CELL 
  
 0 row(s) in 0.0090 seconds
 hbase(main):019:0 describe 't5_dn'
 DESCRIPTION  ENABLED  
   
 't5_dn', {NAME = 'cf1', REPLICATION_SCOPE = '0',  true  
 KEEP_DELETED_CELLS = 'false', COMPRESSION = 'NONE   
  
 ', ENCODE_ON_DISK = 'true', BLOCKCACHE = 'true',
 MIN_VERSIONS = '0', DATA_BLOCK_ENCODING = 'NONE',   
  
  IN_MEMORY = 'false', BLOOMFILTER = 'NONE', TTL =   
  
  '2147483647', VERSIONS = '-1', BLOCKSIZE = '655   
   
 36'}  
 1 row(s) in 0.0410 seconds
 {code}
 above example shows VERSIONS = '-1', and put/scan doesn't keep the data

--
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


[jira] [Updated] (HBASE-8780) a column Family can have VERSIONS less than zero

2013-06-21 Thread Anoop Sam John (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8780?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Anoop Sam John updated HBASE-8780:
--

Assignee: Demai Ni

 a column Family can have VERSIONS less than zero 
 -

 Key: HBASE-8780
 URL: https://issues.apache.org/jira/browse/HBASE-8780
 Project: HBase
  Issue Type: Bug
  Components: Client
Affects Versions: 0.94.8
Reporter: Demai Ni
Assignee: Demai Ni
Priority: Trivial
 Attachments: HBASE-8780-0.94.8-v0.patch, HBASE-8780-test.txt


 User can create/alter a columnfam and set its VERSION(aka maxVERSIONS) to a 
 negative or zero value. Although there is a checking in 
 HColumnDesciptor#construtor, hbase shell command will invoke the 
 setter(setMaxVersions and setMinVersions) directly, hence by pass the 
 checking.  For example:
 {code:title=set VERSIONS = -1}
 hbase(main):016:0 create 't5_dn',{NAME='cf1',VERSIONS=-1}
 0 row(s) in 1.0420 seconds
 hbase(main):017:0 put 't5_dn','row1','cf1:q1','row1cf1_v1'
 0 row(s) in 0.0700 seconds
 hbase(main):018:0 scan 't5_dn'
 ROW   COLUMN+CELL 
  
 0 row(s) in 0.0090 seconds
 hbase(main):019:0 describe 't5_dn'
 DESCRIPTION  ENABLED  
   
 't5_dn', {NAME = 'cf1', REPLICATION_SCOPE = '0',  true  
 KEEP_DELETED_CELLS = 'false', COMPRESSION = 'NONE   
  
 ', ENCODE_ON_DISK = 'true', BLOCKCACHE = 'true',
 MIN_VERSIONS = '0', DATA_BLOCK_ENCODING = 'NONE',   
  
  IN_MEMORY = 'false', BLOOMFILTER = 'NONE', TTL =   
  
  '2147483647', VERSIONS = '-1', BLOCKSIZE = '655   
   
 36'}  
 1 row(s) in 0.0410 seconds
 {code}
 above example shows VERSIONS = '-1', and put/scan doesn't keep the data

--
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


[jira] [Updated] (HBASE-8782) Thrift2 can not parse table names when using framed transport

2013-06-21 Thread Hamed Madani (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8782?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Hamed Madani updated HBASE-8782:


Description: ThriftHBaseServiceHandler.java use .array() on table names 
which resulted in incorrect values for table name with framed transport. 
Replacing table.array() with getBytes(table) fixed this problem. I've attached 
the patch  (was: ThriftHBaseServiceHandler.java use .array() on table names 
which resulted to incorrect values for table name with framed transport. 
Replacing table.array() with getBytes(table) fixed this problem. I've attached 
the patch)

 Thrift2 can not parse table names when using framed transport
 -

 Key: HBASE-8782
 URL: https://issues.apache.org/jira/browse/HBASE-8782
 Project: HBase
  Issue Type: Bug
  Components: Thrift
Affects Versions: 0.95.1
Reporter: Hamed Madani
 Attachments: HBASE_8782.patch


 ThriftHBaseServiceHandler.java use .array() on table names which resulted in 
 incorrect values for table name with framed transport. Replacing 
 table.array() with getBytes(table) fixed this problem. I've attached the patch

--
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


[jira] [Commented] (HBASE-8782) Thrift2 can not parse table names when using framed transport

2013-06-21 Thread Ted Yu (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8782?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690150#comment-13690150
 ] 

Ted Yu commented on HBASE-8782:
---

Hadoop QA didn't seem to work.

Can you run test suite and let us know the result ?

Thanks

 Thrift2 can not parse table names when using framed transport
 -

 Key: HBASE-8782
 URL: https://issues.apache.org/jira/browse/HBASE-8782
 Project: HBase
  Issue Type: Bug
  Components: Thrift
Affects Versions: 0.95.1
Reporter: Hamed Madani
 Attachments: HBASE_8782.patch


 ThriftHBaseServiceHandler.java use .array() on table names which resulted in 
 incorrect values for table name with framed transport. Replacing 
 table.array() with getBytes(table) fixed this problem. I've attached the patch

--
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


[jira] [Updated] (HBASE-8782) Thrift2 can not parse values when using framed transport

2013-06-21 Thread Hamed Madani (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8782?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Hamed Madani updated HBASE-8782:


Attachment: (was: HBASE_8782.patch)

 Thrift2 can not parse values when using framed transport
 

 Key: HBASE-8782
 URL: https://issues.apache.org/jira/browse/HBASE-8782
 Project: HBase
  Issue Type: Bug
  Components: Thrift
Affects Versions: 0.95.1
Reporter: Hamed Madani

 ThriftHBaseServiceHandler.java use .array() on table names which resulted in 
 incorrect values for table name with framed transport. Replacing 
 table.array() with getBytes(table) fixed this problem. I've attached the patch

--
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


[jira] [Updated] (HBASE-8782) Thrift2 can not parse values when using framed transport

2013-06-21 Thread Hamed Madani (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8782?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Hamed Madani updated HBASE-8782:


Summary: Thrift2 can not parse values when using framed transport  (was: 
Thrift2 can not parse table names when using framed transport)

 Thrift2 can not parse values when using framed transport
 

 Key: HBASE-8782
 URL: https://issues.apache.org/jira/browse/HBASE-8782
 Project: HBase
  Issue Type: Bug
  Components: Thrift
Affects Versions: 0.95.1
Reporter: Hamed Madani

 ThriftHBaseServiceHandler.java use .array() on table names which resulted in 
 incorrect values for table name with framed transport. Replacing 
 table.array() with getBytes(table) fixed this problem. I've attached the patch

--
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


[jira] [Updated] (HBASE-8782) Thrift2 can not parse values when using framed transport

2013-06-21 Thread Hamed Madani (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8782?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Hamed Madani updated HBASE-8782:


Description: ThriftHBaseServiceHandler.java use .array() on table names , 
and values (family , qualifier in checkandDelete , etc) which resulted in 
incorrect values with framed transport. Replacing .array() with getBytes() 
fixed this problem. I've attached the patch  (was: 
ThriftHBaseServiceHandler.java use .array() on table names which resulted in 
incorrect values for table name with framed transport. Replacing table.array() 
with getBytes(table) fixed this problem. I've attached the patch)

 Thrift2 can not parse values when using framed transport
 

 Key: HBASE-8782
 URL: https://issues.apache.org/jira/browse/HBASE-8782
 Project: HBase
  Issue Type: Bug
  Components: Thrift
Affects Versions: 0.95.1
Reporter: Hamed Madani

 ThriftHBaseServiceHandler.java use .array() on table names , and values 
 (family , qualifier in checkandDelete , etc) which resulted in incorrect 
 values with framed transport. Replacing .array() with getBytes() fixed this 
 problem. I've attached the patch

--
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


[jira] [Updated] (HBASE-8782) Thrift2 can not parse values when using framed transport

2013-06-21 Thread Hamed Madani (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8782?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Hamed Madani updated HBASE-8782:


Attachment: HBASE_8782.patch

 Thrift2 can not parse values when using framed transport
 

 Key: HBASE-8782
 URL: https://issues.apache.org/jira/browse/HBASE-8782
 Project: HBase
  Issue Type: Bug
  Components: Thrift
Affects Versions: 0.95.1
Reporter: Hamed Madani
 Attachments: HBASE_8782.patch


 ThriftHBaseServiceHandler.java use .array() on table names , and values 
 (family , qualifier in checkandDelete , etc) which resulted in incorrect 
 values with framed transport. Replacing .array() with getBytes() fixed this 
 problem. I've attached the patch

--
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


[jira] [Updated] (HBASE-8782) Thrift2 can not parse values when using framed transport

2013-06-21 Thread Hamed Madani (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8782?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Hamed Madani updated HBASE-8782:


Description: 
ThriftHBaseServiceHandler.java use .array() on table names , and values (family 
, qualifier in checkandDelete , etc) which resulted in incorrect values with 
framed transport. Replacing .array() with getBytes() fixed this problem. I've 
attached the patch

EDIT: updated the patch to cover checkAndPut(), checkAndDelete()

  was:ThriftHBaseServiceHandler.java use .array() on table names , and values 
(family , qualifier in checkandDelete , etc) which resulted in incorrect values 
with framed transport. Replacing .array() with getBytes() fixed this problem. 
I've attached the patch


 Thrift2 can not parse values when using framed transport
 

 Key: HBASE-8782
 URL: https://issues.apache.org/jira/browse/HBASE-8782
 Project: HBase
  Issue Type: Bug
  Components: Thrift
Affects Versions: 0.95.1
Reporter: Hamed Madani
 Attachments: HBASE_8782.patch


 ThriftHBaseServiceHandler.java use .array() on table names , and values 
 (family , qualifier in checkandDelete , etc) which resulted in incorrect 
 values with framed transport. Replacing .array() with getBytes() fixed this 
 problem. I've attached the patch
 EDIT: updated the patch to cover checkAndPut(), checkAndDelete()

--
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


[jira] [Updated] (HBASE-8779) add mutateRow method support to thrift2

2013-06-21 Thread duanhongyi (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8779?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

duanhongyi updated HBASE-8779:
--

Attachment: (was: 
thrift-ThriftHBaseServiceHandler.java-HBASE-8779.patch)

 add mutateRow method support to thrift2
 ---

 Key: HBASE-8779
 URL: https://issues.apache.org/jira/browse/HBASE-8779
 Project: HBase
  Issue Type: New Feature
  Components: Thrift
Reporter: duanhongyi
 Fix For: 0.95.2


 examples py:
 TPut put = TPut()
 m1 = TMutation(put=put)
 TDelete single_delete = TDelete()
 m2 = TMutation(singleDelete=single_delete)
 row_mu = TRowMutations(row,[m1,m2])
 thbase_service.mutateRow(table,row_mu)  # atomically on a single row

--
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


[jira] [Updated] (HBASE-8779) add mutateRow method support to thrift2

2013-06-21 Thread duanhongyi (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8779?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

duanhongyi updated HBASE-8779:
--

Attachment: (was: thrift2-HBASE-8779.patch)

 add mutateRow method support to thrift2
 ---

 Key: HBASE-8779
 URL: https://issues.apache.org/jira/browse/HBASE-8779
 Project: HBase
  Issue Type: New Feature
  Components: Thrift
Reporter: duanhongyi
 Fix For: 0.95.2


 examples py:
 TPut put = TPut()
 m1 = TMutation(put=put)
 TDelete single_delete = TDelete()
 m2 = TMutation(singleDelete=single_delete)
 row_mu = TRowMutations(row,[m1,m2])
 thbase_service.mutateRow(table,row_mu)  # atomically on a single row

--
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


[jira] [Updated] (HBASE-8779) add mutateRow method support to thrift2

2013-06-21 Thread duanhongyi (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8779?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

duanhongyi updated HBASE-8779:
--

Attachment: (was: thrift-ThriftUtilities.java-HBASE-8779.patch)

 add mutateRow method support to thrift2
 ---

 Key: HBASE-8779
 URL: https://issues.apache.org/jira/browse/HBASE-8779
 Project: HBase
  Issue Type: New Feature
  Components: Thrift
Reporter: duanhongyi
 Fix For: 0.95.2


 examples py:
 TPut put = TPut()
 m1 = TMutation(put=put)
 TDelete single_delete = TDelete()
 m2 = TMutation(singleDelete=single_delete)
 row_mu = TRowMutations(row,[m1,m2])
 thbase_service.mutateRow(table,row_mu)  # atomically on a single row

--
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


[jira] [Updated] (HBASE-8779) add mutateRow method support to thrift2

2013-06-21 Thread duanhongyi (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8779?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

duanhongyi updated HBASE-8779:
--

Fix Version/s: (was: 0.95.2)
   0.94.9

 add mutateRow method support to thrift2
 ---

 Key: HBASE-8779
 URL: https://issues.apache.org/jira/browse/HBASE-8779
 Project: HBase
  Issue Type: New Feature
  Components: Thrift
Reporter: duanhongyi
 Fix For: 0.94.9

 Attachments: 0.94.patch


 examples py:
 TPut put = TPut()
 m1 = TMutation(put=put)
 TDelete single_delete = TDelete()
 m2 = TMutation(singleDelete=single_delete)
 row_mu = TRowMutations(row,[m1,m2])
 thbase_service.mutateRow(table,row_mu)  # atomically on a single row

--
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


[jira] [Updated] (HBASE-8779) add mutateRow method support to thrift2

2013-06-21 Thread duanhongyi (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8779?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

duanhongyi updated HBASE-8779:
--

Attachment: 0.94.patch

patch to:http://svn.apache.org/repos/asf/hbase/branches/0.94



 add mutateRow method support to thrift2
 ---

 Key: HBASE-8779
 URL: https://issues.apache.org/jira/browse/HBASE-8779
 Project: HBase
  Issue Type: New Feature
  Components: Thrift
Reporter: duanhongyi
 Fix For: 0.95.2

 Attachments: 0.94.patch


 examples py:
 TPut put = TPut()
 m1 = TMutation(put=put)
 TDelete single_delete = TDelete()
 m2 = TMutation(singleDelete=single_delete)
 row_mu = TRowMutations(row,[m1,m2])
 thbase_service.mutateRow(table,row_mu)  # atomically on a single row

--
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


[jira] [Commented] (HBASE-8782) Thrift2 can not parse values when using framed transport

2013-06-21 Thread Hamed Madani (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8782?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690170#comment-13690170
 ] 

Hamed Madani commented on HBASE-8782:
-

Thank you Ted. I'm not sure what you like me to do.
 
Below is what I get *Without this patch* running thrift2 in nonblocking mode 
(trying to scan my_table (framed transport))
{code}
org.apache.hadoop.hbase.exceptions.TableNotFoundException: Cannot find row in 
.META. for table: ?
 openScanner
my_table

  @
   @ 

row=\xFF\xBF\xBD\x01\xF0\xF1\x00\x00\xF0\x0BopenScanner\x00\x00\(..many more)
at 
org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:137)
at 
org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:102)
at 
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.prefetchRegionCache(HConnectionManager.java:857)
at 
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:917)
at 
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:809)
at 
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:778)
at org.apache.hadoop.hbase.client.HTable.finishSetup(HTable.java:245)
at org.apache.hadoop.hbase.client.HTable.init(HTable.java:186)
at 
org.apache.hadoop.hbase.client.HTableFactory.createHTableInterface(HTableFactory.java:39)
at 
org.apache.hadoop.hbase.client.HTablePool.createHTable(HTablePool.java:270)
at 
org.apache.hadoop.hbase.client.HTablePool.findOrCreateTable(HTablePool.java:200)
at 
org.apache.hadoop.hbase.client.HTablePool.getTable(HTablePool.java:179)
at 
org.apache.hadoop.hbase.client.HTablePool.getTable(HTablePool.java:218)
at 
org.apache.hadoop.hbase.thrift2.ThriftHBaseServiceHandler.getTable(ThriftHBaseServiceHandler.java:127)
at 
org.apache.hadoop.hbase.thrift2.ThriftHBaseServiceHandler.openScanner(ThriftHBaseServiceHandler.java:306)
{code}

 Thrift2 can not parse values when using framed transport
 

 Key: HBASE-8782
 URL: https://issues.apache.org/jira/browse/HBASE-8782
 Project: HBase
  Issue Type: Bug
  Components: Thrift
Affects Versions: 0.95.1
Reporter: Hamed Madani
 Attachments: HBASE_8782.patch


 ThriftHBaseServiceHandler.java use .array() on table names , and values 
 (family , qualifier in checkandDelete , etc) which resulted in incorrect 
 values with framed transport. Replacing .array() with getBytes() fixed this 
 problem. I've attached the patch
 EDIT: updated the patch to cover checkAndPut(), checkAndDelete()

--
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


[jira] [Commented] (HBASE-8667) Master and Regionserver not able to communicate if both bound to different network interfaces on the same machine.

2013-06-21 Thread Anoop Sam John (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8667?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690172#comment-13690172
 ] 

Anoop Sam John commented on HBASE-8667:
---

Looks good

 Master and Regionserver not able to communicate if both bound to different 
 network interfaces on the same machine.
 --

 Key: HBASE-8667
 URL: https://issues.apache.org/jira/browse/HBASE-8667
 Project: HBase
  Issue Type: Bug
  Components: IPC/RPC
Reporter: rajeshbabu
Assignee: rajeshbabu
 Fix For: 0.98.0, 0.95.2, 0.94.9

 Attachments: HBASE-8667_trunk.patch, HBASE-8667_Trunk.patch, 
 HBASE-8667_Trunk-V2.patch, HBASE-8667_trunk_v4.patch, 
 HBASE-8667_trunk_v5.patch


 While testing HBASE-8640 fix found that master and regionserver running on 
 different interfaces are not communicating properly.
 I have two interfaces 1) lo 2) eth0 in my machine and default hostname 
 interface is lo.
 I have configured master ipc address to ip of eth0 interface.
 Started master and regionserver on the same machine.
 1) master rpc server bound to eth0 and RS rpc server bound to lo
 2) Since rpc client is not binding to any ip address, when RS is reporting RS 
 startup its getting registered with eth0 ip address(but actually it should 
 register localhost)
 Here are RS logs:
 {code}
 2013-05-31 06:05:28,608 WARN  [regionserver60020] 
 org.apache.hadoop.hbase.regionserver.HRegionServer: reportForDuty failed; 
 sleeping and then retrying.
 2013-05-31 06:05:31,609 INFO  [regionserver60020] 
 org.apache.hadoop.hbase.regionserver.HRegionServer: Attempting connect to 
 Master server at 192.168.0.100,6,1369960497008
 2013-05-31 06:05:31,609 INFO  [regionserver60020] 
 org.apache.hadoop.hbase.regionserver.HRegionServer: Telling master at 
 192.168.0.100,6,1369960497008 that we are up with port=60020, 
 startcode=1369960502544
 2013-05-31 06:05:31,618 DEBUG [regionserver60020] 
 org.apache.hadoop.hbase.regionserver.HRegionServer: Config from master: 
 hbase.rootdir=hdfs://localhost:2851/hbase
 2013-05-31 06:05:31,618 DEBUG [regionserver60020] 
 org.apache.hadoop.hbase.regionserver.HRegionServer: Config from master: 
 fs.default.name=hdfs://localhost:2851
 2013-05-31 06:05:31,618 INFO  [regionserver60020] 
 org.apache.hadoop.hbase.regionserver.HRegionServer: Master passed us a 
 different hostname to use; was=localhost, but now=192.168.0.100
 {code}
 Here are master logs:
 {code}
 2013-05-31 06:05:31,615 INFO  [IPC Server handler 9 on 6] 
 org.apache.hadoop.hbase.master.ServerManager: Registering 
 server=192.168.0.100,60020,1369960502544
 {code}
 Since master has wrong rpc server address of RS, META is not getting assigned.
 {code}
 2013-05-31 06:05:34,362 DEBUG [master-192.168.0.100,6,1369960497008] 
 org.apache.hadoop.hbase.master.AssignmentManager: No previous transition plan 
 was found (or we are ignoring an existing plan) for .META.,,1.1028785192 so 
 generated a random one; hri=.META.,,1.1028785192, src=, 
 dest=192.168.0.100,60020,1369960502544; 1 (online=1, available=1) available 
 servers, forceNewPlan=false
 -
 org.apache.hadoop.hbase.master.AssignmentManager: Failed assignment of 
 .META.,,1.1028785192 to 192.168.0.100,60020,1369960502544, trying to assign 
 elsewhere instead; try=1 of 10
 java.net.ConnectException: Connection refused
   at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
   at 
 sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:592)
   at 
 org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)
   at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:511)
   at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:481)
   at 
 org.apache.hadoop.hbase.ipc.RpcClient$Connection.setupConnection(RpcClient.java:549)
   at 
 org.apache.hadoop.hbase.ipc.RpcClient$Connection.setupIOstreams(RpcClient.java:813)
   at 
 org.apache.hadoop.hbase.ipc.RpcClient.getConnection(RpcClient.java:1422)
   at org.apache.hadoop.hbase.ipc.RpcClient.call(RpcClient.java:1315)
   at 
 org.apache.hadoop.hbase.ipc.RpcClient.callBlockingMethod(RpcClient.java:1532)
   at 
 org.apache.hadoop.hbase.ipc.RpcClient$BlockingRpcChannelImplementation.callBlockingMethod(RpcClient.java:1587)
   at 
 org.apache.hadoop.hbase.protobuf.generated.AdminProtos$AdminService$BlockingStub.openRegion(AdminProtos.java:15039)
   at 
 org.apache.hadoop.hbase.master.ServerManager.sendRegionOpen(ServerManager.java:627)
   at 
 org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:1826)
   at 
 org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:1453)
   at 
 

[jira] [Commented] (HBASE-8669) change exploring compaction policy to prefer smaller compactions on blocked stores

2013-06-21 Thread Hudson (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8669?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690218#comment-13690218
 ] 

Hudson commented on HBASE-8669:
---

Integrated in hbase-0.95-on-hadoop2 #140 (See 
[https://builds.apache.org/job/hbase-0.95-on-hadoop2/140/])
HBASE-8669 change exploring compaction policy to prefer smaller compactions 
on blocked stores (Revision 1495262)

 Result = FAILURE
sershe : 
Files : 
* 
/hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/ExploringCompactionPolicy.java
* 
/hbase/branches/0.95/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultCompactSelection.java


 change exploring compaction policy to prefer smaller compactions on blocked 
 stores
 --

 Key: HBASE-8669
 URL: https://issues.apache.org/jira/browse/HBASE-8669
 Project: HBase
  Issue Type: Improvement
Reporter: Sergey Shelukhin
Assignee: Sergey Shelukhin
Priority: Minor
 Fix For: 0.95.2

 Attachments: HBASE-8669-v0.patch


 Side-note from HBASE-8665 discussion. When we compact a blocked store, we 
 might want to use a different heuristic to choose between the options.

--
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


[jira] [Commented] (HBASE-8755) A new write thread model for HLog to improve the overall HBase write throughput

2013-06-21 Thread Lars Hofhansl (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8755?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690238#comment-13690238
 ] 

Lars Hofhansl commented on HBASE-8755:
--

I ran some local tests, and even with a single threaded client I did not see a 
performance degradation with this patch (0.94).
I inserted 10m small rows. The cluster consists of a single RS/DN, HDFS is 
backed by a SSD. So the HDFS cost of writes should be low, and that in turns 
should bring out any new inefficiencies introduced by this patch.

So from my angle this patch is good.


 A new write thread model for HLog to improve the overall HBase write 
 throughput
 ---

 Key: HBASE-8755
 URL: https://issues.apache.org/jira/browse/HBASE-8755
 Project: HBase
  Issue Type: Improvement
  Components: wal
Reporter: Feng Honghua
 Attachments: HBASE-8755-0.94-V0.patch, HBASE-8755-0.94-V1.patch, 
 HBASE-8755-trunk-V0.patch


 In current write model, each write handler thread (executing put()) will 
 individually go through a full 'append (hlog local buffer) = HLog writer 
 append (write to hdfs) = HLog writer sync (sync hdfs)' cycle for each write, 
 which incurs heavy race condition on updateLock and flushLock.
 The only optimization where checking if current syncTillHere  txid in 
 expectation for other thread help write/sync its own txid to hdfs and 
 omitting the write/sync actually help much less than expectation.
 Three of my colleagues(Ye Hangjun / Wu Zesheng / Zhang Peng) at Xiaomi 
 proposed a new write thread model for writing hdfs sequence file and the 
 prototype implementation shows a 4X improvement for throughput (from 17000 to 
 7+). 
 I apply this new write thread model in HLog and the performance test in our 
 test cluster shows about 3X throughput improvement (from 12150 to 31520 for 1 
 RS, from 22000 to 7 for 5 RS), the 1 RS write throughput (1K row-size) 
 even beats the one of BigTable (Precolator published in 2011 says Bigtable's 
 write throughput then is 31002). I can provide the detailed performance test 
 results if anyone is interested.
 The change for new write thread model is as below:
  1 All put handler threads append the edits to HLog's local pending buffer; 
 (it notifies AsyncWriter thread that there is new edits in local buffer)
  2 All put handler threads wait in HLog.syncer() function for underlying 
 threads to finish the sync that contains its txid;
  3 An single AsyncWriter thread is responsible for retrieve all the buffered 
 edits in HLog's local pending buffer and write to the hdfs 
 (hlog.writer.append); (it notifies AsyncFlusher thread that there is new 
 writes to hdfs that needs a sync)
  4 An single AsyncFlusher thread is responsible for issuing a sync to hdfs 
 to persist the writes by AsyncWriter; (it notifies the AsyncNotifier thread 
 that sync watermark increases)
  5 An single AsyncNotifier thread is responsible for notifying all pending 
 put handler threads which are waiting in the HLog.syncer() function
  6 No LogSyncer thread any more (since there is always 
 AsyncWriter/AsyncFlusher threads do the same job it does)

--
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


[jira] [Commented] (HBASE-8669) change exploring compaction policy to prefer smaller compactions on blocked stores

2013-06-21 Thread Hudson (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8669?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690240#comment-13690240
 ] 

Hudson commented on HBASE-8669:
---

Integrated in HBase-TRUNK-on-Hadoop-2.0.0 #575 (See 
[https://builds.apache.org/job/HBase-TRUNK-on-Hadoop-2.0.0/575/])
HBASE-8669 change exploring compaction policy to prefer smaller compactions 
on blocked stores (Revision 1495261)

 Result = FAILURE
sershe : 
Files : 
* 
/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/ExploringCompactionPolicy.java
* 
/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultCompactSelection.java


 change exploring compaction policy to prefer smaller compactions on blocked 
 stores
 --

 Key: HBASE-8669
 URL: https://issues.apache.org/jira/browse/HBASE-8669
 Project: HBase
  Issue Type: Improvement
Reporter: Sergey Shelukhin
Assignee: Sergey Shelukhin
Priority: Minor
 Fix For: 0.95.2

 Attachments: HBASE-8669-v0.patch


 Side-note from HBASE-8665 discussion. When we compact a blocked store, we 
 might want to use a different heuristic to choose between the options.

--
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


[jira] [Commented] (HBASE-6295) Possible performance improvement in client batch operations: presplit and send in background

2013-06-21 Thread Nicolas Liochon (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-6295?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690253#comment-13690253
 ] 

Nicolas Liochon commented on HBASE-6295:


This was a little bit more painful that I was expecting.
I've done 3 modifications compared to trunk.
1) It's now initialized in AsyncProcess. This avoids a cast from HConnection to 
HConnectionImpl.
2) I'm reporting an error once per location and try instead of all rows within 
a try.
3) I've changed the internal structure to a concurrentMap.

The test are in progress locally. I will push the patch after the first 
successful run.

[~sershe], could you please git it a quick review? Ideally I would like to 
commit it today, this will save me some merges and will give it more trial 
before the next .95 release candidate...

 Possible performance improvement in client batch operations: presplit and 
 send in background
 

 Key: HBASE-6295
 URL: https://issues.apache.org/jira/browse/HBASE-6295
 Project: HBase
  Issue Type: Improvement
  Components: Client, Performance
Affects Versions: 0.95.2
Reporter: Nicolas Liochon
Assignee: Nicolas Liochon
  Labels: noob
 Fix For: 0.98.0

 Attachments: 6295.v11.patch, 6295.v12.patch, 6295.v14.patch, 
 6295.v1.patch, 6295.v2.patch, 6295.v3.patch, 6295.v4.patch, 6295.v5.patch, 
 6295.v6.patch, 6295.v8.patch, 6295.v9.patch


 today batch algo is:
 {noformat}
 for Operation o: ListOp{
   add o to todolist
   if todolist  maxsize or o last in list
 split todolist per location
 send split lists to region servers
 clear todolist
 wait
 }
 {noformat}
 We could:
 - create immediately the final object instead of an intermediate array
 - split per location immediately
 - instead of sending when the list as a whole is full, send it when there is 
 enough data for a single location
 It would be:
 {noformat}
 for Operation o: ListOp{
   get location
   add o to todo location.todolist
   if (location.todolist  maxLocationSize)
 send location.todolist to region server 
 clear location.todolist
 // don't wait, continue the loop
 }
 send remaining
 wait
 {noformat}
 It's not trivial to write if you add error management: retried list must be 
 shared with the operations added in the todolist. But it's doable.
 It's interesting mainly for 'big' writes

--
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


[jira] [Created] (HBASE-8783) RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong server name

2013-06-21 Thread Matteo Bertozzi (JIRA)
Matteo Bertozzi created HBASE-8783:
--

 Summary: RSSnapshotManager.ZKProcedureMemberRpcs may be 
initialized with the wrong server name
 Key: HBASE-8783
 URL: https://issues.apache.org/jira/browse/HBASE-8783
 Project: HBase
  Issue Type: Bug
  Components: snapshots
Affects Versions: 0.95.1, 0.94.8
Reporter: Matteo Bertozzi
Assignee: Matteo Bertozzi
Priority: Minor
 Fix For: 0.95.2, 0.94.9
 Attachments: HBASE-8783-0.94-v0.patch

The ZKProcedureMemberRpcs of the RegionServerSnapshotManager may be initialized 
with the wrong memberName.

{code}
2013-06-21 05:03:41,732 DEBUG 
org.apache.hadoop.hbase.regionserver.HRegionServer: Initialize Snapshot Manager
...
2013-06-21 05:03:41,875 INFO 
org.apache.hadoop.hbase.regionserver.HRegionServer: Master passed us hostname 
to use. Was=0.0.0.0, Now=srv-5.test.cloudera.com
{code}

The Region Server Name is used as memberName, but since the snapshot manger is 
initialized before the RS receives the server name used by the master, the 
zkprocedure will use the wrong name (0.0.0.0). 
This will case the snapshot to fail with a TimeoutException since the master 
will not receive the expected RS
{code}
Master:
ZKProcedureCoordinatorRpcs: Watching for acquire 
node:/hbase/online-snapshot/acquired/foo23/srv-5.test.cloudera.com,60020,1371813451915

RS:
ZKProcedureMemberRpcs: Member: '0.0.0.0,60020,1371814996779' joining acquired 
barrier for procedure (foo23) in zk

...
org.apache.hadoop.hbase.errorhandling.TimeoutException: Timeout elapsed! 
Source:Timeout caused Foreign Exception Start:1371798732141, End:1371798792141, 
diff:6, max:6 ms
{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


[jira] [Updated] (HBASE-8783) RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong server name

2013-06-21 Thread Matteo Bertozzi (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8783?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matteo Bertozzi updated HBASE-8783:
---

Attachment: HBASE-8783-0.94-v0.patch

 RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong 
 server name
 -

 Key: HBASE-8783
 URL: https://issues.apache.org/jira/browse/HBASE-8783
 Project: HBase
  Issue Type: Bug
  Components: snapshots
Affects Versions: 0.94.8, 0.95.1
Reporter: Matteo Bertozzi
Assignee: Matteo Bertozzi
Priority: Minor
 Fix For: 0.95.2, 0.94.9

 Attachments: HBASE-8783-0.94-v0.patch


 The ZKProcedureMemberRpcs of the RegionServerSnapshotManager may be 
 initialized with the wrong memberName.
 {code}
 2013-06-21 05:03:41,732 DEBUG 
 org.apache.hadoop.hbase.regionserver.HRegionServer: Initialize Snapshot 
 Manager
 ...
 2013-06-21 05:03:41,875 INFO 
 org.apache.hadoop.hbase.regionserver.HRegionServer: Master passed us hostname 
 to use. Was=0.0.0.0, Now=srv-5.test.cloudera.com
 {code}
 The Region Server Name is used as memberName, but since the snapshot manger 
 is initialized before the RS receives the server name used by the master, the 
 zkprocedure will use the wrong name (0.0.0.0). 
 This will case the snapshot to fail with a TimeoutException since the master 
 will not receive the expected RS
 {code}
 Master:
 ZKProcedureCoordinatorRpcs: Watching for acquire 
 node:/hbase/online-snapshot/acquired/foo23/srv-5.test.cloudera.com,60020,1371813451915
 RS:
 ZKProcedureMemberRpcs: Member: '0.0.0.0,60020,1371814996779' joining acquired 
 barrier for procedure (foo23) in zk
 ...
 org.apache.hadoop.hbase.errorhandling.TimeoutException: Timeout elapsed! 
 Source:Timeout caused Foreign Exception Start:1371798732141, 
 End:1371798792141, diff:6, max:6 ms
 {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


[jira] [Commented] (HBASE-8755) A new write thread model for HLog to improve the overall HBase write throughput

2013-06-21 Thread Jean-Marc Spaggiari (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8755?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690259#comment-13690259
 ] 

Jean-Marc Spaggiari commented on HBASE-8755:


Here are my results:
||Test||Trunk||8755||
|org.apache.hadoop.hbase.PerformanceEvaluation$FilteredScanTest|437101.8|431561.7|
|org.apache.hadoop.hbase.PerformanceEvaluation$RandomReadTest|774306.8|768559|
|org.apache.hadoop.hbase.PerformanceEvaluation$RandomScanWithRange100Test|21999.7|22277.6|
|org.apache.hadoop.hbase.PerformanceEvaluation$RandomSeekScanTest|134429.3|134370.9|
|org.apache.hadoop.hbase.PerformanceEvaluation$RandomWriteTest|112814.7|125324.2|
|org.apache.hadoop.hbase.PerformanceEvaluation$SequentialWriteTest|78574.42|80064.5|

It's time. so the smaller, the better. So overall, it's pretty the same 
results, except for the random write which are 11% slower.
|org.apache.hadoop.hbase.PerformanceEvaluation$FilteredScanTest|1.27%|
|org.apache.hadoop.hbase.PerformanceEvaluation$RandomReadTest|0.74%|
|org.apache.hadoop.hbase.PerformanceEvaluation$RandomScanWithRange100Test|-1.26%|
|org.apache.hadoop.hbase.PerformanceEvaluation$RandomSeekScanTest|0.04%|
|org.apache.hadoop.hbase.PerformanceEvaluation$RandomWriteTest|-11.09%|
|org.apache.hadoop.hbase.PerformanceEvaluation$SequentialWriteTest|-1.90%|

I will redo the RandomWrite tests and try them with 1, 10 and 100 thread to see 
if only mono-threaded access is impacted...


 A new write thread model for HLog to improve the overall HBase write 
 throughput
 ---

 Key: HBASE-8755
 URL: https://issues.apache.org/jira/browse/HBASE-8755
 Project: HBase
  Issue Type: Improvement
  Components: wal
Reporter: Feng Honghua
 Attachments: HBASE-8755-0.94-V0.patch, HBASE-8755-0.94-V1.patch, 
 HBASE-8755-trunk-V0.patch


 In current write model, each write handler thread (executing put()) will 
 individually go through a full 'append (hlog local buffer) = HLog writer 
 append (write to hdfs) = HLog writer sync (sync hdfs)' cycle for each write, 
 which incurs heavy race condition on updateLock and flushLock.
 The only optimization where checking if current syncTillHere  txid in 
 expectation for other thread help write/sync its own txid to hdfs and 
 omitting the write/sync actually help much less than expectation.
 Three of my colleagues(Ye Hangjun / Wu Zesheng / Zhang Peng) at Xiaomi 
 proposed a new write thread model for writing hdfs sequence file and the 
 prototype implementation shows a 4X improvement for throughput (from 17000 to 
 7+). 
 I apply this new write thread model in HLog and the performance test in our 
 test cluster shows about 3X throughput improvement (from 12150 to 31520 for 1 
 RS, from 22000 to 7 for 5 RS), the 1 RS write throughput (1K row-size) 
 even beats the one of BigTable (Precolator published in 2011 says Bigtable's 
 write throughput then is 31002). I can provide the detailed performance test 
 results if anyone is interested.
 The change for new write thread model is as below:
  1 All put handler threads append the edits to HLog's local pending buffer; 
 (it notifies AsyncWriter thread that there is new edits in local buffer)
  2 All put handler threads wait in HLog.syncer() function for underlying 
 threads to finish the sync that contains its txid;
  3 An single AsyncWriter thread is responsible for retrieve all the buffered 
 edits in HLog's local pending buffer and write to the hdfs 
 (hlog.writer.append); (it notifies AsyncFlusher thread that there is new 
 writes to hdfs that needs a sync)
  4 An single AsyncFlusher thread is responsible for issuing a sync to hdfs 
 to persist the writes by AsyncWriter; (it notifies the AsyncNotifier thread 
 that sync watermark increases)
  5 An single AsyncNotifier thread is responsible for notifying all pending 
 put handler threads which are waiting in the HLog.syncer() function
  6 No LogSyncer thread any more (since there is always 
 AsyncWriter/AsyncFlusher threads do the same job it does)

--
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


[jira] [Updated] (HBASE-8783) RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong server name

2013-06-21 Thread Matteo Bertozzi (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8783?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matteo Bertozzi updated HBASE-8783:
---

Status: Patch Available  (was: Open)

 RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong 
 server name
 -

 Key: HBASE-8783
 URL: https://issues.apache.org/jira/browse/HBASE-8783
 Project: HBase
  Issue Type: Bug
  Components: snapshots
Affects Versions: 0.95.1, 0.94.8
Reporter: Matteo Bertozzi
Assignee: Matteo Bertozzi
Priority: Minor
 Fix For: 0.95.2, 0.94.9

 Attachments: HBASE-8783-0.94-v0.patch, HBASE-8783-v0.patch


 The ZKProcedureMemberRpcs of the RegionServerSnapshotManager may be 
 initialized with the wrong memberName.
 {code}
 2013-06-21 05:03:41,732 DEBUG 
 org.apache.hadoop.hbase.regionserver.HRegionServer: Initialize Snapshot 
 Manager
 ...
 2013-06-21 05:03:41,875 INFO 
 org.apache.hadoop.hbase.regionserver.HRegionServer: Master passed us hostname 
 to use. Was=0.0.0.0, Now=srv-5.test.cloudera.com
 {code}
 The Region Server Name is used as memberName, but since the snapshot manger 
 is initialized before the RS receives the server name used by the master, the 
 zkprocedure will use the wrong name (0.0.0.0). 
 This will case the snapshot to fail with a TimeoutException since the master 
 will not receive the expected RS
 {code}
 Master:
 ZKProcedureCoordinatorRpcs: Watching for acquire 
 node:/hbase/online-snapshot/acquired/foo23/srv-5.test.cloudera.com,60020,1371813451915
 RS:
 ZKProcedureMemberRpcs: Member: '0.0.0.0,60020,1371814996779' joining acquired 
 barrier for procedure (foo23) in zk
 ...
 org.apache.hadoop.hbase.errorhandling.TimeoutException: Timeout elapsed! 
 Source:Timeout caused Foreign Exception Start:1371798732141, 
 End:1371798792141, diff:6, max:6 ms
 {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


[jira] [Updated] (HBASE-8783) RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong server name

2013-06-21 Thread Matteo Bertozzi (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8783?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matteo Bertozzi updated HBASE-8783:
---

Attachment: HBASE-8783-v0.patch

 RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong 
 server name
 -

 Key: HBASE-8783
 URL: https://issues.apache.org/jira/browse/HBASE-8783
 Project: HBase
  Issue Type: Bug
  Components: snapshots
Affects Versions: 0.94.8, 0.95.1
Reporter: Matteo Bertozzi
Assignee: Matteo Bertozzi
Priority: Minor
 Fix For: 0.95.2, 0.94.9

 Attachments: HBASE-8783-0.94-v0.patch, HBASE-8783-v0.patch


 The ZKProcedureMemberRpcs of the RegionServerSnapshotManager may be 
 initialized with the wrong memberName.
 {code}
 2013-06-21 05:03:41,732 DEBUG 
 org.apache.hadoop.hbase.regionserver.HRegionServer: Initialize Snapshot 
 Manager
 ...
 2013-06-21 05:03:41,875 INFO 
 org.apache.hadoop.hbase.regionserver.HRegionServer: Master passed us hostname 
 to use. Was=0.0.0.0, Now=srv-5.test.cloudera.com
 {code}
 The Region Server Name is used as memberName, but since the snapshot manger 
 is initialized before the RS receives the server name used by the master, the 
 zkprocedure will use the wrong name (0.0.0.0). 
 This will case the snapshot to fail with a TimeoutException since the master 
 will not receive the expected RS
 {code}
 Master:
 ZKProcedureCoordinatorRpcs: Watching for acquire 
 node:/hbase/online-snapshot/acquired/foo23/srv-5.test.cloudera.com,60020,1371813451915
 RS:
 ZKProcedureMemberRpcs: Member: '0.0.0.0,60020,1371814996779' joining acquired 
 barrier for procedure (foo23) in zk
 ...
 org.apache.hadoop.hbase.errorhandling.TimeoutException: Timeout elapsed! 
 Source:Timeout caused Foreign Exception Start:1371798732141, 
 End:1371798792141, diff:6, max:6 ms
 {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


[jira] [Commented] (HBASE-6295) Possible performance improvement in client batch operations: presplit and send in background

2013-06-21 Thread Jean-Marc Spaggiari (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-6295?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690262#comment-13690262
 ] 

Jean-Marc Spaggiari commented on HBASE-6295:


0.94 tests are in progress... the should be done by 12h30 EST. I might be able 
to provide the results at that time. If there is any need to re-run the trunk 
tests with this patch, just let me know. I will most probably by a 2nd tests 
dedicated server soon to be able to run more tests for all those JIRAs ;)

 Possible performance improvement in client batch operations: presplit and 
 send in background
 

 Key: HBASE-6295
 URL: https://issues.apache.org/jira/browse/HBASE-6295
 Project: HBase
  Issue Type: Improvement
  Components: Client, Performance
Affects Versions: 0.95.2
Reporter: Nicolas Liochon
Assignee: Nicolas Liochon
  Labels: noob
 Fix For: 0.98.0

 Attachments: 6295.v11.patch, 6295.v12.patch, 6295.v14.patch, 
 6295.v1.patch, 6295.v2.patch, 6295.v3.patch, 6295.v4.patch, 6295.v5.patch, 
 6295.v6.patch, 6295.v8.patch, 6295.v9.patch


 today batch algo is:
 {noformat}
 for Operation o: ListOp{
   add o to todolist
   if todolist  maxsize or o last in list
 split todolist per location
 send split lists to region servers
 clear todolist
 wait
 }
 {noformat}
 We could:
 - create immediately the final object instead of an intermediate array
 - split per location immediately
 - instead of sending when the list as a whole is full, send it when there is 
 enough data for a single location
 It would be:
 {noformat}
 for Operation o: ListOp{
   get location
   add o to todo location.todolist
   if (location.todolist  maxLocationSize)
 send location.todolist to region server 
 clear location.todolist
 // don't wait, continue the loop
 }
 send remaining
 wait
 {noformat}
 It's not trivial to write if you add error management: retried list must be 
 shared with the operations added in the todolist. But it's doable.
 It's interesting mainly for 'big' writes

--
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


[jira] [Commented] (HBASE-8783) RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong server name

2013-06-21 Thread Matteo Bertozzi (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8783?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690264#comment-13690264
 ] 

Matteo Bertozzi commented on HBASE-8783:


patch to delay the memberName initialization on start() instead of doing that 
in the constructor.

 RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong 
 server name
 -

 Key: HBASE-8783
 URL: https://issues.apache.org/jira/browse/HBASE-8783
 Project: HBase
  Issue Type: Bug
  Components: snapshots
Affects Versions: 0.94.8, 0.95.1
Reporter: Matteo Bertozzi
Assignee: Matteo Bertozzi
Priority: Minor
 Fix For: 0.95.2, 0.94.9

 Attachments: HBASE-8783-0.94-v0.patch, HBASE-8783-v0.patch


 The ZKProcedureMemberRpcs of the RegionServerSnapshotManager may be 
 initialized with the wrong memberName.
 {code}
 2013-06-21 05:03:41,732 DEBUG 
 org.apache.hadoop.hbase.regionserver.HRegionServer: Initialize Snapshot 
 Manager
 ...
 2013-06-21 05:03:41,875 INFO 
 org.apache.hadoop.hbase.regionserver.HRegionServer: Master passed us hostname 
 to use. Was=0.0.0.0, Now=srv-5.test.cloudera.com
 {code}
 The Region Server Name is used as memberName, but since the snapshot manger 
 is initialized before the RS receives the server name used by the master, the 
 zkprocedure will use the wrong name (0.0.0.0). 
 This will case the snapshot to fail with a TimeoutException since the master 
 will not receive the expected RS
 {code}
 Master:
 ZKProcedureCoordinatorRpcs: Watching for acquire 
 node:/hbase/online-snapshot/acquired/foo23/srv-5.test.cloudera.com,60020,1371813451915
 RS:
 ZKProcedureMemberRpcs: Member: '0.0.0.0,60020,1371814996779' joining acquired 
 barrier for procedure (foo23) in zk
 ...
 org.apache.hadoop.hbase.errorhandling.TimeoutException: Timeout elapsed! 
 Source:Timeout caused Foreign Exception Start:1371798732141, 
 End:1371798792141, diff:6, max:6 ms
 {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


[jira] [Commented] (HBASE-8755) A new write thread model for HLog to improve the overall HBase write throughput

2013-06-21 Thread Lars Hofhansl (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8755?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690288#comment-13690288
 ] 

Lars Hofhansl commented on HBASE-8755:
--

Interesting. For writing the WAL it should not make any difference whether we 
write sequentially or at random.
A possible reason is that the batching there is less efficient, maybe that 
brings out the extra thread hand off needed here.
(my test was the equivalent of a sequential write, but using a handcoded test)


 A new write thread model for HLog to improve the overall HBase write 
 throughput
 ---

 Key: HBASE-8755
 URL: https://issues.apache.org/jira/browse/HBASE-8755
 Project: HBase
  Issue Type: Improvement
  Components: wal
Reporter: Feng Honghua
 Attachments: HBASE-8755-0.94-V0.patch, HBASE-8755-0.94-V1.patch, 
 HBASE-8755-trunk-V0.patch


 In current write model, each write handler thread (executing put()) will 
 individually go through a full 'append (hlog local buffer) = HLog writer 
 append (write to hdfs) = HLog writer sync (sync hdfs)' cycle for each write, 
 which incurs heavy race condition on updateLock and flushLock.
 The only optimization where checking if current syncTillHere  txid in 
 expectation for other thread help write/sync its own txid to hdfs and 
 omitting the write/sync actually help much less than expectation.
 Three of my colleagues(Ye Hangjun / Wu Zesheng / Zhang Peng) at Xiaomi 
 proposed a new write thread model for writing hdfs sequence file and the 
 prototype implementation shows a 4X improvement for throughput (from 17000 to 
 7+). 
 I apply this new write thread model in HLog and the performance test in our 
 test cluster shows about 3X throughput improvement (from 12150 to 31520 for 1 
 RS, from 22000 to 7 for 5 RS), the 1 RS write throughput (1K row-size) 
 even beats the one of BigTable (Precolator published in 2011 says Bigtable's 
 write throughput then is 31002). I can provide the detailed performance test 
 results if anyone is interested.
 The change for new write thread model is as below:
  1 All put handler threads append the edits to HLog's local pending buffer; 
 (it notifies AsyncWriter thread that there is new edits in local buffer)
  2 All put handler threads wait in HLog.syncer() function for underlying 
 threads to finish the sync that contains its txid;
  3 An single AsyncWriter thread is responsible for retrieve all the buffered 
 edits in HLog's local pending buffer and write to the hdfs 
 (hlog.writer.append); (it notifies AsyncFlusher thread that there is new 
 writes to hdfs that needs a sync)
  4 An single AsyncFlusher thread is responsible for issuing a sync to hdfs 
 to persist the writes by AsyncWriter; (it notifies the AsyncNotifier thread 
 that sync watermark increases)
  5 An single AsyncNotifier thread is responsible for notifying all pending 
 put handler threads which are waiting in the HLog.syncer() function
  6 No LogSyncer thread any more (since there is always 
 AsyncWriter/AsyncFlusher threads do the same job it does)

--
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


[jira] [Commented] (HBASE-8782) Thrift2 can not parse values when using framed transport

2013-06-21 Thread Lars George (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8782?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690297#comment-13690297
 ] 

Lars George commented on HBASE-8782:


Will review over weekend.

 Thrift2 can not parse values when using framed transport
 

 Key: HBASE-8782
 URL: https://issues.apache.org/jira/browse/HBASE-8782
 Project: HBase
  Issue Type: Bug
  Components: Thrift
Affects Versions: 0.95.1
Reporter: Hamed Madani
 Attachments: HBASE_8782.patch


 ThriftHBaseServiceHandler.java use .array() on table names , and values 
 (family , qualifier in checkandDelete , etc) which resulted in incorrect 
 values with framed transport. Replacing .array() with getBytes() fixed this 
 problem. I've attached the patch
 EDIT: updated the patch to cover checkAndPut(), checkAndDelete()

--
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


[jira] [Updated] (HBASE-6295) Possible performance improvement in client batch operations: presplit and send in background

2013-06-21 Thread Nicolas Liochon (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-6295?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nicolas Liochon updated HBASE-6295:
---

Attachment: 6295.v15.patch

 Possible performance improvement in client batch operations: presplit and 
 send in background
 

 Key: HBASE-6295
 URL: https://issues.apache.org/jira/browse/HBASE-6295
 Project: HBase
  Issue Type: Improvement
  Components: Client, Performance
Affects Versions: 0.95.2
Reporter: Nicolas Liochon
Assignee: Nicolas Liochon
  Labels: noob
 Fix For: 0.98.0

 Attachments: 6295.v11.patch, 6295.v12.patch, 6295.v14.patch, 
 6295.v15.patch, 6295.v1.patch, 6295.v2.patch, 6295.v3.patch, 6295.v4.patch, 
 6295.v5.patch, 6295.v6.patch, 6295.v8.patch, 6295.v9.patch


 today batch algo is:
 {noformat}
 for Operation o: ListOp{
   add o to todolist
   if todolist  maxsize or o last in list
 split todolist per location
 send split lists to region servers
 clear todolist
 wait
 }
 {noformat}
 We could:
 - create immediately the final object instead of an intermediate array
 - split per location immediately
 - instead of sending when the list as a whole is full, send it when there is 
 enough data for a single location
 It would be:
 {noformat}
 for Operation o: ListOp{
   get location
   add o to todo location.todolist
   if (location.todolist  maxLocationSize)
 send location.todolist to region server 
 clear location.todolist
 // don't wait, continue the loop
 }
 send remaining
 wait
 {noformat}
 It's not trivial to write if you add error management: retried list must be 
 shared with the operations added in the todolist. But it's doable.
 It's interesting mainly for 'big' writes

--
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


[jira] [Commented] (HBASE-8755) A new write thread model for HLog to improve the overall HBase write throughput

2013-06-21 Thread stack (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8755?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690375#comment-13690375
 ] 

stack commented on HBASE-8755:
--

[~jmspaggi] Thanks boss.  What test is this?  YCSB w/ how many clients?  Thank 
you sir.

 A new write thread model for HLog to improve the overall HBase write 
 throughput
 ---

 Key: HBASE-8755
 URL: https://issues.apache.org/jira/browse/HBASE-8755
 Project: HBase
  Issue Type: Improvement
  Components: wal
Reporter: Feng Honghua
 Attachments: HBASE-8755-0.94-V0.patch, HBASE-8755-0.94-V1.patch, 
 HBASE-8755-trunk-V0.patch


 In current write model, each write handler thread (executing put()) will 
 individually go through a full 'append (hlog local buffer) = HLog writer 
 append (write to hdfs) = HLog writer sync (sync hdfs)' cycle for each write, 
 which incurs heavy race condition on updateLock and flushLock.
 The only optimization where checking if current syncTillHere  txid in 
 expectation for other thread help write/sync its own txid to hdfs and 
 omitting the write/sync actually help much less than expectation.
 Three of my colleagues(Ye Hangjun / Wu Zesheng / Zhang Peng) at Xiaomi 
 proposed a new write thread model for writing hdfs sequence file and the 
 prototype implementation shows a 4X improvement for throughput (from 17000 to 
 7+). 
 I apply this new write thread model in HLog and the performance test in our 
 test cluster shows about 3X throughput improvement (from 12150 to 31520 for 1 
 RS, from 22000 to 7 for 5 RS), the 1 RS write throughput (1K row-size) 
 even beats the one of BigTable (Precolator published in 2011 says Bigtable's 
 write throughput then is 31002). I can provide the detailed performance test 
 results if anyone is interested.
 The change for new write thread model is as below:
  1 All put handler threads append the edits to HLog's local pending buffer; 
 (it notifies AsyncWriter thread that there is new edits in local buffer)
  2 All put handler threads wait in HLog.syncer() function for underlying 
 threads to finish the sync that contains its txid;
  3 An single AsyncWriter thread is responsible for retrieve all the buffered 
 edits in HLog's local pending buffer and write to the hdfs 
 (hlog.writer.append); (it notifies AsyncFlusher thread that there is new 
 writes to hdfs that needs a sync)
  4 An single AsyncFlusher thread is responsible for issuing a sync to hdfs 
 to persist the writes by AsyncWriter; (it notifies the AsyncNotifier thread 
 that sync watermark increases)
  5 An single AsyncNotifier thread is responsible for notifying all pending 
 put handler threads which are waiting in the HLog.syncer() function
  6 No LogSyncer thread any more (since there is always 
 AsyncWriter/AsyncFlusher threads do the same job it does)

--
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


[jira] [Commented] (HBASE-8667) Master and Regionserver not able to communicate if both bound to different network interfaces on the same machine.

2013-06-21 Thread stack (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8667?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690381#comment-13690381
 ] 

stack commented on HBASE-8667:
--

So, to be clear here... the master will use the hostname the RS gives it.  It 
will not try to resolve the name the RS gives it and use the resolved name 
instead.  Let me try this patch on a cluster where reverse dns is broke to make 
sure we don't see the doubled-RS issue.

 Master and Regionserver not able to communicate if both bound to different 
 network interfaces on the same machine.
 --

 Key: HBASE-8667
 URL: https://issues.apache.org/jira/browse/HBASE-8667
 Project: HBase
  Issue Type: Bug
  Components: IPC/RPC
Reporter: rajeshbabu
Assignee: rajeshbabu
 Fix For: 0.98.0, 0.95.2, 0.94.9

 Attachments: HBASE-8667_trunk.patch, HBASE-8667_Trunk.patch, 
 HBASE-8667_Trunk-V2.patch, HBASE-8667_trunk_v4.patch, 
 HBASE-8667_trunk_v5.patch


 While testing HBASE-8640 fix found that master and regionserver running on 
 different interfaces are not communicating properly.
 I have two interfaces 1) lo 2) eth0 in my machine and default hostname 
 interface is lo.
 I have configured master ipc address to ip of eth0 interface.
 Started master and regionserver on the same machine.
 1) master rpc server bound to eth0 and RS rpc server bound to lo
 2) Since rpc client is not binding to any ip address, when RS is reporting RS 
 startup its getting registered with eth0 ip address(but actually it should 
 register localhost)
 Here are RS logs:
 {code}
 2013-05-31 06:05:28,608 WARN  [regionserver60020] 
 org.apache.hadoop.hbase.regionserver.HRegionServer: reportForDuty failed; 
 sleeping and then retrying.
 2013-05-31 06:05:31,609 INFO  [regionserver60020] 
 org.apache.hadoop.hbase.regionserver.HRegionServer: Attempting connect to 
 Master server at 192.168.0.100,6,1369960497008
 2013-05-31 06:05:31,609 INFO  [regionserver60020] 
 org.apache.hadoop.hbase.regionserver.HRegionServer: Telling master at 
 192.168.0.100,6,1369960497008 that we are up with port=60020, 
 startcode=1369960502544
 2013-05-31 06:05:31,618 DEBUG [regionserver60020] 
 org.apache.hadoop.hbase.regionserver.HRegionServer: Config from master: 
 hbase.rootdir=hdfs://localhost:2851/hbase
 2013-05-31 06:05:31,618 DEBUG [regionserver60020] 
 org.apache.hadoop.hbase.regionserver.HRegionServer: Config from master: 
 fs.default.name=hdfs://localhost:2851
 2013-05-31 06:05:31,618 INFO  [regionserver60020] 
 org.apache.hadoop.hbase.regionserver.HRegionServer: Master passed us a 
 different hostname to use; was=localhost, but now=192.168.0.100
 {code}
 Here are master logs:
 {code}
 2013-05-31 06:05:31,615 INFO  [IPC Server handler 9 on 6] 
 org.apache.hadoop.hbase.master.ServerManager: Registering 
 server=192.168.0.100,60020,1369960502544
 {code}
 Since master has wrong rpc server address of RS, META is not getting assigned.
 {code}
 2013-05-31 06:05:34,362 DEBUG [master-192.168.0.100,6,1369960497008] 
 org.apache.hadoop.hbase.master.AssignmentManager: No previous transition plan 
 was found (or we are ignoring an existing plan) for .META.,,1.1028785192 so 
 generated a random one; hri=.META.,,1.1028785192, src=, 
 dest=192.168.0.100,60020,1369960502544; 1 (online=1, available=1) available 
 servers, forceNewPlan=false
 -
 org.apache.hadoop.hbase.master.AssignmentManager: Failed assignment of 
 .META.,,1.1028785192 to 192.168.0.100,60020,1369960502544, trying to assign 
 elsewhere instead; try=1 of 10
 java.net.ConnectException: Connection refused
   at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
   at 
 sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:592)
   at 
 org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)
   at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:511)
   at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:481)
   at 
 org.apache.hadoop.hbase.ipc.RpcClient$Connection.setupConnection(RpcClient.java:549)
   at 
 org.apache.hadoop.hbase.ipc.RpcClient$Connection.setupIOstreams(RpcClient.java:813)
   at 
 org.apache.hadoop.hbase.ipc.RpcClient.getConnection(RpcClient.java:1422)
   at org.apache.hadoop.hbase.ipc.RpcClient.call(RpcClient.java:1315)
   at 
 org.apache.hadoop.hbase.ipc.RpcClient.callBlockingMethod(RpcClient.java:1532)
   at 
 org.apache.hadoop.hbase.ipc.RpcClient$BlockingRpcChannelImplementation.callBlockingMethod(RpcClient.java:1587)
   at 
 org.apache.hadoop.hbase.protobuf.generated.AdminProtos$AdminService$BlockingStub.openRegion(AdminProtos.java:15039)
   at 
 

[jira] [Commented] (HBASE-8015) Support for Namespaces

2013-06-21 Thread Francis Liu (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8015?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690392#comment-13690392
 ] 

Francis Liu commented on HBASE-8015:


{quote}
You mean Y! They are using '.' for separator currently?
{quote}
The only dots we use are for namespaces and that's only in our sandbox so no 
worries there. My concern was that we'd have to ask users to upgrade their code 
in order to start using namespaces.  

So we'll have an internal delimiter '.' and an external one for external tools 
such as cli, rest(?), etc. But for the java apis we won't recognize an FQTN 
string in the public apis?

{quote}
I thought you had trick to make '.' work?
{quote}
Yes, I do. [~enis] pointed out that we will have to live with that trick in 
later versions. Just making sure you guys are ok with that. Have a look at it 
on github, just look at TableName.java that should help you get the gist of it.



 Support for Namespaces
 --

 Key: HBASE-8015
 URL: https://issues.apache.org/jira/browse/HBASE-8015
 Project: HBase
  Issue Type: New Feature
Reporter: Francis Liu
Assignee: Francis Liu
 Attachments: HBASE-8015_draft_94.patch, Namespace Design.pdf




--
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


[jira] [Commented] (HBASE-8015) Support for Namespaces

2013-06-21 Thread stack (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8015?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690410#comment-13690410
 ] 

stack commented on HBASE-8015:
--

The legacy Y! namespacers does compllicate things.  If we are not to unsettle 
them, the decision is made already and the override to add NS is out?

This is 0.96.  Y! will have to do a 'migration' to go up on 0.96 anyways?  Can 
you think of a 'step' that you could add for Y! cluster that would help here?

Your users are doing 'new HTable(conf, ns.sometable);' and away they go?

bq. But for the java apis we won't recognize an FQTN string in the public apis?

Well, there would be helper classes for making sense of the FQTN that could be 
used by shell, rest, etc., but, yeah, the thought would be that in the API, 
there is no namepacing, not unless you ask for it explicitly.

Let me look at the trick for how much we'd have to carry into the future.

 Support for Namespaces
 --

 Key: HBASE-8015
 URL: https://issues.apache.org/jira/browse/HBASE-8015
 Project: HBase
  Issue Type: New Feature
Reporter: Francis Liu
Assignee: Francis Liu
 Attachments: HBASE-8015_draft_94.patch, Namespace Design.pdf




--
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


[jira] [Created] (HBASE-8784) Wildcard/Range/Partition Delete Support

2013-06-21 Thread Lars George (JIRA)
Lars George created HBASE-8784:
--

 Summary: Wildcard/Range/Partition Delete Support
 Key: HBASE-8784
 URL: https://issues.apache.org/jira/browse/HBASE-8784
 Project: HBase
  Issue Type: New Feature
  Components: Client, Deletes, regionserver
Reporter: Lars George


We often see use-cases where users, for example with timeseries data, would 
like to do deletes of large ranges of data, basically like a delete of a 
partition as supported by RDBMSs. We should support regular expressions or 
range expressions for the matches (supporting binary keys obviously).

The idea is to store the deletes not with the data, but the meta data. When we 
read files we read the larger deletes first, and then the inline ones. Of 
course, this should be reserved for few but very data intensive deletes. This 
reduces the number of deletes to write to one, instead of many (often 
thousands, if not millions). This is different from the BulkDeleteEndpoint 
introduced in HBASE-6942. It should support similar Scan based selectiveness. 

The new range deletes will mask out all the matching data and handled otherwise 
like other deletes, for example being dropped during major compactions, once 
all masked data has been dropped too.

To be discussed is how and where we store the delete entry in practice, since 
meta data might not be wanted. But it seems like a reasonable choice. The 
DeleteTracker can handle the delete the same with additional checks for 
wildcards/ranges. If the deletes are not used, no critical path is affected, 
therefore not causing any additional latencies or other regressions.

--
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


[jira] [Commented] (HBASE-8783) RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong server name

2013-06-21 Thread stack (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8783?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690415#comment-13690415
 ] 

stack commented on HBASE-8783:
--

This is right Matteo:

-LOG.debug(Starting the controller for procedure member: + 
zkProc.getMemberName());
+LOG.debug(Starting the controller for procedure member: + coordName);

... because above it you undo use of coordName.

ZKProcedureUtil does not need memberName?  Was just a nice-to-have?

Otherwise patch looks good to me.  +1

 RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong 
 server name
 -

 Key: HBASE-8783
 URL: https://issues.apache.org/jira/browse/HBASE-8783
 Project: HBase
  Issue Type: Bug
  Components: snapshots
Affects Versions: 0.94.8, 0.95.1
Reporter: Matteo Bertozzi
Assignee: Matteo Bertozzi
Priority: Minor
 Fix For: 0.95.2, 0.94.9

 Attachments: HBASE-8783-0.94-v0.patch, HBASE-8783-v0.patch


 The ZKProcedureMemberRpcs of the RegionServerSnapshotManager may be 
 initialized with the wrong memberName.
 {code}
 2013-06-21 05:03:41,732 DEBUG 
 org.apache.hadoop.hbase.regionserver.HRegionServer: Initialize Snapshot 
 Manager
 ...
 2013-06-21 05:03:41,875 INFO 
 org.apache.hadoop.hbase.regionserver.HRegionServer: Master passed us hostname 
 to use. Was=0.0.0.0, Now=srv-5.test.cloudera.com
 {code}
 The Region Server Name is used as memberName, but since the snapshot manger 
 is initialized before the RS receives the server name used by the master, the 
 zkprocedure will use the wrong name (0.0.0.0). 
 This will case the snapshot to fail with a TimeoutException since the master 
 will not receive the expected RS
 {code}
 Master:
 ZKProcedureCoordinatorRpcs: Watching for acquire 
 node:/hbase/online-snapshot/acquired/foo23/srv-5.test.cloudera.com,60020,1371813451915
 RS:
 ZKProcedureMemberRpcs: Member: '0.0.0.0,60020,1371814996779' joining acquired 
 barrier for procedure (foo23) in zk
 ...
 org.apache.hadoop.hbase.errorhandling.TimeoutException: Timeout elapsed! 
 Source:Timeout caused Foreign Exception Start:1371798732141, 
 End:1371798792141, diff:6, max:6 ms
 {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


[jira] [Commented] (HBASE-8783) RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong server name

2013-06-21 Thread Matteo Bertozzi (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8783?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690425#comment-13690425
 ] 

Matteo Bertozzi commented on HBASE-8783:


{quote}ZKProcedureUtil does not need memberName? Was just a nice-to-have?{quote}
the class operates only on the procedure and not on the member.
ZKProcedureMemberRpcs (the user of ZKProcedureUtil) should know the memberName 
(coordName).
I think that both class names are quite explanatory, my guess is that was 
something not cleaned up.

 RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong 
 server name
 -

 Key: HBASE-8783
 URL: https://issues.apache.org/jira/browse/HBASE-8783
 Project: HBase
  Issue Type: Bug
  Components: snapshots
Affects Versions: 0.94.8, 0.95.1
Reporter: Matteo Bertozzi
Assignee: Matteo Bertozzi
Priority: Minor
 Fix For: 0.95.2, 0.94.9

 Attachments: HBASE-8783-0.94-v0.patch, HBASE-8783-v0.patch


 The ZKProcedureMemberRpcs of the RegionServerSnapshotManager may be 
 initialized with the wrong memberName.
 {code}
 2013-06-21 05:03:41,732 DEBUG 
 org.apache.hadoop.hbase.regionserver.HRegionServer: Initialize Snapshot 
 Manager
 ...
 2013-06-21 05:03:41,875 INFO 
 org.apache.hadoop.hbase.regionserver.HRegionServer: Master passed us hostname 
 to use. Was=0.0.0.0, Now=srv-5.test.cloudera.com
 {code}
 The Region Server Name is used as memberName, but since the snapshot manger 
 is initialized before the RS receives the server name used by the master, the 
 zkprocedure will use the wrong name (0.0.0.0). 
 This will case the snapshot to fail with a TimeoutException since the master 
 will not receive the expected RS
 {code}
 Master:
 ZKProcedureCoordinatorRpcs: Watching for acquire 
 node:/hbase/online-snapshot/acquired/foo23/srv-5.test.cloudera.com,60020,1371813451915
 RS:
 ZKProcedureMemberRpcs: Member: '0.0.0.0,60020,1371814996779' joining acquired 
 barrier for procedure (foo23) in zk
 ...
 org.apache.hadoop.hbase.errorhandling.TimeoutException: Timeout elapsed! 
 Source:Timeout caused Foreign Exception Start:1371798732141, 
 End:1371798792141, diff:6, max:6 ms
 {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


[jira] [Commented] (HBASE-8784) Wildcard/Range/Partition Delete Support

2013-06-21 Thread Lars Hofhansl (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8784?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690437#comment-13690437
 ] 

Lars Hofhansl commented on HBASE-8784:
--

Interesting idea. You want to store these in the HFiles' metadata block? Or 
somehow in .META.? Or in a new new DeleteRange table?

We have a similar problem, and we decided to resort to coprocessor hooks during 
compactions, where the hook reads the metadata from somewhere else and then 
just filters the data out by some criteria. Obviously this only works in 
delete this stuff some time when you get to it type scenarios.


 Wildcard/Range/Partition Delete Support
 ---

 Key: HBASE-8784
 URL: https://issues.apache.org/jira/browse/HBASE-8784
 Project: HBase
  Issue Type: New Feature
  Components: Client, Deletes, regionserver
Reporter: Lars George

 We often see use-cases where users, for example with timeseries data, would 
 like to do deletes of large ranges of data, basically like a delete of a 
 partition as supported by RDBMSs. We should support regular expressions or 
 range expressions for the matches (supporting binary keys obviously).
 The idea is to store the deletes not with the data, but the meta data. When 
 we read files we read the larger deletes first, and then the inline ones. Of 
 course, this should be reserved for few but very data intensive deletes. This 
 reduces the number of deletes to write to one, instead of many (often 
 thousands, if not millions). This is different from the BulkDeleteEndpoint 
 introduced in HBASE-6942. It should support similar Scan based selectiveness. 
 The new range deletes will mask out all the matching data and handled 
 otherwise like other deletes, for example being dropped during major 
 compactions, once all masked data has been dropped too.
 To be discussed is how and where we store the delete entry in practice, since 
 meta data might not be wanted. But it seems like a reasonable choice. The 
 DeleteTracker can handle the delete the same with additional checks for 
 wildcards/ranges. If the deletes are not used, no critical path is affected, 
 therefore not causing any additional latencies or other regressions.

--
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


[jira] [Commented] (HBASE-8721) Deletes can mask puts that happen after the delete

2013-06-21 Thread Andrew Purtell (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8721?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690464#comment-13690464
 ] 

Andrew Purtell commented on HBASE-8721:
---

[~saint@gmail.com] Did that once before. Looking at votes, we have: Lars 
(-1), Sergey (-0), me (-0). If we tease this apart, we get HBASE-8770, where 
looks like we have a way forward on addressing this part:

Feng:
{quote}
User can always read the put by 4. It's more natural and intuitive:
1 put a kv (timestamp = T0), and flush;
2 delete that kv using a DeleteColumn type kv with timestamp T0 (or any 
timestamp = T0), and flush;
3 a major compact occurs [or not];
4 put that kv again (timestamp = T0);
5 read that kv;
===
a) if a major compact occurs at step 3, then step 5 will get the put written 
at step 4
b) if no major compact occurs at step 3, then step 5 get nothing
{quote}

But for the other part of the argument, expressed by Hangjun:

{quote}
tiemstamp is a logical version, which is often the same as the 
happened-before relationship inside hbase, but not necessarily have to be. 
User could assign any semantics to it since it has been exposed and user could 
set it explicitly. [...] Conceptually decoupling the timestamp and the 
happened-before relationship inside hbase should give users more flexibility 
to decide how to use it.
{quote}

the discussion consensus reads to me as: users submitting their own timestamps 
have to actually produce happened-before relationships by issuing ops with 
_different_ timestamps, and not rely on HBase to also remember op arrival order 
internally for breaking ties when the ops have the same logical time. 

We have a standing firm -1 on changing that part. What do you think? Would you 
+1 it? Under what circumstances would Lars change his -1 to a +1? I don't see 
that but don't presume to speak for him.


 Deletes can mask puts that happen after the delete
 --

 Key: HBASE-8721
 URL: https://issues.apache.org/jira/browse/HBASE-8721
 Project: HBase
  Issue Type: Improvement
  Components: regionserver
Reporter: Feng Honghua
 Attachments: HBASE-8721-0.94-V0.patch


 this fix aims for bug mentioned in http://hbase.apache.org/book.html 5.8.2.1:
 Deletes mask puts, even puts that happened after the delete was entered. 
 Remember that a delete writes a tombstone, which only disappears after then 
 next major compaction has run. Suppose you do a delete of everything = T. 
 After this you do a new put with a timestamp = T. This put, even if it 
 happened after the delete, will be masked by the delete tombstone. Performing 
 the put will not fail, but when you do a get you will notice the put did have 
 no effect. It will start working again after the major compaction has run. 
 These issues should not be a problem if you use always-increasing versions 
 for new puts to a row. But they can occur even if you do not care about time: 
 just do delete and put immediately after each other, and there is some chance 
 they happen within the same millisecond.

--
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


[jira] [Commented] (HBASE-8721) Deletes can mask puts that happen after the delete

2013-06-21 Thread Sergey Shelukhin (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8721?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690482#comment-13690482
 ] 

Sergey Shelukhin commented on HBASE-8721:
-

note that there are two arguments here, one is for real glitch with major 
compactions removing the markers as described; and one for adding a delete with 
a semantic that will be internal sequence-based and ignore put timestamps 
completely (previous-in-sequence puts removed, next-in-sequence puts visible 
despite timestamps. By extension this delete semantic will obviously not have 
the major-compaction-related glitch, but this is a side-effect, not the main 
argument for such semantics.
Let's not conflate them...


 Deletes can mask puts that happen after the delete
 --

 Key: HBASE-8721
 URL: https://issues.apache.org/jira/browse/HBASE-8721
 Project: HBase
  Issue Type: Improvement
  Components: regionserver
Reporter: Feng Honghua
 Attachments: HBASE-8721-0.94-V0.patch


 this fix aims for bug mentioned in http://hbase.apache.org/book.html 5.8.2.1:
 Deletes mask puts, even puts that happened after the delete was entered. 
 Remember that a delete writes a tombstone, which only disappears after then 
 next major compaction has run. Suppose you do a delete of everything = T. 
 After this you do a new put with a timestamp = T. This put, even if it 
 happened after the delete, will be masked by the delete tombstone. Performing 
 the put will not fail, but when you do a get you will notice the put did have 
 no effect. It will start working again after the major compaction has run. 
 These issues should not be a problem if you use always-increasing versions 
 for new puts to a row. But they can occur even if you do not care about time: 
 just do delete and put immediately after each other, and there is some chance 
 they happen within the same millisecond.

--
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


[jira] [Commented] (HBASE-8015) Support for Namespaces

2013-06-21 Thread Francis Liu (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8015?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690489#comment-13690489
 ] 

Francis Liu commented on HBASE-8015:


{quote}
The legacy Y! namespacers does compllicate things. If we are not to unsettle 
them, the decision is made already and the override to add NS is out?
{quote}
We are not married to the current implementation yet. But we have production 
users who are married to the old api and would require them to upgrade their 
code to use the new override apis as opposed to a table name change if we 
recognized FQTN strings in the existing api. I suspect other users will 
encounter the same problem.

Essentially what I'm asking is if it would be acceptable to recognize FQTN 
strings in the old api alongside implementing override?

What are we buying if we are going to support an external delimiter as well as 
an internal delimiter but avoid the old api from recognizing FQTN string? 


*Nit side note: Shouldn't it be be called overload (not override), since we are 
planning on overloading a a method or am I thinking of one of the other 
approaches?

 

 Support for Namespaces
 --

 Key: HBASE-8015
 URL: https://issues.apache.org/jira/browse/HBASE-8015
 Project: HBase
  Issue Type: New Feature
Reporter: Francis Liu
Assignee: Francis Liu
 Attachments: HBASE-8015_draft_94.patch, Namespace Design.pdf




--
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


[jira] [Updated] (HBASE-8662) [rest] support impersonation

2013-06-21 Thread Jimmy Xiang (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8662?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jimmy Xiang updated HBASE-8662:
---

Attachment: trunk-8662_v4.patch

I attached patch v4. It uses AuthFilter which can pass configuration to auth 
handlers to support plugability.  It uses a context to store thread local 
effective user for impersonation per RPC call, instead of maintaining 
connections per context.  This way doesn't involve too much code change to pass 
the effective user from client down to the RPC layer.

 [rest] support impersonation
 

 Key: HBASE-8662
 URL: https://issues.apache.org/jira/browse/HBASE-8662
 Project: HBase
  Issue Type: Sub-task
  Components: REST, security
Reporter: Jimmy Xiang
Assignee: Jimmy Xiang
 Fix For: 0.98.0

 Attachments: method_doas.patch, secure_rest.patch, trunk-8662.patch, 
 trunk-8662_v2.patch, trunk-8662_v3.patch, trunk-8662_v4.patch


 Currently, our client API uses a fixed user: the current user. It should 
 accept a user passed in, if authenticated.

--
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


[jira] [Commented] (HBASE-8776) port HBASE-8723 to 0.94

2013-06-21 Thread Sergey Shelukhin (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8776?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690508#comment-13690508
 ] 

Sergey Shelukhin commented on HBASE-8776:
-

Default ZK timeout is 40s due to default in ZK config trumping out 180s. 
default.
The problem, with 40s and especially 180s, is that with current retries we 
cannot even ride over one RS crash if it goes down in a bad way (w/o closing 
the socket to ZK resulting in immediate recovery).
This is not specific to integration test.


 port HBASE-8723 to 0.94
 ---

 Key: HBASE-8776
 URL: https://issues.apache.org/jira/browse/HBASE-8776
 Project: HBase
  Issue Type: Bug
Affects Versions: 0.94.8
Reporter: Sergey Shelukhin
Assignee: Sergey Shelukhin
 Fix For: 0.94.9

 Attachments: HBASE-8776-v0.patch




--
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


[jira] [Commented] (HBASE-8776) port HBASE-8723 to 0.94

2013-06-21 Thread Sergey Shelukhin (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8776?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690509#comment-13690509
 ] 

Sergey Shelukhin commented on HBASE-8776:
-

Interesting fact about integration test is that by default, when CM kills RS, 
socket is closed to ZK so ZK session insta-terminates, and master 
insta-recovers. A more realistic scenario for e.g. network issues is that ZK 
session timeout actually takes place, so recovery is delayed by 40s., and put 
is highly likely to fail because current retries are no more than ~71sec. long, 
and last server selection is done at 39sec. in 94

 port HBASE-8723 to 0.94
 ---

 Key: HBASE-8776
 URL: https://issues.apache.org/jira/browse/HBASE-8776
 Project: HBase
  Issue Type: Bug
Affects Versions: 0.94.8
Reporter: Sergey Shelukhin
Assignee: Sergey Shelukhin
 Fix For: 0.94.9

 Attachments: HBASE-8776-v0.patch




--
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


[jira] [Created] (HBASE-8785) revise zookeeper session timeout setting

2013-06-21 Thread Sergey Shelukhin (JIRA)
Sergey Shelukhin created HBASE-8785:
---

 Summary: revise zookeeper session timeout setting
 Key: HBASE-8785
 URL: https://issues.apache.org/jira/browse/HBASE-8785
 Project: HBase
  Issue Type: Improvement
Affects Versions: 0.95.1
Reporter: Sergey Shelukhin
 Fix For: 0.95.2


Current ZK session timeout is set to 90sec., and the comment in the doc says: 
This setting becomes zookeeper's 'maxSessionTimeout'. However, this comment 
is misleading - it doesn't always become maxSessionTimeout, min(our timeout, 
maxSessionTimeout) is chosen. Moreover, the default maxSessionTimeout in ZK 
that I'm looking at is 40s, so this setting doesn't do anything.
Additionally, 40s. seems like a lot of time.

1) Should the comment be changed to tell the user to change ZK config if they 
want higher timeout?
2) Should the setting be revised down?

--
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


[jira] [Commented] (HBASE-8701) distributedLogReplay need to apply wal edits in the receiving order of those edits

2013-06-21 Thread Sergey Shelukhin (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8701?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690521#comment-13690521
 ] 

Sergey Shelukhin commented on HBASE-8701:
-

{code}
Sounds like we can have hfiles w/ -ve sequenceid. It can contain replayed edits 
and edits that came in during replay. We flip the region to start taking reads 
(and reenable compactions). Compactions currently – until kvs include a seqid – 
are compacting adjacent files. If we are figuring adjaceny using seqid, the -ve 
file goes to the end of the line though it was most-recently-written file.{code}

What is -ve? Negative? last time I checked the replayed and new KVs were 
supposed to go into separate memstores, right? The recovery-memstore can then 
flush into a file with old (WAL-based) seqId, so adjacency would be 
maintained, we will just have a potential gap for some time which we should be 
mindful of (i.e. we'll have some old, good files, some new files from 
writes-during-recovery, and they would look adjacent but should not be 
compacted together until the recovered file(s) are inserted between them).
I don't think we can maintain the same guarantees if new and recovered KVs are 
written into mixed memstores (unless seqNums are also written there).

 distributedLogReplay need to apply wal edits in the receiving order of those 
 edits
 --

 Key: HBASE-8701
 URL: https://issues.apache.org/jira/browse/HBASE-8701
 Project: HBase
  Issue Type: Bug
  Components: MTTR
Reporter: Jeffrey Zhong
Assignee: Jeffrey Zhong
 Fix For: 0.98.0, 0.95.2

 Attachments: 8701-v3.txt, hbase-8701-v4.patch, hbase-8701-v5.patch, 
 hbase-8701-v6.patch, hbase-8701-v7.patch


 This issue happens in distributedLogReplay mode when recovering multiple puts 
 of the same key + version(timestamp). After replay, the value is 
 nondeterministic of the key
 h5. The original concern situation raised from [~eclark]:
 For all edits the rowkey is the same.
 There's a log with: [ A (ts = 0), B (ts = 0) ]
 Replay the first half of the log.
 A user puts in C (ts = 0)
 Memstore has to flush
 A new Hfile will be created with [ C, A ] and MaxSequenceId = C's seqid.
 Replay the rest of the Log.
 Flush
 The issue will happen in similar situation like Put(key, t=T) in WAL1 and 
 Put(key,t=T) in WAL2
 h5. Below is the option(proposed by Ted) I'd like to use:
 a) During replay, we pass original wal sequence number of each edit to the 
 receiving RS
 b) In receiving RS, we store negative original sequence number of wal edits 
 into mvcc field of KVs of wal edits
 c) Add handling of negative MVCC in KVScannerComparator and KVComparator   
 d) In receiving RS, write original sequence number into an optional field of 
 wal file for chained RS failure situation 
 e) When opening a region, we add a safety bumper(a large number) in order for 
 the new sequence number of a newly opened region not to collide with old 
 sequence numbers. 
 In the future, when we stores sequence number along with KVs, we can adjust 
 the above solution a little bit by avoiding to overload MVCC field.
 h5. The other alternative options are listed below for references:
 Option one
 a) disallow writes during recovery
 b) during replay, we pass original wal sequence ids
 c) hold flush till all wals of a recovering region are replayed. Memstore 
 should hold because we only recover unflushed wal edits. For edits with same 
 key + version, whichever with larger sequence Id wins.
 Option two
 a) During replay, we pass original wal sequence ids
 b) for each wal edit, we store each edit's original sequence id along with 
 its key. 
 c) during scanning, we use the original sequence id if it's present otherwise 
 its store file sequence Id
 d) compaction can just leave put with max sequence id
 Please let me know if you have better ideas.

--
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


[jira] [Commented] (HBASE-8701) distributedLogReplay need to apply wal edits in the receiving order of those edits

2013-06-21 Thread Sergey Shelukhin (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8701?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690524#comment-13690524
 ] 

Sergey Shelukhin commented on HBASE-8701:
-

Well, it's also possible to ensure there's only one mixed memstore, then if 
recovery can resolve conflicts inside it (using seqNums that are available from 
recovery I suppose), it can be flushed into correct file. But this is not 
practical...

 distributedLogReplay need to apply wal edits in the receiving order of those 
 edits
 --

 Key: HBASE-8701
 URL: https://issues.apache.org/jira/browse/HBASE-8701
 Project: HBase
  Issue Type: Bug
  Components: MTTR
Reporter: Jeffrey Zhong
Assignee: Jeffrey Zhong
 Fix For: 0.98.0, 0.95.2

 Attachments: 8701-v3.txt, hbase-8701-v4.patch, hbase-8701-v5.patch, 
 hbase-8701-v6.patch, hbase-8701-v7.patch


 This issue happens in distributedLogReplay mode when recovering multiple puts 
 of the same key + version(timestamp). After replay, the value is 
 nondeterministic of the key
 h5. The original concern situation raised from [~eclark]:
 For all edits the rowkey is the same.
 There's a log with: [ A (ts = 0), B (ts = 0) ]
 Replay the first half of the log.
 A user puts in C (ts = 0)
 Memstore has to flush
 A new Hfile will be created with [ C, A ] and MaxSequenceId = C's seqid.
 Replay the rest of the Log.
 Flush
 The issue will happen in similar situation like Put(key, t=T) in WAL1 and 
 Put(key,t=T) in WAL2
 h5. Below is the option(proposed by Ted) I'd like to use:
 a) During replay, we pass original wal sequence number of each edit to the 
 receiving RS
 b) In receiving RS, we store negative original sequence number of wal edits 
 into mvcc field of KVs of wal edits
 c) Add handling of negative MVCC in KVScannerComparator and KVComparator   
 d) In receiving RS, write original sequence number into an optional field of 
 wal file for chained RS failure situation 
 e) When opening a region, we add a safety bumper(a large number) in order for 
 the new sequence number of a newly opened region not to collide with old 
 sequence numbers. 
 In the future, when we stores sequence number along with KVs, we can adjust 
 the above solution a little bit by avoiding to overload MVCC field.
 h5. The other alternative options are listed below for references:
 Option one
 a) disallow writes during recovery
 b) during replay, we pass original wal sequence ids
 c) hold flush till all wals of a recovering region are replayed. Memstore 
 should hold because we only recover unflushed wal edits. For edits with same 
 key + version, whichever with larger sequence Id wins.
 Option two
 a) During replay, we pass original wal sequence ids
 b) for each wal edit, we store each edit's original sequence id along with 
 its key. 
 c) during scanning, we use the original sequence id if it's present otherwise 
 its store file sequence Id
 d) compaction can just leave put with max sequence id
 Please let me know if you have better ideas.

--
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


[jira] [Comment Edited] (HBASE-8701) distributedLogReplay need to apply wal edits in the receiving order of those edits

2013-06-21 Thread Sergey Shelukhin (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8701?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690524#comment-13690524
 ] 

Sergey Shelukhin edited comment on HBASE-8701 at 6/21/13 5:59 PM:
--

Well, it's also possible to ensure there's only one mixed memstore (as in, 
entire recovery and writes-during-recovery go into one single memstore), then 
if recovery can resolve conflicts inside it (using seqNums that are available 
from recovery I suppose), it can be flushed into correct file. But this is not 
practical...

  was (Author: sershe):
Well, it's also possible to ensure there's only one mixed memstore, then if 
recovery can resolve conflicts inside it (using seqNums that are available from 
recovery I suppose), it can be flushed into correct file. But this is not 
practical...
  
 distributedLogReplay need to apply wal edits in the receiving order of those 
 edits
 --

 Key: HBASE-8701
 URL: https://issues.apache.org/jira/browse/HBASE-8701
 Project: HBase
  Issue Type: Bug
  Components: MTTR
Reporter: Jeffrey Zhong
Assignee: Jeffrey Zhong
 Fix For: 0.98.0, 0.95.2

 Attachments: 8701-v3.txt, hbase-8701-v4.patch, hbase-8701-v5.patch, 
 hbase-8701-v6.patch, hbase-8701-v7.patch


 This issue happens in distributedLogReplay mode when recovering multiple puts 
 of the same key + version(timestamp). After replay, the value is 
 nondeterministic of the key
 h5. The original concern situation raised from [~eclark]:
 For all edits the rowkey is the same.
 There's a log with: [ A (ts = 0), B (ts = 0) ]
 Replay the first half of the log.
 A user puts in C (ts = 0)
 Memstore has to flush
 A new Hfile will be created with [ C, A ] and MaxSequenceId = C's seqid.
 Replay the rest of the Log.
 Flush
 The issue will happen in similar situation like Put(key, t=T) in WAL1 and 
 Put(key,t=T) in WAL2
 h5. Below is the option(proposed by Ted) I'd like to use:
 a) During replay, we pass original wal sequence number of each edit to the 
 receiving RS
 b) In receiving RS, we store negative original sequence number of wal edits 
 into mvcc field of KVs of wal edits
 c) Add handling of negative MVCC in KVScannerComparator and KVComparator   
 d) In receiving RS, write original sequence number into an optional field of 
 wal file for chained RS failure situation 
 e) When opening a region, we add a safety bumper(a large number) in order for 
 the new sequence number of a newly opened region not to collide with old 
 sequence numbers. 
 In the future, when we stores sequence number along with KVs, we can adjust 
 the above solution a little bit by avoiding to overload MVCC field.
 h5. The other alternative options are listed below for references:
 Option one
 a) disallow writes during recovery
 b) during replay, we pass original wal sequence ids
 c) hold flush till all wals of a recovering region are replayed. Memstore 
 should hold because we only recover unflushed wal edits. For edits with same 
 key + version, whichever with larger sequence Id wins.
 Option two
 a) During replay, we pass original wal sequence ids
 b) for each wal edit, we store each edit's original sequence id along with 
 its key. 
 c) during scanning, we use the original sequence id if it's present otherwise 
 its store file sequence Id
 d) compaction can just leave put with max sequence id
 Please let me know if you have better ideas.

--
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


[jira] [Commented] (HBASE-8741) Mutations on Regions in recovery mode might have same sequenceIDs

2013-06-21 Thread Sergey Shelukhin (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8741?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690536#comment-13690536
 ] 

Sergey Shelukhin commented on HBASE-8741:
-

that's not such a large complication. We already account for seqNums per region 
we'd just have to look at all of them when cleaning instead of looking at the 
minimum.

 Mutations on Regions in recovery mode might have same sequenceIDs
 -

 Key: HBASE-8741
 URL: https://issues.apache.org/jira/browse/HBASE-8741
 Project: HBase
  Issue Type: Bug
  Components: MTTR
Affects Versions: 0.95.1
Reporter: Himanshu Vashishtha
Assignee: Himanshu Vashishtha

 Currently, when opening a region, we find the maximum sequence ID from all 
 its HFiles and then set the LogSequenceId of the log (in case the later is at 
 a small value). This works good in recovered.edits case as we are not writing 
 to the region until we have replayed all of its previous edits. 
 With distributed log replay, if we want to enable writes while a region is 
 under recovery, we need to make sure that the logSequenceId  maximum 
 logSequenceId of the old regionserver. Otherwise, we might have a situation 
 where new edits have same (or smaller) sequenceIds. 
 We can store region level information in the WALTrailer, than this scenario 
 could be avoided by:
 a) reading the trailer of the last completed file, i.e., last wal file 
 which has a trailer and,
 b) completely reading the last wal file (this file would not have the 
 trailer, so it needs to be read completely).
 In future, if we switch to multi wal file, we could read the trailer for all 
 completed WAL files, and reading the remaining incomplete files.

--
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


[jira] [Commented] (HBASE-6295) Possible performance improvement in client batch operations: presplit and send in background

2013-06-21 Thread Sergey Shelukhin (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-6295?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690540#comment-13690540
 ] 

Sergey Shelukhin commented on HBASE-6295:
-

can you please update RB? thanks

 Possible performance improvement in client batch operations: presplit and 
 send in background
 

 Key: HBASE-6295
 URL: https://issues.apache.org/jira/browse/HBASE-6295
 Project: HBase
  Issue Type: Improvement
  Components: Client, Performance
Affects Versions: 0.95.2
Reporter: Nicolas Liochon
Assignee: Nicolas Liochon
  Labels: noob
 Fix For: 0.98.0

 Attachments: 6295.v11.patch, 6295.v12.patch, 6295.v14.patch, 
 6295.v15.patch, 6295.v1.patch, 6295.v2.patch, 6295.v3.patch, 6295.v4.patch, 
 6295.v5.patch, 6295.v6.patch, 6295.v8.patch, 6295.v9.patch


 today batch algo is:
 {noformat}
 for Operation o: ListOp{
   add o to todolist
   if todolist  maxsize or o last in list
 split todolist per location
 send split lists to region servers
 clear todolist
 wait
 }
 {noformat}
 We could:
 - create immediately the final object instead of an intermediate array
 - split per location immediately
 - instead of sending when the list as a whole is full, send it when there is 
 enough data for a single location
 It would be:
 {noformat}
 for Operation o: ListOp{
   get location
   add o to todo location.todolist
   if (location.todolist  maxLocationSize)
 send location.todolist to region server 
 clear location.todolist
 // don't wait, continue the loop
 }
 send remaining
 wait
 {noformat}
 It's not trivial to write if you add error management: retried list must be 
 shared with the operations added in the todolist. But it's doable.
 It's interesting mainly for 'big' writes

--
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


[jira] [Commented] (HBASE-8721) Deletes can mask puts that happen after the delete

2013-06-21 Thread Lars Hofhansl (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8721?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690553#comment-13690553
 ] 

Lars Hofhansl commented on HBASE-8721:
--

I would change the -1 to a -0 if:
# we make this configurable
# the code the changes are not too messy (i.e. no if statements littered 
everywhere)
# this is carefully tested with all features mentioned above

Then we'd have 3 -0's.

Even the major compaction glitch is only an issue when the client messes with 
timestamps (or regions are moved between RSs and clocks that are wildly out of 
sync).
As mentioned above there is a proposed solution in form of a long TTL for 
delete markers, but that will only work if the timestamps represent wall clock 
time (otherwise TTL is meaning less).

 Deletes can mask puts that happen after the delete
 --

 Key: HBASE-8721
 URL: https://issues.apache.org/jira/browse/HBASE-8721
 Project: HBase
  Issue Type: Improvement
  Components: regionserver
Reporter: Feng Honghua
 Attachments: HBASE-8721-0.94-V0.patch


 this fix aims for bug mentioned in http://hbase.apache.org/book.html 5.8.2.1:
 Deletes mask puts, even puts that happened after the delete was entered. 
 Remember that a delete writes a tombstone, which only disappears after then 
 next major compaction has run. Suppose you do a delete of everything = T. 
 After this you do a new put with a timestamp = T. This put, even if it 
 happened after the delete, will be masked by the delete tombstone. Performing 
 the put will not fail, but when you do a get you will notice the put did have 
 no effect. It will start working again after the major compaction has run. 
 These issues should not be a problem if you use always-increasing versions 
 for new puts to a row. But they can occur even if you do not care about time: 
 just do delete and put immediately after each other, and there is some chance 
 they happen within the same millisecond.

--
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


[jira] [Commented] (HBASE-8785) revise zookeeper session timeout setting

2013-06-21 Thread Lars Hofhansl (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8785?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690561#comment-13690561
 ] 

Lars Hofhansl commented on HBASE-8785:
--

Isn't the default 180s? 180s is long, indeed.
The trick is to find a timeout that catches actual machine failures quickly, 
but does not trip on temporary network glitches or GC/etc.


 revise zookeeper session timeout setting
 

 Key: HBASE-8785
 URL: https://issues.apache.org/jira/browse/HBASE-8785
 Project: HBase
  Issue Type: Improvement
Affects Versions: 0.95.1
Reporter: Sergey Shelukhin
 Fix For: 0.95.2


 Current ZK session timeout is set to 90sec., and the comment in the doc says: 
 This setting becomes zookeeper's 'maxSessionTimeout'. However, this comment 
 is misleading - it doesn't always become maxSessionTimeout, min(our timeout, 
 maxSessionTimeout) is chosen. Moreover, the default maxSessionTimeout in ZK 
 that I'm looking at is 40s, so this setting doesn't do anything.
 Additionally, 40s. seems like a lot of time.
 1) Should the comment be changed to tell the user to change ZK config if they 
 want higher timeout?
 2) Should the setting be revised down?

--
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


[jira] [Commented] (HBASE-8776) port HBASE-8723 to 0.94

2013-06-21 Thread Lars Hofhansl (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8776?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690568#comment-13690568
 ] 

Lars Hofhansl commented on HBASE-8776:
--

I guess the argument is whether by default we should be able to ride over a RS 
crash, or just over regular splits/moves.

 port HBASE-8723 to 0.94
 ---

 Key: HBASE-8776
 URL: https://issues.apache.org/jira/browse/HBASE-8776
 Project: HBase
  Issue Type: Bug
Affects Versions: 0.94.8
Reporter: Sergey Shelukhin
Assignee: Sergey Shelukhin
 Fix For: 0.94.9

 Attachments: HBASE-8776-v0.patch




--
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


[jira] [Commented] (HBASE-8750) MetaServerShutdownHandler stucks if .META. assignment fails in previous attempt

2013-06-21 Thread Jimmy Xiang (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8750?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690574#comment-13690574
 ] 

Jimmy Xiang commented on HBASE-8750:


+1

 MetaServerShutdownHandler stucks if .META. assignment fails in previous 
 attempt
 ---

 Key: HBASE-8750
 URL: https://issues.apache.org/jira/browse/HBASE-8750
 Project: HBase
  Issue Type: Bug
  Components: MTTR
Affects Versions: 0.95.1
Reporter: Himanshu Vashishtha
Assignee: Himanshu Vashishtha
 Attachments: HBASE-8750-v0.patch, HBASE-8750-v1.patch


 While running log replay on a one node setup, I killed meta regionserver. The 
 MetaSSH tries to assign the meta table, but it failed as there was no other 
 regionservers to assign to. But the meta server znode was already updated to 
 null. When the assignment fails, the metaSSH is retried. But from the next 
 iteration, it will not try to assign the meta region, but keeps on waiting 
 for meta region. This keeps on going even after regionserver is brought up 
 again.

--
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


[jira] [Updated] (HBASE-5083) Backup HMaster should have http infoport open with link to the active master

2013-06-21 Thread Lars Hofhansl (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-5083?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lars Hofhansl updated HBASE-5083:
-

Attachment: HBASE-5083_trunk.patch

Reattaching trunk patch for Hadoop QA

 Backup HMaster should have http infoport open with link to the active master
 

 Key: HBASE-5083
 URL: https://issues.apache.org/jira/browse/HBASE-5083
 Project: HBase
  Issue Type: Improvement
  Components: master
Affects Versions: 0.92.0
Reporter: Jonathan Hsieh
Assignee: Cody Marcel
 Fix For: 0.94.9

 Attachments: backup_master.png, HBASE-5083.patch, HBASE-5083.patch, 
 HBASE-5083.patch, HBASE-5083.patch, HBASE-5083.patch, HBASE-5083_trunk.patch, 
 HBASE-5083_trunk.patch, master.png, Trunk_Backup_Master.png, Trunk_Master.png


 Without ssh'ing and jps/ps'ing, it is difficult to see if a backup hmaster is 
 up.  It seems like it would be good for a backup hmaster to have a basic web 
 page up on the info port so that users could see that it is up.  Also it 
 should probably either provide a link to the active master or automatically 
 forward to the active master.

--
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


[jira] [Updated] (HBASE-5083) Backup HMaster should have http infoport open with link to the active master

2013-06-21 Thread Lars Hofhansl (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-5083?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lars Hofhansl updated HBASE-5083:
-

Status: Open  (was: Patch Available)

 Backup HMaster should have http infoport open with link to the active master
 

 Key: HBASE-5083
 URL: https://issues.apache.org/jira/browse/HBASE-5083
 Project: HBase
  Issue Type: Improvement
  Components: master
Affects Versions: 0.92.0
Reporter: Jonathan Hsieh
Assignee: Cody Marcel
 Fix For: 0.94.9

 Attachments: backup_master.png, HBASE-5083.patch, HBASE-5083.patch, 
 HBASE-5083.patch, HBASE-5083.patch, HBASE-5083.patch, HBASE-5083_trunk.patch, 
 HBASE-5083_trunk.patch, master.png, Trunk_Backup_Master.png, Trunk_Master.png


 Without ssh'ing and jps/ps'ing, it is difficult to see if a backup hmaster is 
 up.  It seems like it would be good for a backup hmaster to have a basic web 
 page up on the info port so that users could see that it is up.  Also it 
 should probably either provide a link to the active master or automatically 
 forward to the active master.

--
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


[jira] [Updated] (HBASE-5083) Backup HMaster should have http infoport open with link to the active master

2013-06-21 Thread Lars Hofhansl (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-5083?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lars Hofhansl updated HBASE-5083:
-

Status: Patch Available  (was: Open)

 Backup HMaster should have http infoport open with link to the active master
 

 Key: HBASE-5083
 URL: https://issues.apache.org/jira/browse/HBASE-5083
 Project: HBase
  Issue Type: Improvement
  Components: master
Affects Versions: 0.92.0
Reporter: Jonathan Hsieh
Assignee: Cody Marcel
 Fix For: 0.94.9

 Attachments: backup_master.png, HBASE-5083.patch, HBASE-5083.patch, 
 HBASE-5083.patch, HBASE-5083.patch, HBASE-5083.patch, HBASE-5083_trunk.patch, 
 HBASE-5083_trunk.patch, master.png, Trunk_Backup_Master.png, Trunk_Master.png


 Without ssh'ing and jps/ps'ing, it is difficult to see if a backup hmaster is 
 up.  It seems like it would be good for a backup hmaster to have a basic web 
 page up on the info port so that users could see that it is up.  Also it 
 should probably either provide a link to the active master or automatically 
 forward to the active master.

--
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


[jira] [Commented] (HBASE-8785) revise zookeeper session timeout setting

2013-06-21 Thread Jean-Daniel Cryans (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8785?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690587#comment-13690587
 ] 

Jean-Daniel Cryans commented on HBASE-8785:
---

The reason it's so high is that when it's low we get more emails on the mailing 
list about people killing their clusters doing some huge import on a cluster 
with default configs.

 revise zookeeper session timeout setting
 

 Key: HBASE-8785
 URL: https://issues.apache.org/jira/browse/HBASE-8785
 Project: HBase
  Issue Type: Improvement
Affects Versions: 0.95.1
Reporter: Sergey Shelukhin
 Fix For: 0.95.2


 Current ZK session timeout is set to 90sec., and the comment in the doc says: 
 This setting becomes zookeeper's 'maxSessionTimeout'. However, this comment 
 is misleading - it doesn't always become maxSessionTimeout, min(our timeout, 
 maxSessionTimeout) is chosen. Moreover, the default maxSessionTimeout in ZK 
 that I'm looking at is 40s, so this setting doesn't do anything.
 Additionally, 40s. seems like a lot of time.
 1) Should the comment be changed to tell the user to change ZK config if they 
 want higher timeout?
 2) Should the setting be revised down?

--
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


[jira] [Commented] (HBASE-8721) Deletes can mask puts that happen after the delete

2013-06-21 Thread Lars Hofhansl (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8721?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690588#comment-13690588
 ] 

Lars Hofhansl commented on HBASE-8721:
--

But of course we can leave this issue open to indicate that we're still 
discussing this.


 Deletes can mask puts that happen after the delete
 --

 Key: HBASE-8721
 URL: https://issues.apache.org/jira/browse/HBASE-8721
 Project: HBase
  Issue Type: Improvement
  Components: regionserver
Reporter: Feng Honghua
 Attachments: HBASE-8721-0.94-V0.patch


 this fix aims for bug mentioned in http://hbase.apache.org/book.html 5.8.2.1:
 Deletes mask puts, even puts that happened after the delete was entered. 
 Remember that a delete writes a tombstone, which only disappears after then 
 next major compaction has run. Suppose you do a delete of everything = T. 
 After this you do a new put with a timestamp = T. This put, even if it 
 happened after the delete, will be masked by the delete tombstone. Performing 
 the put will not fail, but when you do a get you will notice the put did have 
 no effect. It will start working again after the major compaction has run. 
 These issues should not be a problem if you use always-increasing versions 
 for new puts to a row. But they can occur even if you do not care about time: 
 just do delete and put immediately after each other, and there is some chance 
 they happen within the same millisecond.

--
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


[jira] [Commented] (HBASE-8721) Deletes can mask puts that happen after the delete

2013-06-21 Thread Andrew Purtell (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8721?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690592#comment-13690592
 ] 

Andrew Purtell commented on HBASE-8721:
---

I closed this issue because I don't see us ending with a commit here as 
proposed, and there is follow up on the parts we seem to agree on at HBASE-8770.

 Deletes can mask puts that happen after the delete
 --

 Key: HBASE-8721
 URL: https://issues.apache.org/jira/browse/HBASE-8721
 Project: HBase
  Issue Type: Improvement
  Components: regionserver
Reporter: Feng Honghua
 Attachments: HBASE-8721-0.94-V0.patch


 this fix aims for bug mentioned in http://hbase.apache.org/book.html 5.8.2.1:
 Deletes mask puts, even puts that happened after the delete was entered. 
 Remember that a delete writes a tombstone, which only disappears after then 
 next major compaction has run. Suppose you do a delete of everything = T. 
 After this you do a new put with a timestamp = T. This put, even if it 
 happened after the delete, will be masked by the delete tombstone. Performing 
 the put will not fail, but when you do a get you will notice the put did have 
 no effect. It will start working again after the major compaction has run. 
 These issues should not be a problem if you use always-increasing versions 
 for new puts to a row. But they can occur even if you do not care about time: 
 just do delete and put immediately after each other, and there is some chance 
 they happen within the same millisecond.

--
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


[jira] [Commented] (HBASE-6295) Possible performance improvement in client batch operations: presplit and send in background

2013-06-21 Thread Jean-Marc Spaggiari (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-6295?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690658#comment-13690658
 ] 

Jean-Marc Spaggiari commented on HBASE-6295:


Numbers for 0.94...

||Test||0.94||
|org.apache.hadoop.hbase.PerformanceEvaluation$FilteredScanTest|543237.9|
|org.apache.hadoop.hbase.PerformanceEvaluation$RandomReadTest|1110772.6|
|org.apache.hadoop.hbase.PerformanceEvaluation$RandomScanWithRange100Test|20998.3|
|org.apache.hadoop.hbase.PerformanceEvaluation$RandomSeekScanTest|159891.1|
|org.apache.hadoop.hbase.PerformanceEvaluation$RandomWriteTest|100201.9|
|org.apache.hadoop.hbase.PerformanceEvaluation$SequentialWriteTest|38577.08|


Again, it's time. So you need to compare with the first tab I sent. If you need 
I can convert that to rows/time.

 Possible performance improvement in client batch operations: presplit and 
 send in background
 

 Key: HBASE-6295
 URL: https://issues.apache.org/jira/browse/HBASE-6295
 Project: HBase
  Issue Type: Improvement
  Components: Client, Performance
Affects Versions: 0.95.2
Reporter: Nicolas Liochon
Assignee: Nicolas Liochon
  Labels: noob
 Fix For: 0.98.0

 Attachments: 6295.v11.patch, 6295.v12.patch, 6295.v14.patch, 
 6295.v15.patch, 6295.v1.patch, 6295.v2.patch, 6295.v3.patch, 6295.v4.patch, 
 6295.v5.patch, 6295.v6.patch, 6295.v8.patch, 6295.v9.patch


 today batch algo is:
 {noformat}
 for Operation o: ListOp{
   add o to todolist
   if todolist  maxsize or o last in list
 split todolist per location
 send split lists to region servers
 clear todolist
 wait
 }
 {noformat}
 We could:
 - create immediately the final object instead of an intermediate array
 - split per location immediately
 - instead of sending when the list as a whole is full, send it when there is 
 enough data for a single location
 It would be:
 {noformat}
 for Operation o: ListOp{
   get location
   add o to todo location.todolist
   if (location.todolist  maxLocationSize)
 send location.todolist to region server 
 clear location.todolist
 // don't wait, continue the loop
 }
 send remaining
 wait
 {noformat}
 It's not trivial to write if you add error management: retried list must be 
 shared with the operations added in the todolist. But it's doable.
 It's interesting mainly for 'big' writes

--
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


[jira] [Commented] (HBASE-6295) Possible performance improvement in client batch operations: presplit and send in background

2013-06-21 Thread Lars Hofhansl (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-6295?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690693#comment-13690693
 ] 

Lars Hofhansl commented on HBASE-6295:
--

So the RandomReadTest takes ~76 (ms?) in 0.95/trunk but takes ~110 ms 
in 0.94? I wonder why this is.


 Possible performance improvement in client batch operations: presplit and 
 send in background
 

 Key: HBASE-6295
 URL: https://issues.apache.org/jira/browse/HBASE-6295
 Project: HBase
  Issue Type: Improvement
  Components: Client, Performance
Affects Versions: 0.95.2
Reporter: Nicolas Liochon
Assignee: Nicolas Liochon
  Labels: noob
 Fix For: 0.98.0

 Attachments: 6295.v11.patch, 6295.v12.patch, 6295.v14.patch, 
 6295.v15.patch, 6295.v1.patch, 6295.v2.patch, 6295.v3.patch, 6295.v4.patch, 
 6295.v5.patch, 6295.v6.patch, 6295.v8.patch, 6295.v9.patch


 today batch algo is:
 {noformat}
 for Operation o: ListOp{
   add o to todolist
   if todolist  maxsize or o last in list
 split todolist per location
 send split lists to region servers
 clear todolist
 wait
 }
 {noformat}
 We could:
 - create immediately the final object instead of an intermediate array
 - split per location immediately
 - instead of sending when the list as a whole is full, send it when there is 
 enough data for a single location
 It would be:
 {noformat}
 for Operation o: ListOp{
   get location
   add o to todo location.todolist
   if (location.todolist  maxLocationSize)
 send location.todolist to region server 
 clear location.todolist
 // don't wait, continue the loop
 }
 send remaining
 wait
 {noformat}
 It's not trivial to write if you add error management: retried list must be 
 shared with the operations added in the todolist. But it's doable.
 It's interesting mainly for 'big' writes

--
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


[jira] [Updated] (HBASE-2600) Change how we do meta tables; from tablename+STARTROW+randomid to instead, tablename+ENDROW+randomid

2013-06-21 Thread Alex Newman (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-2600?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Newman updated HBASE-2600:
---

Assignee: (was: Alex Newman)

 Change how we do meta tables; from tablename+STARTROW+randomid to instead, 
 tablename+ENDROW+randomid
 

 Key: HBASE-2600
 URL: https://issues.apache.org/jira/browse/HBASE-2600
 Project: HBase
  Issue Type: Bug
Reporter: stack
 Attachments: 
 0001-Changed-regioninfo-format-to-use-endKey-instead-of-s.patch, 
 0001-HBASE-2600.-Change-how-we-do-meta-tables-from-tablen.patch, 
 0001-HBASE-2600.-Change-how-we-do-meta-tables-from-tablen-v2.patch, 
 0001-HBASE-2600.-Change-how-we-do-meta-tables-from-tablen-v4.patch, 
 0001-HBASE-2600.-Change-how-we-do-meta-tables-from-tablen-v6.patch, 
 0001-HBASE-2600.-Change-how-we-do-meta-tables-from-tablen-v7.2.patch, 
 0001-HBASE-2600.-Change-how-we-do-meta-tables-from-tablen-v8, 
 0001-HBASE-2600.-Change-how-we-do-meta-tables-from-tablen-v8.1, 
 0001-HBASE-2600.-Change-how-we-do-meta-tables-from-tablen-v9.patch, 
 0001-HBASE-2600.v10.patch, 0001-HBASE-2600-v11.patch, 2600-trunk-01-17.txt, 
 HBASE-2600+5217-Sun-Mar-25-2012-v3.patch, 
 HBASE-2600+5217-Sun-Mar-25-2012-v4.patch, hbase-2600-root.dir.tgz, jenkins.pdf


 This is an idea that Ryan and I have been kicking around on and off for a 
 while now.
 If regionnames were made of tablename+endrow instead of tablename+startrow, 
 then in the metatables, doing a search for the region that contains the 
 wanted row, we'd just have to open a scanner using passed row and the first 
 row found by the scan would be that of the region we need (If offlined 
 parent, we'd have to scan to the next row).
 If we redid the meta tables in this format, we'd be using an access that is 
 natural to hbase, a scan as opposed to the perverse, expensive 
 getClosestRowBefore we currently have that has to walk backward in meta 
 finding a containing region.
 This issue is about changing the way we name regions.
 If we were using scans, prewarming client cache would be near costless (as 
 opposed to what we'll currently have to do which is first a 
 getClosestRowBefore and then a scan from the closestrowbefore forward).
 Converting to the new method, we'd have to run a migration on startup 
 changing the content in meta.
 Up to this, the randomid component of a region name has been the timestamp of 
 region creation.   HBASE-2531 32-bit encoding of regionnames waaay 
 too susceptible to hash clashes proposes changing the randomid so that it 
 contains actual name of the directory in the filesystem that hosts the 
 region.  If we had this in place, I think it would help with the migration to 
 this new way of doing the meta because as is, the region name in fs is a hash 
 of regionname... changing the format of the regionname would mean we generate 
 a different hash... so we'd need hbase-2531 to be in place before we could do 
 this change.

--
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


[jira] [Updated] (HBASE-4616) Update hregion encoded name to reduce logic and prevent region collisions in META

2013-06-21 Thread Alex Newman (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-4616?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Newman updated HBASE-4616:
---

Assignee: (was: Alex Newman)

 Update hregion encoded name to reduce logic and prevent region collisions in 
 META
 -

 Key: HBASE-4616
 URL: https://issues.apache.org/jira/browse/HBASE-4616
 Project: HBase
  Issue Type: Umbrella
Reporter: Alex Newman
 Attachments: HBASE-4616.patch, HBASE-4616-v2.patch, 
 HBASE-4616-v3.patch




--
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


[jira] [Updated] (HBASE-5275) Create migration for hbase-2600 meta table rejigger so regions denoted by end row

2013-06-21 Thread Alex Newman (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-5275?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Newman updated HBASE-5275:
---

Assignee: (was: Alex Newman)

 Create migration for hbase-2600 meta table rejigger so regions denoted by end 
 row
 -

 Key: HBASE-5275
 URL: https://issues.apache.org/jira/browse/HBASE-5275
 Project: HBase
  Issue Type: Task
Reporter: stack

 Chatting with Alex, we'd do as was done previous where we'll can data from 
 0.92 and then have a test that unbundles this canned data, migrates it and 
 then makes sure all still works.  Migration test would include verification 
 of idempotency; i.e. if migration fails midway, we should be able to rerun it.
 Canned data should include a meta with splits and WALs to split (migrations 
 usually require clean shutdown so no WALs should be in place but just in 
 case... And replication is reading logs)
 We were thinking that on startup, we'd check hbase.version file.  If not 
 updated, we'd rewrite .META. offline before starting up.
 In offline mode -- open of the .META. regions -- we'd do a rewrite per row 
 changing the HRegionInfo version from VERSION=1 to VERSION=2.
 VERSION=2 is the new format HRegionInfo.
 VERSION=2 will use endrow but it will keep its current encoded  name (though 
 it was generated with startrow as input) so we don't have to move stuff 
 around in filesystem.
 New HRIs subsequent to the migration will be written out as VERSION=3.  A 
 VERSION=3 has endrow in its name but the encoded name will be made using 
 startrow+endrow+regionid+tablename rather than just 
 startrow+regionid+tablename as in VERSION=1.

--
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


[jira] [Updated] (HBASE-4895) Change tablename format in meta to be the UUID of the tablename rather than the tablename.

2013-06-21 Thread Alex Newman (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-4895?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Newman updated HBASE-4895:
---

Assignee: (was: Alex Newman)

 Change tablename format in meta to be the UUID of the tablename rather than 
 the tablename.
 --

 Key: HBASE-4895
 URL: https://issues.apache.org/jira/browse/HBASE-4895
 Project: HBase
  Issue Type: Sub-task
Reporter: Alex Newman
 Attachments: 0002-Moved-to-a-uuid-tablename.patch


 This is something stack and I discussed at hadoop world. Overall I think it 
 cleans thing up significantly.

--
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


[jira] [Updated] (HBASE-5240) HBase internalscanner.next javadoc doesn't imply whether or not results are appended or not

2013-06-21 Thread Alex Newman (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-5240?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Newman updated HBASE-5240:
---

Assignee: (was: Alex Newman)

 HBase internalscanner.next javadoc doesn't imply whether or not results are 
 appended or not
 ---

 Key: HBASE-5240
 URL: https://issues.apache.org/jira/browse/HBASE-5240
 Project: HBase
  Issue Type: Bug
Reporter: Alex Newman
 Attachments: 
 0001-HBASE-5240.-HBase-internalscanner.next-javadoc-doesn.patch


 Just looking at 
 http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/regionserver/InternalScanner.html.
  We don't know whether or not the results are appended to results list, or if 
 we always clear it first.
 boolean   next(ListKeyValue results)
   Grab the next row's worth of values.
  boolean  next(ListKeyValue result, int limit)
   Grab the next row's worth of values with a limit on the number of 
 values to return.
  
 Method Detail
 next
 boolean next(ListKeyValue results)
  throws IOException
 Grab the next row's worth of values.
 Parameters:
 results - return output array 
 Returns:
 true if more rows exist after this one, false if scanner is done 
 Throws:
 IOException - e
 next
 boolean next(ListKeyValue result,
  int limit)
  throws IOException
 Grab the next row's worth of values with a limit on the number of values 
 to return.
 Parameters:
 result - return output array
 limit - limit on row count to get 
 Returns:
 true if more rows exist after this one, false if scanner is done 
 Throws:
 IOException - e

--
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


[jira] [Updated] (HBASE-5969) HRI.getRegionName/AsString are inconsistent for regions with the old encoding scheme

2013-06-21 Thread Alex Newman (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-5969?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Newman updated HBASE-5969:
---

Assignee: (was: Alex Newman)

 HRI.getRegionName/AsString are inconsistent for regions with the old encoding 
 scheme
 

 Key: HBASE-5969
 URL: https://issues.apache.org/jira/browse/HBASE-5969
 Project: HBase
  Issue Type: Bug
Affects Versions: 0.90.6, 0.92.1
Reporter: Jean-Daniel Cryans

 HRI.getRegionName and getRegionNameAsString don't give consistent results for 
 regions created with the old encoding scheme. See Aravind's comment in 
 HBASE-5929 on how a region was appended with .1290583321 when its HRI was 
 queried with getRegionNameAsString and, once passed to HBA, wasn't able to 
 compact it (I checked .META. and it doesn't have that last part so it must 
 come from getRegionName).
 This one might be a little hard to fix if we're already dependent on the 
 broken behavior of getRegionName.

--
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


[jira] [Updated] (HBASE-5217) Reenable the thrift tests, and add a new one for getRegionInfo

2013-06-21 Thread Alex Newman (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-5217?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Newman updated HBASE-5217:
---

Assignee: (was: Alex Newman)

 Reenable the thrift tests, and add a new one for getRegionInfo
 --

 Key: HBASE-5217
 URL: https://issues.apache.org/jira/browse/HBASE-5217
 Project: HBase
  Issue Type: Improvement
Reporter: Alex Newman
Priority: Minor
 Attachments: 0001-Fixing-thrift-tests.patch, 
 0001-Fixing-thrift-tests-v2.patch, 
 0002-HBASE-5217.-Reenable-the-thrift-tests-and-add-a-new-.patch, 
 0002-HBASE-5217-v3.patch, 0002-HBASE-5217-v4.patch, 0002-HBASE-5217-v5.patch, 
 -hbase-posix4e #92 Console [Jenkins].pdf


 At some point we disabled tests for the thrift server. In addition, it looks 
 like the getRegionInfo no longer functions. I'd like to reenable the tests 
 and add one for getRegionInfo. I had to write this to test my changes in 
 HBASE-2600 anyway. I figured I would break it out. We shouldn't commit it 
 until we have fixed getting the regioninfo from the thriftserver.

--
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


[jira] [Updated] (HBASE-4382) Region encoded name is hash of tablename + start key + regionid (timestamp); should include end key when hashing.

2013-06-21 Thread Alex Newman (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-4382?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Newman updated HBASE-4382:
---

Assignee: (was: Alex Newman)

 Region encoded name is hash of tablename + start key + regionid (timestamp); 
 should include end key when hashing.
 -

 Key: HBASE-4382
 URL: https://issues.apache.org/jira/browse/HBASE-4382
 Project: HBase
  Issue Type: Sub-task
Reporter: stack
  Labels: noob
 Attachments: 
 0003-Verify-start-and-end-key-are-contained-in-the-encode.patch


 Seems odd that region encoded name is same for regions if made in same second 
 with same start key tough their end keys are different.  It can happen in 
 unit test.  Should mix in the end key when coming up w/ the region name 
 encoded name.

--
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


[jira] [Commented] (HBASE-6295) Possible performance improvement in client batch operations: presplit and send in background

2013-06-21 Thread Jean-Marc Spaggiari (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-6295?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690705#comment-13690705
 ] 

Jean-Marc Spaggiari commented on HBASE-6295:


114272ms in trunk
100201ms in 0.94
076990ms in trunk+5295
114798ms im 0.95

So Trunk and 0.95 are about 10% slower than 0.94 (Which I have already figured 
with previous tests), however, with Nic's patch trunk is faster than all the 
other versions.

On my own cluster I'm doing almost only random writes... So I'm really looking 
forward to see this in 0.9x ;)

 Possible performance improvement in client batch operations: presplit and 
 send in background
 

 Key: HBASE-6295
 URL: https://issues.apache.org/jira/browse/HBASE-6295
 Project: HBase
  Issue Type: Improvement
  Components: Client, Performance
Affects Versions: 0.95.2
Reporter: Nicolas Liochon
Assignee: Nicolas Liochon
  Labels: noob
 Fix For: 0.98.0

 Attachments: 6295.v11.patch, 6295.v12.patch, 6295.v14.patch, 
 6295.v15.patch, 6295.v1.patch, 6295.v2.patch, 6295.v3.patch, 6295.v4.patch, 
 6295.v5.patch, 6295.v6.patch, 6295.v8.patch, 6295.v9.patch


 today batch algo is:
 {noformat}
 for Operation o: ListOp{
   add o to todolist
   if todolist  maxsize or o last in list
 split todolist per location
 send split lists to region servers
 clear todolist
 wait
 }
 {noformat}
 We could:
 - create immediately the final object instead of an intermediate array
 - split per location immediately
 - instead of sending when the list as a whole is full, send it when there is 
 enough data for a single location
 It would be:
 {noformat}
 for Operation o: ListOp{
   get location
   add o to todo location.todolist
   if (location.todolist  maxLocationSize)
 send location.todolist to region server 
 clear location.todolist
 // don't wait, continue the loop
 }
 send remaining
 wait
 {noformat}
 It's not trivial to write if you add error management: retried list must be 
 shared with the operations added in the todolist. But it's doable.
 It's interesting mainly for 'big' writes

--
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


[jira] [Commented] (HBASE-8656) Rpc call may not be notified in SecureClient

2013-06-21 Thread Lars Hofhansl (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8656?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690724#comment-13690724
 ] 

Lars Hofhansl commented on HBASE-8656:
--

+1 on patch. Makes sense and brings it (more) in line with HBaseClient.

 Rpc call may not be notified in SecureClient
 

 Key: HBASE-8656
 URL: https://issues.apache.org/jira/browse/HBASE-8656
 Project: HBase
  Issue Type: Bug
  Components: Client, IPC/RPC, security
Affects Versions: 0.94.7
Reporter: cuijianwei
Assignee: cuijianwei
Priority: Critical
 Fix For: 0.94.9

 Attachments: HBASE-8656-0.94-v1.txt


 In SecureClient.java, rpc responses will be processed by receiveResponse() 
 which looks like:
 {code}
 try {
 int id = in.readInt();// try to read an id
 if (LOG.isDebugEnabled())
   LOG.debug(getName() +  got value # + id);
 Call call = calls.remove(id);
 int state = in.readInt(); // read call status
 if (LOG.isDebugEnabled()) {
   LOG.debug(call #+id+ state is  + state);
 }
 if (state == Status.SUCCESS.state) {
   Writable value = ReflectionUtils.newInstance(valueClass, conf);
   value.readFields(in); // read value
   if (LOG.isDebugEnabled()) {
 LOG.debug(call #+id+, response is:\n+value.toString());
   }
   // it's possible that this call may have been cleaned up due to a 
 RPC
   // timeout, so check if it still exists before setting the value.
   if (call != null) {
 call.setValue(value);
   }
 } else if (state == Status.ERROR.state) {
   if (call != null) {
 call.setException(new 
 RemoteException(WritableUtils.readString(in), WritableUtils
 .readString(in)));
   }
 } else if (state == Status.FATAL.state) {
   // Close the connection
   markClosed(new RemoteException(WritableUtils.readString(in),
  WritableUtils.readString(in)));
 }
   } catch (IOException e) {
 if (e instanceof SocketTimeoutException  remoteId.rpcTimeout  0) {
   // Clean up open calls but don't treat this as a fatal condition,
   // since we expect certain responses to not make it by the specified
   // {@link ConnectionId#rpcTimeout}.
   closeException = e;
 } else {
   // Since the server did not respond within the default ping interval
   // time, treat this as a fatal condition and close this connection
   markClosed(e);
 }
   } finally {
 if (remoteId.rpcTimeout  0) {
   cleanupCalls(remoteId.rpcTimeout);
 }
   }
 }
 {code}
 In above code, in the try block, the call will be firstly removed from call 
 map by:
 {code}
 Call call = calls.remove(id);
 {code}
 There may be two cases leading the call couldn't be notified and the invoking 
 thread will wait forever. 
 Firstly, if the returned status is Status.FATAL.state by:
 {code}
 int state = in.readInt(); // read call status
 {code}
 The code will come into:
 {code}
 } else if (state == Status.FATAL.state) {
   // Close the connection
   markClosed(new RemoteException(WritableUtils.readString(in),
  WritableUtils.readString(in)));
 }
 {code}
 Here, the SecureConnection is marked as closed and all rpc calls in call map 
 of this connection will be notified to receive an exception. However, the 
 current rpc call has been removed from the call map, it won't be notified.
 Secondly, after the call has been removed by:
 {code}
 Call call = calls.remove(id);
 {code}
 If we encounter any exception before the 'try' block finished, the code will 
 come into 'catch' and 'finally' block, neither 'catch' block nor 'finally' 
 block will notify the rpc call because it has been removed from call map.
 Compared with receiveResponse() in HBaseClient.java, it may be better to get 
 the rpc call from call map and remove it at the end of the 'try' block.

--
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


[jira] [Updated] (HBASE-8143) HBase on Hadoop 2 with local short circuit reads (ssr) causes OOM

2013-06-21 Thread Lars Hofhansl (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8143?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lars Hofhansl updated HBASE-8143:
-

 Priority: Major  (was: Critical)
Fix Version/s: (was: 0.94.9)
   0.94.10

 HBase on Hadoop 2 with local short circuit reads (ssr) causes OOM 
 --

 Key: HBASE-8143
 URL: https://issues.apache.org/jira/browse/HBASE-8143
 Project: HBase
  Issue Type: Bug
  Components: hadoop2
Affects Versions: 0.98.0, 0.94.7, 0.95.0
Reporter: Enis Soztutar
Assignee: Enis Soztutar
 Fix For: 0.98.0, 0.95.2, 0.94.10

 Attachments: OpenFileTest.java


 We've run into an issue with HBase 0.94 on Hadoop2, with SSR turned on that 
 the memory usage of the HBase process grows to 7g, on an -Xmx3g, after some 
 time, this causes OOM for the RSs. 
 Upon further investigation, I've found out that we end up with 200 regions, 
 each having 3-4 store files open. Under hadoop2 SSR, BlockReaderLocal 
 allocates DirectBuffers, which is unlike HDFS 1 where there is no direct 
 buffer allocation. 
 It seems that there is no guards against the memory used by local buffers in 
 hdfs 2, and having a large number of open files causes multiple GB of memory 
 to be consumed from the RS process. 
 This issue is to further investigate what is going on. Whether we can limit 
 the memory usage in HDFS, or HBase, and/or document the setup. 
 Possible mitigation scenarios are: 
  - Turn off SSR for Hadoop 2
  - Ensure that there is enough unallocated memory for the RS based on 
 expected # of store files
  - Ensure that there is lower number of regions per region server (hence 
 number of open files)
 Stack trace:
 {code}
 org.apache.hadoop.hbase.DroppedSnapshotException: region: 
 IntegrationTestLoadAndVerify,yC^P\xD7\x945\xD4,1363388517630.24655343d8d356ef708732f34cfe8946.
 at 
 org.apache.hadoop.hbase.regionserver.HRegion.internalFlushcache(HRegion.java:1560)
 at 
 org.apache.hadoop.hbase.regionserver.HRegion.internalFlushcache(HRegion.java:1439)
 at 
 org.apache.hadoop.hbase.regionserver.HRegion.flushcache(HRegion.java:1380)
 at 
 org.apache.hadoop.hbase.regionserver.MemStoreFlusher.flushRegion(MemStoreFlusher.java:449)
 at 
 org.apache.hadoop.hbase.regionserver.MemStoreFlusher.flushOneForGlobalPressure(MemStoreFlusher.java:215)
 at 
 org.apache.hadoop.hbase.regionserver.MemStoreFlusher.access$500(MemStoreFlusher.java:63)
 at 
 org.apache.hadoop.hbase.regionserver.MemStoreFlusher$FlushHandler.run(MemStoreFlusher.java:237)
 at java.lang.Thread.run(Thread.java:662)
 Caused by: java.lang.OutOfMemoryError: Direct buffer memory
 at java.nio.Bits.reserveMemory(Bits.java:632)
 at java.nio.DirectByteBuffer.init(DirectByteBuffer.java:97)
 at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:288)
 at 
 org.apache.hadoop.hdfs.util.DirectBufferPool.getBuffer(DirectBufferPool.java:70)
 at 
 org.apache.hadoop.hdfs.BlockReaderLocal.init(BlockReaderLocal.java:315)
 at 
 org.apache.hadoop.hdfs.BlockReaderLocal.newBlockReader(BlockReaderLocal.java:208)
 at 
 org.apache.hadoop.hdfs.DFSClient.getLocalBlockReader(DFSClient.java:790)
 at 
 org.apache.hadoop.hdfs.DFSInputStream.getBlockReader(DFSInputStream.java:888)
 at 
 org.apache.hadoop.hdfs.DFSInputStream.blockSeekTo(DFSInputStream.java:455)
 at 
 org.apache.hadoop.hdfs.DFSInputStream.readWithStrategy(DFSInputStream.java:645)
 at org.apache.hadoop.hdfs.DFSInputStream.read(DFSInputStream.java:689)
 at java.io.DataInputStream.readFully(DataInputStream.java:178)
 at 
 org.apache.hadoop.hbase.io.hfile.FixedFileTrailer.readFromStream(FixedFileTrailer.java:312)
 at 
 org.apache.hadoop.hbase.io.hfile.HFile.pickReaderVersion(HFile.java:543)
 at 
 org.apache.hadoop.hbase.io.hfile.HFile.createReaderWithEncoding(HFile.java:589)
 at 
 org.apache.hadoop.hbase.regionserver.StoreFile$Reader.init(StoreFile.java:1261)
 at 
 org.apache.hadoop.hbase.regionserver.StoreFile.open(StoreFile.java:512)
 at 
 org.apache.hadoop.hbase.regionserver.StoreFile.createReader(StoreFile.java:603)
 at 
 org.apache.hadoop.hbase.regionserver.Store.validateStoreFile(Store.java:1568)
 at 
 org.apache.hadoop.hbase.regionserver.Store.commitFile(Store.java:845)
 at 
 org.apache.hadoop.hbase.regionserver.Store.access$500(Store.java:109)
 at 
 org.apache.hadoop.hbase.regionserver.Store$StoreFlusherImpl.commit(Store.java:2209)
 at 
 org.apache.hadoop.hbase.regionserver.HRegion.internalFlushcache(HRegion.java:1541)
 {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please 

[jira] [Updated] (HBASE-8656) Rpc call may not be notified in SecureClient

2013-06-21 Thread Lars Hofhansl (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8656?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lars Hofhansl updated HBASE-8656:
-

Priority: Major  (was: Critical)

Not critical, though.

 Rpc call may not be notified in SecureClient
 

 Key: HBASE-8656
 URL: https://issues.apache.org/jira/browse/HBASE-8656
 Project: HBase
  Issue Type: Bug
  Components: Client, IPC/RPC, security
Affects Versions: 0.94.7
Reporter: cuijianwei
Assignee: cuijianwei
 Fix For: 0.94.9

 Attachments: HBASE-8656-0.94-v1.txt


 In SecureClient.java, rpc responses will be processed by receiveResponse() 
 which looks like:
 {code}
 try {
 int id = in.readInt();// try to read an id
 if (LOG.isDebugEnabled())
   LOG.debug(getName() +  got value # + id);
 Call call = calls.remove(id);
 int state = in.readInt(); // read call status
 if (LOG.isDebugEnabled()) {
   LOG.debug(call #+id+ state is  + state);
 }
 if (state == Status.SUCCESS.state) {
   Writable value = ReflectionUtils.newInstance(valueClass, conf);
   value.readFields(in); // read value
   if (LOG.isDebugEnabled()) {
 LOG.debug(call #+id+, response is:\n+value.toString());
   }
   // it's possible that this call may have been cleaned up due to a 
 RPC
   // timeout, so check if it still exists before setting the value.
   if (call != null) {
 call.setValue(value);
   }
 } else if (state == Status.ERROR.state) {
   if (call != null) {
 call.setException(new 
 RemoteException(WritableUtils.readString(in), WritableUtils
 .readString(in)));
   }
 } else if (state == Status.FATAL.state) {
   // Close the connection
   markClosed(new RemoteException(WritableUtils.readString(in),
  WritableUtils.readString(in)));
 }
   } catch (IOException e) {
 if (e instanceof SocketTimeoutException  remoteId.rpcTimeout  0) {
   // Clean up open calls but don't treat this as a fatal condition,
   // since we expect certain responses to not make it by the specified
   // {@link ConnectionId#rpcTimeout}.
   closeException = e;
 } else {
   // Since the server did not respond within the default ping interval
   // time, treat this as a fatal condition and close this connection
   markClosed(e);
 }
   } finally {
 if (remoteId.rpcTimeout  0) {
   cleanupCalls(remoteId.rpcTimeout);
 }
   }
 }
 {code}
 In above code, in the try block, the call will be firstly removed from call 
 map by:
 {code}
 Call call = calls.remove(id);
 {code}
 There may be two cases leading the call couldn't be notified and the invoking 
 thread will wait forever. 
 Firstly, if the returned status is Status.FATAL.state by:
 {code}
 int state = in.readInt(); // read call status
 {code}
 The code will come into:
 {code}
 } else if (state == Status.FATAL.state) {
   // Close the connection
   markClosed(new RemoteException(WritableUtils.readString(in),
  WritableUtils.readString(in)));
 }
 {code}
 Here, the SecureConnection is marked as closed and all rpc calls in call map 
 of this connection will be notified to receive an exception. However, the 
 current rpc call has been removed from the call map, it won't be notified.
 Secondly, after the call has been removed by:
 {code}
 Call call = calls.remove(id);
 {code}
 If we encounter any exception before the 'try' block finished, the code will 
 come into 'catch' and 'finally' block, neither 'catch' block nor 'finally' 
 block will notify the rpc call because it has been removed from call map.
 Compared with receiveResponse() in HBaseClient.java, it may be better to get 
 the rpc call from call map and remove it at the end of the 'try' block.

--
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


[jira] [Updated] (HBASE-8619) [HBase Client]: Improve client to retry if master is down when requesting getHTableDescriptor

2013-06-21 Thread Lars Hofhansl (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8619?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lars Hofhansl updated HBASE-8619:
-

Fix Version/s: (was: 0.94.9)
   0.94.10

 [HBase Client]: Improve client to retry if master is down when requesting 
 getHTableDescriptor
 -

 Key: HBASE-8619
 URL: https://issues.apache.org/jira/browse/HBASE-8619
 Project: HBase
  Issue Type: Bug
  Components: Client
Affects Versions: 0.94.8
Reporter: Aleksandr Shulman
Assignee: Elliott Clark
Priority: Minor
 Fix For: 0.94.10


 In our rolling upgrade testing, running ImportTsv failed in the job 
 submission phase when the master was down. This was when the master was 
 failing over to the backup master. In this case, a retry would have been 
 helpful and made sure that the job would get submitted.
 A good solution would be to refresh the master information before placing the 
 call to getHTableDescriptor.
 Command:
 {code} sudo -u hbase hbase org.apache.hadoop.hbase.mapreduce.ImportTsv 
 -Dimporttsv.columns=HBASE_ROW_KEY,c1,c2,c3 
 -Dimporttsv.bulk.output=/user/hbase/storeFiles2_2/import2_table1369439156 
 import2_table1369439156 /user/hbase/tsv2{code}
 Here is the stack trace:
 {code} 13/05/24 16:55:49 INFO compress.CodecPool: Got brand-new compressor 
 [.deflate]
 16:45:44  Exception in thread main 
 java.lang.reflect.UndeclaredThrowableException
 16:45:44  at $Proxy7.getHTableDescriptors(Unknown Source)
 16:45:44  at 
 org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getHTableDescriptor(HConnectionManager.java:1861)
 16:45:44  at 
 org.apache.hadoop.hbase.client.HTable.getTableDescriptor(HTable.java:440)
 16:45:44  at 
 org.apache.hadoop.hbase.mapreduce.HFileOutputFormat.configureCompression(HFileOutputFormat.java:458)
 16:45:44  at 
 org.apache.hadoop.hbase.mapreduce.HFileOutputFormat.configureIncrementalLoad(HFileOutputFormat.java:375)
 16:45:44  at 
 org.apache.hadoop.hbase.mapreduce.ImportTsv.createSubmittableJob(ImportTsv.java:280)
 16:45:44  at 
 org.apache.hadoop.hbase.mapreduce.ImportTsv.main(ImportTsv.java:424)
 16:45:44  Caused by: java.io.IOException: Call to 
 hbase-rolling-6.ent.cloudera.com/10.20.186.99:22001 failed on local 
 exception: java.io.EOFException
 16:45:44  at 
 org.apache.hadoop.hbase.ipc.HBaseClient.wrapException(HBaseClient.java:1030)
 16:45:44  at 
 org.apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.java:999)
 16:45:44  at 
 org.apache.hadoop.hbase.ipc.WritableRpcEngine$Invoker.invoke(WritableRpcEngine.java:86)
 16:45:44  ... 7 more
 16:45:44  Caused by: java.io.EOFException
 16:45:44  at java.io.DataInputStream.readInt(DataInputStream.java:375)
 16:45:44  at 
 org.apache.hadoop.hbase.ipc.HBaseClient$Connection.receiveResponse(HBaseClient.java:646)
 16:45:44  at 
 org.apache.hadoop.hbase.ipc.HBaseClient$Connection.run(HBaseClient.java:580){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


[jira] [Updated] (HBASE-8752) Backport HBASE-6466 to 0.94

2013-06-21 Thread Lars Hofhansl (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8752?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lars Hofhansl updated HBASE-8752:
-

Fix Version/s: (was: 0.94.9)
   0.94.10

 Backport HBASE-6466 to 0.94
 ---

 Key: HBASE-8752
 URL: https://issues.apache.org/jira/browse/HBASE-8752
 Project: HBase
  Issue Type: Improvement
  Components: regionserver
Affects Versions: 0.94.8
Reporter: Richard Ding
Assignee: Richard Ding
Priority: Minor
 Fix For: 0.94.10

 Attachments: HBASE-8752.patch


 0.94 already supports multi-thread compaction. It will be good it also 
 supports multi-thread memstore flush, so that users can tune the number of 
 threads for both compaction and flushing when running a heavy-write load.

--
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


[jira] [Updated] (HBASE-8771) ensure replication_scope's value is either local(0) or global(1)

2013-06-21 Thread Lars Hofhansl (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8771?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lars Hofhansl updated HBASE-8771:
-

Fix Version/s: (was: 0.94.9)
   0.94.10

Still discussing. Moving out.

 ensure replication_scope's value is either local(0) or global(1)
 

 Key: HBASE-8771
 URL: https://issues.apache.org/jira/browse/HBASE-8771
 Project: HBase
  Issue Type: Bug
  Components: Replication
Affects Versions: 0.94.8
Reporter: Demai Ni
Priority: Minor
 Fix For: 0.94.10

 Attachments: HBASE-8771-0.94.8-v0.patch


 For replication_scope, only two values are meaningful:
 {code} 
   public static final int REPLICATION_SCOPE_LOCAL = 0;
   public static final int REPLICATION_SCOPE_GLOBAL = 1;
 {code} 
 However, there is no checking for that, so currently user can set it to any 
 integer value. And all non-zero value will be treated as 1(GLOBAL). 
 This jira is to add a checking in HColumnDescriptor#setScope() so that only 0 
 and 1 will be accept during create_table or alter_table. 
 In the future, we can leverage replication_scope to store for info. For 
 example: 
 -1: A columnfam is replicated from another cluster in MASTER_SLAVE setup (i.e 
 readonly)
 2 : A columnfam is set MASTER_MASTER
 Probably a major improve JIRA is needed for the future usage. It will be good 
 to ensure the scope value at this moment. 
 {code:title=Testing|borderStyle=solid}
 hbase(main):002:0 create 't1_dn',{NAME='cf1',REPLICATION_SCOPE=2}
 ERROR: java.lang.IllegalArgumentException: Replication Scope must be either 
 0(local) or 1(global)
 ...
 hbase(main):004:0 alter 't1_dn',{NAME='cf1',REPLICATION_SCOPE=-1}
 ERROR: java.lang.IllegalArgumentException: Replication Scope must be either 
 0(local) or 1(global)
 ...
 {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


[jira] [Commented] (HBASE-8752) Backport HBASE-6466 to 0.94

2013-06-21 Thread Lars Hofhansl (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8752?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690732#comment-13690732
 ] 

Lars Hofhansl commented on HBASE-8752:
--

Thanks [~rding]. Did you performance test this?
I remember in trunk there locking issue that at first prevented the extra 
threads from causing any performance improvements.

 Backport HBASE-6466 to 0.94
 ---

 Key: HBASE-8752
 URL: https://issues.apache.org/jira/browse/HBASE-8752
 Project: HBase
  Issue Type: Improvement
  Components: regionserver
Affects Versions: 0.94.8
Reporter: Richard Ding
Assignee: Richard Ding
Priority: Minor
 Fix For: 0.94.9

 Attachments: HBASE-8752.patch


 0.94 already supports multi-thread compaction. It will be good it also 
 supports multi-thread memstore flush, so that users can tune the number of 
 threads for both compaction and flushing when running a heavy-write load.

--
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


[jira] [Created] (HBASE-8786) Creating a table with a Bloom filter on the shell is broken.

2013-06-21 Thread Elliott Clark (JIRA)
Elliott Clark created HBASE-8786:


 Summary: Creating a table with a Bloom filter on the shell is 
broken.
 Key: HBASE-8786
 URL: https://issues.apache.org/jira/browse/HBASE-8786
 Project: HBase
  Issue Type: Bug
  Components: shell
Affects Versions: 0.95.1
Reporter: Elliott Clark
Assignee: Elliott Clark


{code}create 'tsdb', {NAME = 't', VERSIONS = 1, BLOOMFILTER = 'row'}{code}

results in:

{code}ERROR: uninitialized constant 
Java::OrgApacheHadoopHbaseRegionserver::StoreFile::BloomType{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


[jira] [Updated] (HBASE-8595) Add rename operation in hbase shell

2013-06-21 Thread Lars Hofhansl (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8595?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lars Hofhansl updated HBASE-8595:
-

Fix Version/s: (was: 0.94.9)
   0.94.10

 Add rename operation in hbase shell
 ---

 Key: HBASE-8595
 URL: https://issues.apache.org/jira/browse/HBASE-8595
 Project: HBase
  Issue Type: New Feature
  Components: shell
Affects Versions: 0.94.8, 0.95.1
Reporter: Aleksandr Shulman
Assignee: Aleksandr Shulman
Priority: Minor
 Fix For: 0.95.2, 0.94.10

 Attachments: HBASE-8595-v0.patch


 We can use a set of snapshot commands to elegantly rename a table. It would 
 be nice to wrap all those commands in a single call.
 http://hbase.apache.org/book.html#table.rename
 Also -- the documentation is missing the last step where the original table 
 needs to be deleted. I can add that to the docbook.

--
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


[jira] [Commented] (HBASE-8329) Limit compaction speed

2013-06-21 Thread Sergey Shelukhin (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8329?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690737#comment-13690737
 ] 

Sergey Shelukhin commented on HBASE-8329:
-

+1

 Limit compaction speed
 --

 Key: HBASE-8329
 URL: https://issues.apache.org/jira/browse/HBASE-8329
 Project: HBase
  Issue Type: Improvement
  Components: Compaction
Reporter: binlijin
 Attachments: HBASE-8329-2-trunk.patch, HBASE-8329-3-trunk.patch, 
 HBASE-8329-4-trunk.patch, HBASE-8329-trunk.patch


 There is no speed or resource limit for compaction,I think we should add this 
 feature especially when request burst.

--
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


[jira] [Updated] (HBASE-8565) stop-hbase.sh clean up: backup master

2013-06-21 Thread Lars Hofhansl (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8565?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lars Hofhansl updated HBASE-8565:
-

Fix Version/s: (was: 0.94.9)
   0.94.10

 stop-hbase.sh clean up: backup master
 -

 Key: HBASE-8565
 URL: https://issues.apache.org/jira/browse/HBASE-8565
 Project: HBase
  Issue Type: Bug
  Components: master, scripts
Affects Versions: 0.94.7, 0.95.0
Reporter: Jerry He
Priority: Minor
 Fix For: 0.98.0, 0.95.2, 0.94.10


 In stop-hbase.sh:
 {code}
   # TODO: store backup masters in ZooKeeper and have the primary send them a 
 shutdown message
   # stop any backup masters
   $bin/hbase-daemons.sh --config ${HBASE_CONF_DIR} \
 --hosts ${HBASE_BACKUP_MASTERS} stop master-backup
 {code}
 After HBASE-5213, stop-hbase.sh - hbase master stop will bring up the backup 
 master too via the cluster status znode.
 We should not need the above code anymore.
 Another issue happens when the current master died and the backup master 
 became the active master.
 {code}
 nohup nice -n ${HBASE_NICENESS:-0} $HBASE_HOME/bin/hbase \
--config ${HBASE_CONF_DIR} \
master stop $@  $logout 21  /dev/null 
 waitForProcessEnd `cat $pid` 'stop-master-command'
 {code}
 We can still issue 'hbase-stop.sh' from the old master.
 stop-hbase.sh - hbase master stop - look for active master - request 
 shutdown
 This process still works.
 But the waitForProcessEnd statement will not work since the local master pid 
 is not relevant anymore.
 What is the best way in the this case?

--
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


[jira] [Updated] (HBASE-8779) add mutateRow method support to thrift2

2013-06-21 Thread Lars Hofhansl (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8779?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lars Hofhansl updated HBASE-8779:
-

Fix Version/s: (was: 0.94.9)
   0.94.10

 add mutateRow method support to thrift2
 ---

 Key: HBASE-8779
 URL: https://issues.apache.org/jira/browse/HBASE-8779
 Project: HBase
  Issue Type: New Feature
  Components: Thrift
Reporter: duanhongyi
 Fix For: 0.94.10

 Attachments: 0.94.patch


 examples py:
 TPut put = TPut()
 m1 = TMutation(put=put)
 TDelete single_delete = TDelete()
 m2 = TMutation(singleDelete=single_delete)
 row_mu = TRowMutations(row,[m1,m2])
 thbase_service.mutateRow(table,row_mu)  # atomically on a single row

--
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


[jira] [Updated] (HBASE-8773) Can be setup the COMPRESSION base on HTable in meta or user set in Configuration

2013-06-21 Thread Lars Hofhansl (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8773?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lars Hofhansl updated HBASE-8773:
-

Fix Version/s: (was: 0.94.9)
   0.94.10

 Can be setup the COMPRESSION base on HTable in meta or user set in 
 Configuration
 

 Key: HBASE-8773
 URL: https://issues.apache.org/jira/browse/HBASE-8773
 Project: HBase
  Issue Type: New Feature
  Components: HFile
Affects Versions: 0.94.8
Reporter: jay wong
 Fix For: 0.94.10

 Attachments: HBASE-8773.patch


 when I want create HFile with the ImportTsv. I found that if i set the 
 compression in the Configuration or not, It's always invalid。
 It because of the method 'configureIncrementalLoad' in HFileOutputFormat will 
 set the compression with the HTable in meta. So if add a configuration to 
 switch use set compression with HTable or Not

--
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


[jira] [Commented] (HBASE-8776) port HBASE-8723 to 0.94

2013-06-21 Thread Sergey Shelukhin (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8776?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690739#comment-13690739
 ] 

Sergey Shelukhin commented on HBASE-8776:
-

I'd say we should :)

 port HBASE-8723 to 0.94
 ---

 Key: HBASE-8776
 URL: https://issues.apache.org/jira/browse/HBASE-8776
 Project: HBase
  Issue Type: Bug
Affects Versions: 0.94.8
Reporter: Sergey Shelukhin
Assignee: Sergey Shelukhin
 Fix For: 0.94.9

 Attachments: HBASE-8776-v0.patch




--
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


[jira] [Updated] (HBASE-8773) Can be setup the COMPRESSION base on HTable in meta or user set in Configuration

2013-06-21 Thread Lars Hofhansl (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8773?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lars Hofhansl updated HBASE-8773:
-

Priority: Minor  (was: Major)

 Can be setup the COMPRESSION base on HTable in meta or user set in 
 Configuration
 

 Key: HBASE-8773
 URL: https://issues.apache.org/jira/browse/HBASE-8773
 Project: HBase
  Issue Type: New Feature
  Components: HFile
Affects Versions: 0.94.8
Reporter: jay wong
Priority: Minor
 Fix For: 0.94.10

 Attachments: HBASE-8773.patch


 when I want create HFile with the ImportTsv. I found that if i set the 
 compression in the Configuration or not, It's always invalid。
 It because of the method 'configureIncrementalLoad' in HFileOutputFormat will 
 set the compression with the HTable in meta. So if add a configuration to 
 switch use set compression with HTable or Not

--
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


[jira] [Commented] (HBASE-8785) revise zookeeper session timeout setting

2013-06-21 Thread Sergey Shelukhin (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-8785?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690741#comment-13690741
 ] 

Sergey Shelukhin commented on HBASE-8785:
-

I see it's changed to 90s on trunk.
Regardless, as I said by default it won't apply because ZK default is 40s, and 
minimum is taken.

 revise zookeeper session timeout setting
 

 Key: HBASE-8785
 URL: https://issues.apache.org/jira/browse/HBASE-8785
 Project: HBase
  Issue Type: Improvement
Affects Versions: 0.95.1
Reporter: Sergey Shelukhin
 Fix For: 0.95.2


 Current ZK session timeout is set to 90sec., and the comment in the doc says: 
 This setting becomes zookeeper's 'maxSessionTimeout'. However, this comment 
 is misleading - it doesn't always become maxSessionTimeout, min(our timeout, 
 maxSessionTimeout) is chosen. Moreover, the default maxSessionTimeout in ZK 
 that I'm looking at is 40s, so this setting doesn't do anything.
 Additionally, 40s. seems like a lot of time.
 1) Should the comment be changed to tell the user to change ZK config if they 
 want higher timeout?
 2) Should the setting be revised down?

--
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


  1   2   >