[jira] [Updated] (HBASE-10322) Strip tags from KV while sending back to client on reads

2014-01-18 Thread ramkrishna.s.vasudevan (JIRA)

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

ramkrishna.s.vasudevan updated HBASE-10322:
---

Attachment: HBASE-10322_codec.patch

Just attaching a patch where after we support only server side tags, with the 
above change for the replication side things would work.  May be some one more 
familiar with replication can take a look. Replication testcases passes with 
this.

> Strip tags from KV while sending back to client on reads
> 
>
> Key: HBASE-10322
> URL: https://issues.apache.org/jira/browse/HBASE-10322
> Project: HBase
>  Issue Type: Bug
>Affects Versions: 0.98.0
>Reporter: Anoop Sam John
>Assignee: Anoop Sam John
>Priority: Blocker
> Fix For: 0.98.0, 0.99.0
>
> Attachments: HBASE-10322.patch, HBASE-10322_V2.patch, 
> HBASE-10322_codec.patch
>
>
> Right now we have some inconsistency wrt sending back tags on read. We do 
> this in scan when using Java client(Codec based cell block encoding). But 
> during a Get operation or when a pure PB based Scan comes we are not sending 
> back the tags.  So any of the below fix we have to do
> 1. Send back tags in missing cases also. But sending back visibility 
> expression/ cell ACL is not correct.
> 2. Don't send back tags in any case. This will a problem when a tool like 
> ExportTool use the scan to export the table data. We will miss exporting the 
> cell visibility/ACL.
> 3. Send back tags based on some condition. It has to be per scan basis. 
> Simplest way is pass some kind of attribute in Scan which says whether to 
> send back tags or not. But believing some thing what scan specifies might not 
> be correct IMO. Then comes the way of checking the user who is doing the 
> scan. When a HBase super user doing the scan then only send back tags. So 
> when a case comes like Export Tool's the execution should happen from a super 
> user.
> So IMO we should go with #3.
> Patch coming soon.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Commented] (HBASE-10322) Strip tags from KV while sending back to client on reads

2014-01-18 Thread ramkrishna.s.vasudevan (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-10322?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13875584#comment-13875584
 ] 

ramkrishna.s.vasudevan commented on HBASE-10322:


>>If you do start using the 0.98 features which require cell tags, then your 
>>replication endpoints must all be upgrade to 0.98 first, and you must change 
>>a configuration setting.
This would apply there.

> Strip tags from KV while sending back to client on reads
> 
>
> Key: HBASE-10322
> URL: https://issues.apache.org/jira/browse/HBASE-10322
> Project: HBase
>  Issue Type: Bug
>Affects Versions: 0.98.0
>Reporter: Anoop Sam John
>Assignee: Anoop Sam John
>Priority: Blocker
> Fix For: 0.98.0, 0.99.0
>
> Attachments: HBASE-10322.patch, HBASE-10322_V2.patch, 
> HBASE-10322_codec.patch
>
>
> Right now we have some inconsistency wrt sending back tags on read. We do 
> this in scan when using Java client(Codec based cell block encoding). But 
> during a Get operation or when a pure PB based Scan comes we are not sending 
> back the tags.  So any of the below fix we have to do
> 1. Send back tags in missing cases also. But sending back visibility 
> expression/ cell ACL is not correct.
> 2. Don't send back tags in any case. This will a problem when a tool like 
> ExportTool use the scan to export the table data. We will miss exporting the 
> cell visibility/ACL.
> 3. Send back tags based on some condition. It has to be per scan basis. 
> Simplest way is pass some kind of attribute in Scan which says whether to 
> send back tags or not. But believing some thing what scan specifies might not 
> be correct IMO. Then comes the way of checking the user who is doing the 
> scan. When a HBase super user doing the scan then only send back tags. So 
> when a case comes like Export Tool's the execution should happen from a super 
> user.
> So IMO we should go with #3.
> Patch coming soon.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Commented] (HBASE-10374) add jemalloc into the choice of memstore allocation

2014-01-18 Thread Bing Jiang (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-10374?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13875587#comment-13875587
 ] 

Bing Jiang commented on HBASE-10374:


[~stack] I have a question, if we try to use the feature which Netty provides, 
I believe there are two choices, the one is to add dependence upon Netty, the 
other one is to implements the jemalloc by the help of their codes. I want to 
take your suggestion.



> add jemalloc into the choice of memstore allocation 
> 
>
> Key: HBASE-10374
> URL: https://issues.apache.org/jira/browse/HBASE-10374
> Project: HBase
>  Issue Type: Improvement
>  Components: regionserver
>Affects Versions: 0.96.1.1
>Reporter: Bing Jiang
>Priority: Minor
>
> https://blog.twitter.com/2013/netty-4-at-twitter-reduced-gc-overhead 
> introduced that Netty used jemalloc to gain benefits from GC.
> It can be a good choice for memstore block allocation.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Commented] (HBASE-10322) Strip tags from KV while sending back to client on reads

2014-01-18 Thread Anoop Sam John (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-10322?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13875600#comment-13875600
 ] 

Anoop Sam John commented on HBASE-10322:


How about adding new config hbase.replication.rpc.codec  or going with existing 
config only but asking to configure xxxWithTags codec to be used?  Ping 
[~stack] , [~apurtell]..I am fine with any of this.
1st one needs some code change as Ram attached while the other don't need any 
code changes.

> Strip tags from KV while sending back to client on reads
> 
>
> Key: HBASE-10322
> URL: https://issues.apache.org/jira/browse/HBASE-10322
> Project: HBase
>  Issue Type: Bug
>Affects Versions: 0.98.0
>Reporter: Anoop Sam John
>Assignee: Anoop Sam John
>Priority: Blocker
> Fix For: 0.98.0, 0.99.0
>
> Attachments: HBASE-10322.patch, HBASE-10322_V2.patch, 
> HBASE-10322_codec.patch
>
>
> Right now we have some inconsistency wrt sending back tags on read. We do 
> this in scan when using Java client(Codec based cell block encoding). But 
> during a Get operation or when a pure PB based Scan comes we are not sending 
> back the tags.  So any of the below fix we have to do
> 1. Send back tags in missing cases also. But sending back visibility 
> expression/ cell ACL is not correct.
> 2. Don't send back tags in any case. This will a problem when a tool like 
> ExportTool use the scan to export the table data. We will miss exporting the 
> cell visibility/ACL.
> 3. Send back tags based on some condition. It has to be per scan basis. 
> Simplest way is pass some kind of attribute in Scan which says whether to 
> send back tags or not. But believing some thing what scan specifies might not 
> be correct IMO. Then comes the way of checking the user who is doing the 
> scan. When a HBase super user doing the scan then only send back tags. So 
> when a case comes like Export Tool's the execution should happen from a super 
> user.
> So IMO we should go with #3.
> Patch coming soon.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Commented] (HBASE-10322) Strip tags from KV while sending back to client on reads

2014-01-18 Thread Hadoop QA (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-10322?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13875602#comment-13875602
 ] 

Hadoop QA commented on HBASE-10322:
---

{color:red}-1 overall{color}.  Here are the results of testing the latest 
attachment 
  
http://issues.apache.org/jira/secure/attachment/12623779/HBASE-10322_codec.patch
  against trunk revision .
  ATTACHMENT ID: 12623779

{color:green}+1 @author{color}.  The patch does not contain any @author 
tags.

{color:red}-1 tests included{color}.  The patch doesn't appear to include 
any new or modified tests.
Please justify why no new tests are needed for this 
patch.
Also please list what manual steps were performed to 
verify this patch.

{color:green}+1 hadoop1.0{color}.  The patch compiles against the hadoop 
1.0 profile.

{color:green}+1 hadoop1.1{color}.  The patch compiles against the hadoop 
1.1 profile.

{color:green}+1 javadoc{color}.  The javadoc tool did not generate any 
warning messages.

{color:green}+1 javac{color}.  The applied patch does not increase the 
total number of javac compiler warnings.

{color:green}+1 findbugs{color}.  The patch does not introduce any new 
Findbugs (version 1.3.9) warnings.

{color:green}+1 release audit{color}.  The applied patch does not increase 
the total number of release audit warnings.

{color:red}-1 lineLengths{color}.  The patch introduces the following lines 
longer than 100:
+this.conf.set("hbase.client.rpc.codec", 
this.conf.get("hbase.replication.rpc.codec","org.apache.hadoop.hbase.codec.CellCodecV2"));
+this.conf.set("hbase.client.rpc.codec", 
this.conf.get("hbase.replication.rpc.codec","org.apache.hadoop.hbase.codec.CellCodecV2"));

{color:red}-1 site{color}.  The patch appears to cause mvn site goal to 
fail.

 {color:red}-1 core tests{color}.  The patch failed these unit tests:
   org.apache.hadoop.hbase.TestAcidGuarantees

Test results: 
https://builds.apache.org/job/PreCommit-HBASE-Build/8468//testReport/
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/8468//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop2-compat.html
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/8468//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-prefix-tree.html
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/8468//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-client.html
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/8468//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-common.html
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/8468//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-protocol.html
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/8468//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.html
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/8468//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-examples.html
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/8468//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-thrift.html
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/8468//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop-compat.html
Console output: 
https://builds.apache.org/job/PreCommit-HBASE-Build/8468//console

This message is automatically generated.

> Strip tags from KV while sending back to client on reads
> 
>
> Key: HBASE-10322
> URL: https://issues.apache.org/jira/browse/HBASE-10322
> Project: HBase
>  Issue Type: Bug
>Affects Versions: 0.98.0
>Reporter: Anoop Sam John
>Assignee: Anoop Sam John
>Priority: Blocker
> Fix For: 0.98.0, 0.99.0
>
> Attachments: HBASE-10322.patch, HBASE-10322_V2.patch, 
> HBASE-10322_codec.patch
>
>
> Right now we have some inconsistency wrt sending back tags on read. We do 
> this in scan when using Java client(Codec based cell block encoding). But 
> during a Get operation or when a pure PB based Scan comes we are not sending 
> back the tags.  So any of the below fix we have to do
> 1. Send back tags in missing cases also. But sending back visibility 
> expression/ cell ACL is not correct.
> 2. Don't send back tags in any case. This will a problem when a tool like 
> ExportTool use the scan to export the table data. We will miss exporting the 
> cell visibility/ACL.
> 3. Send back tags based on some condition. It has to be per scan basis. 
> Simplest way is pass some kind of attribute in Scan which says whether to 
> send back tags or not. But believing some thing what scan s

[jira] [Commented] (HBASE-10349) Table became unusable when master balanced its region after table was dropped

2014-01-18 Thread Hudson (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-10349?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13875638#comment-13875638
 ] 

Hudson commented on HBASE-10349:


FAILURE: Integrated in hbase-0.96-hadoop2 #179 (See 
[https://builds.apache.org/job/hbase-0.96-hadoop2/179/])
HBASE-10349 Table became unusable when master balanced its region after table 
was dropped (jxiang: rev 1559313)
* 
/hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
* 
/hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionStates.java
* 
/hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DeleteTableHandler.java
* 
/hbase/branches/0.96/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManager.java
* 
/hbase/branches/0.96/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManagerOnCluster.java


> Table became unusable when master balanced its region after table was dropped
> -
>
> Key: HBASE-10349
> URL: https://issues.apache.org/jira/browse/HBASE-10349
> Project: HBase
>  Issue Type: Bug
>Affects Versions: 0.98.0
>Reporter: Ted Yu
>Assignee: Jimmy Xiang
> Fix For: 0.98.0, 0.96.2, 0.99.0
>
> Attachments: 
> 10349-hadoop-hdfs-namenode-hor11n14.gq1.ygridcore.net.zip, 10349-output.log, 
> 10349-v1.txt, 10349-v2.txt, HBASE-10349-meta-test-and-debug.patch, 
> hbase-10349.patch, hbase-10349_v2.patch, 
> hbase-hbase-master-hor15n05.gq1.ygridcore.net.log.tar.gz
>
>
> 0.98 was used.
> This was sequence of events:
> create 'tablethree_mod'
> snapshot 'tablethree_mod', 'snapshot_tablethree_mod'
> disable 'tablethree_mod'
> 2014-01-15 09:34:51,749   restore_snapshot 'snapshot_tablethree_mod'
> 2014-01-15 09:35:07,210   enable 'tablethree_mod'
> 2014-01-15 09:35:46,134   delete_snapshot 'snapshot_tablethree_mod'
> 2014-01-15 09:41:42,210   disable 'tablethree_mod'
> 2014-01-15 09:41:43,610   drop 'tablethree_mod'
> create 'tablethree_mod'
> For the last table creation request:
> {code} 
> 2014-01-15 10:03:52,999|beaver.component.hbase|INFO| 'create 'tablethree_mod',
> {NAME => 'f1', VERSIONS => 3}
> ,
> {NAME => 'f2', VERSIONS => 3}
> ,
> {NAME => 'f3', VERSIONS => 3}
> '
> 2014-01-15 10:03:52,999|beaver.component.hbase|INFO| 'exists 'tablethree_mod''
> 2014-01-15 10:03:52,999|beaver.component.hbase|INFO| 'put 'tablethree_mod', 
> '0', 'f1:q1', 'value-0', 10'
> 2014-01-15 10:03:52,999|beaver.component.hbase|INFO| 'put 'tablethree_mod', 
> '1', 'f1:q1', 'value-1', 20'
> 2014-01-15 10:03:53,000|beaver.component.hbase|INFO| 'put 'tablethree_mod', 
> '2', 'f2:q2', 'value-2', 30'
> 2014-01-15 10:03:53,000|beaver.component.hbase|INFO| 'put 'tablethree_mod', 
> '3', 'f3:q3', 'value-3', 40'
> 2014-01-15 10:03:53,000|beaver.component.hbase|INFO| 'put 'tablethree_mod', 
> '4', 'f3:q3', 'value-4', 50'
> 2014-01-15 10:03:53,000|beaver.component.hbase|INFO|Done writing commands to 
> file. Will execute them now.
> 2014-01-15 10:03:53,000|beaver.machine|INFO|RUNNING: /usr/lib/hbase/bin/hbase 
> shell /grid/0/tmp/hwqe/artifacts/tmp-471142
> 2014-01-15 10:03:55,878|beaver.machine|INFO|2014-01-15 10:03:55,878 INFO 
> [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, 
> use io.native.lib.available
> 2014-01-15 10:03:57,283|beaver.machine|INFO|2014-01-15 10:03:57,283 WARN 
> [main] conf.Configuration: hbase-site.xml:an attempt to override final 
> parameter: dfs.support.append; Ignoring.
> 2014-01-15 10:03:57,669|beaver.machine|INFO|2014-01-15 10:03:57,669 WARN 
> [main] conf.Configuration: hbase-site.xml:an attempt to override final 
> parameter: dfs.support.append; Ignoring.
> 2014-01-15 10:03:57,720|beaver.machine|INFO|2014-01-15 10:03:57,720 WARN 
> [main] conf.Configuration: hbase-site.xml:an attempt to override final 
> parameter: dfs.support.append; Ignoring.
> 2014-01-15 10:03:57,997|beaver.machine|INFO|
> 2014-01-15 10:03:57,997|beaver.machine|INFO|ERROR: Table already exists: 
> tablethree_mod!
> 2014-01-15 10:03:57,997|beaver.machine|INFO|
> {code}
> This was an intermittent issue after using Snapshots, a table is not properly 
> dropped / and not able to properly re-create with the same name. And a 
> HRegion is empty or null Error occurs. (When you try to drop the table it 
> says it does not exist, and when you try to create the table it says that it 
> does already exist).
> {code}
> 2014-01-15 10:04:02,462|beaver.machine|INFO|ERROR: HRegionInfo was null or 
> empty in hbase:meta, row=keyvalues=
> {tablethree_mod,,1389778226606.afc82d1ceabbaca36a504b83b65fc0c9./info:seqnumDuringOpen/1389778905355/Put/vlen=8/mvcc=0,
>  
> tablethree_mod,,1389778226606.afc82d1ceabbaca36a504b83b65fc0c9./info:server/1389778905355/Put/vlen=32

[jira] [Comment Edited] (HBASE-10322) Strip tags from KV while sending back to client on reads

2014-01-18 Thread Anoop Sam John (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-10322?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13875571#comment-13875571
 ] 

Anoop Sam John edited comment on HBASE-10322 at 1/18/14 6:50 PM:
-

My patch is like almost ready except Replication!
ReplicationSource uses AdminService#ReplicateWALEntry() and call 
HRS#replicateWALEntry()  via the same path of client to HRS communication.. ie 
via RpcClient.. So if we have to introduce 2 configs some sort of if checks etc 
will come which tells abt the context etc..:(
Another simple way with out any code change I am thinking now is as follows:

RpcClient looks at "hbase.client.rpc.codec" for getting the Codec class name.
Well HBase client side looks at this config at client end and uses that Codec 
to write to server and also writes the codec class name in connection header. 
Server looks at the connection header to see the class name of the Codec which 
is used by the client and it instantiate that and uses the same to communicate 
with that client.
Here we can do one thing. We can ask the user to configure two class names 
(When some one uses tags) at client and server. 
Say at client use KVCodec and at server configure it as KVCodecWithTags.  Let 
KVCodecWithTags serialize tags also.At the peer cluster HRS also this codec 
class  should be there and there, in connection header, the class name will be 
KVCodecWithTags and will use that  :)

This will work well.   So for existing users there is no need to do any 
changes.  When users use the tags (or visibility labels or cell level acl) they 
must make this change and make sure the 98 upgrade is done in all the clusters.

Opinions pls. 

Edit : ReplicationSource already refers to this config "hbase.client.rpc.codec" 
as it uses RpcClient to talk with peer.


was (Author: anoop.hbase):
My patch is like almost ready except Replication!
ReplicationSource uses AdminService#ReplicateWALEntry() and call 
HRS#replicateWALEntry()  via the same path of client to HRS communication.. ie 
via RpcClient.. So if we have to introduce 2 configs some sort of if checks etc 
will come which tells abt the context etc..:(
Another simple way with out any code change I am thinking now is as follows:

RpcClient looks at "hbase.client.rpc.codec" for getting the Codec class name.
Well HBase client side looks at this config at client end and uses that Codec 
to write to server and also writes the codec class name in connection header. 
Server looks at the connection header to see the class name of the Codec which 
is used by the client and it instantiate that and uses the same to communicate 
with that client.
Here we can do one thing. We can ask the user to configure two class names 
(When some one uses tags) at client and server. 
Say at client use KVCodec and at server configure it as KVCodecWithTags.  Let 
KVCodecWithTags serialize tags also.At the peer cluster HRS also this codec 
class  should be there and there, in connection header, the class name will be 
KVCodecWithTags and will use that  :)

This will work well.   So for existing users there is no need to do any 
changes.  When users use the tags (or visibility labels or cell level acl) they 
must make this change and make sure the 98 upgrade is done in all the clusters.

Opinions pls. 

> Strip tags from KV while sending back to client on reads
> 
>
> Key: HBASE-10322
> URL: https://issues.apache.org/jira/browse/HBASE-10322
> Project: HBase
>  Issue Type: Bug
>Affects Versions: 0.98.0
>Reporter: Anoop Sam John
>Assignee: Anoop Sam John
>Priority: Blocker
> Fix For: 0.98.0, 0.99.0
>
> Attachments: HBASE-10322.patch, HBASE-10322_V2.patch, 
> HBASE-10322_codec.patch
>
>
> Right now we have some inconsistency wrt sending back tags on read. We do 
> this in scan when using Java client(Codec based cell block encoding). But 
> during a Get operation or when a pure PB based Scan comes we are not sending 
> back the tags.  So any of the below fix we have to do
> 1. Send back tags in missing cases also. But sending back visibility 
> expression/ cell ACL is not correct.
> 2. Don't send back tags in any case. This will a problem when a tool like 
> ExportTool use the scan to export the table data. We will miss exporting the 
> cell visibility/ACL.
> 3. Send back tags based on some condition. It has to be per scan basis. 
> Simplest way is pass some kind of attribute in Scan which says whether to 
> send back tags or not. But believing some thing what scan specifies might not 
> be correct IMO. Then comes the way of checking the user who is doing the 
> scan. When a HBase super user doing the scan then only send back tags. So 
> when a case comes like Export Tool's the execution should happen from a super 
> use

[jira] [Commented] (HBASE-10322) Strip tags from KV while sending back to client on reads

2014-01-18 Thread stack (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-10322?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13875757#comment-13875757
 ] 

stack commented on HBASE-10322:
---

It is wrong that replication is in the admin Service and that is in the server 
Service.  Can we make a Replication Service?  Would that help?



> Strip tags from KV while sending back to client on reads
> 
>
> Key: HBASE-10322
> URL: https://issues.apache.org/jira/browse/HBASE-10322
> Project: HBase
>  Issue Type: Bug
>Affects Versions: 0.98.0
>Reporter: Anoop Sam John
>Assignee: Anoop Sam John
>Priority: Blocker
> Fix For: 0.98.0, 0.99.0
>
> Attachments: HBASE-10322.patch, HBASE-10322_V2.patch, 
> HBASE-10322_codec.patch
>
>
> Right now we have some inconsistency wrt sending back tags on read. We do 
> this in scan when using Java client(Codec based cell block encoding). But 
> during a Get operation or when a pure PB based Scan comes we are not sending 
> back the tags.  So any of the below fix we have to do
> 1. Send back tags in missing cases also. But sending back visibility 
> expression/ cell ACL is not correct.
> 2. Don't send back tags in any case. This will a problem when a tool like 
> ExportTool use the scan to export the table data. We will miss exporting the 
> cell visibility/ACL.
> 3. Send back tags based on some condition. It has to be per scan basis. 
> Simplest way is pass some kind of attribute in Scan which says whether to 
> send back tags or not. But believing some thing what scan specifies might not 
> be correct IMO. Then comes the way of checking the user who is doing the 
> scan. When a HBase super user doing the scan then only send back tags. So 
> when a case comes like Export Tool's the execution should happen from a super 
> user.
> So IMO we should go with #3.
> Patch coming soon.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Created] (HBASE-10378) Divide HLog interface into User and Implementor specific interfaces

2014-01-18 Thread Himanshu Vashishtha (JIRA)
Himanshu Vashishtha created HBASE-10378:
---

 Summary: Divide HLog interface into User and Implementor specific 
interfaces
 Key: HBASE-10378
 URL: https://issues.apache.org/jira/browse/HBASE-10378
 Project: HBase
  Issue Type: Sub-task
  Components: wal
Reporter: Himanshu Vashishtha


HBASE-5937 introduces the HLog interface as a first step to support multiple 
WAL implementations. This interface is a good start, but has some 
limitations/drawbacks in its current state, such as:
1) There is no clear distinction b/w User and Implementor APIs, and it provides 
APIs both for WAL users (append, sync, etc) and also WAL implementors 
(Reader/Writer interfaces, etc). There are APIs which are very much 
implementation specific (getFileNum, etc) and a user such as a RegionServer 
shouldn't know about it.
2) There are about 14 methods in FSHLog which are not present in HLog interface 
but are used at several places in the unit test code. These tests typecast HLog 
to FSHLog, which makes it very difficult to test multiple WAL implementations 
without doing some ugly checks.

I'd like to propose some changes in HLog interface that would ease the multi 
WAL story:

1) Have two interfaces WAL and WALService. WAL provides APIs for implementors. 
WALService provides APIs for users (such as RegionServer).
2) A skeleton implementation of the above two interface as the base class for 
other WAL implementations (AbstractWAL). It provides required fields for all 
subclasses (fs, conf, log dir, etc). Make a minimal set of test only methods 
and add this set in AbstractWAL.
3) HLogFactory returns a WALService reference when creating a WAL instance; if 
a user need to access impl specific APIs (there are unit tests which get WAL 
from a HRegionServer and then call impl specific APIs), use AbstractWAL type 
casting,
4) Make TestHLog abstract and let all implementors provide their respective 
test class which extends TestHLog (TestFSHLog, for example).



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Updated] (HBASE-9681) Basic codec negotiation

2014-01-18 Thread Andrew Purtell (JIRA)

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

Andrew Purtell updated HBASE-9681:
--

Affects Version/s: (was: 0.98.0)
   0.99.0
Fix Version/s: (was: 0.98.0)

Moving out of 0.98

> Basic codec negotiation
> ---
>
> Key: HBASE-9681
> URL: https://issues.apache.org/jira/browse/HBASE-9681
> Project: HBase
>  Issue Type: Sub-task
>Affects Versions: 0.99.0
>Reporter: Andrew Purtell
>Assignee: ramkrishna.s.vasudevan
>Priority: Critical
>
> Basic codec negotiation:
> There should be a default codec used for cell encoding over the RPC 
> connection. This should be configurable in the site file. 
> The client can optionally send a message, a manufactured "call" that would 
> otherwise be invalid in some way, to the server asking for a list of 
> supported cell codecs. An older server should simply send back an error 
> because the request is invalid except to servers supporting this feature. A 
> server supporting this feature should send back the requested information or 
> an error indication if something went wrong.
> The client can optionally send a message, a manufactured "call" that would 
> otherwise be invalid in some way, to the server asking for it to use a given 
> codec for all further communication. Otherwise the server will continue to 
> use the default codec. The server will send back a call response 
> acknowledging the change or an error indication if the request cannot be 
> honored.
> Server configuration should support mappings from one codec type to another. 
> We need to handle the case where the server has a codec available that 
> extends the requested type but overrides some behavior in the base class, and 
> this is what should be used in lieu of the base type. It must also be 
> possible to choose an alternate default codec which stands in for the default 
> codec, is compatible with client expectations, but changes the server side 
> behavior as needed in the absence of negotiation. 



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Updated] (HBASE-9351) Connection capability negotiation

2014-01-18 Thread Andrew Purtell (JIRA)

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

Andrew Purtell updated HBASE-9351:
--

Affects Version/s: (was: 0.98.0)
   0.99.0

> Connection capability negotiation
> -
>
> Key: HBASE-9351
> URL: https://issues.apache.org/jira/browse/HBASE-9351
> Project: HBase
>  Issue Type: Brainstorming
>Affects Versions: 0.99.0
>Reporter: Andrew Purtell
>
> Would be useful to support negotiation at connection setup time beyond SASL. 
> Consider:
> Start with a default baseline profile. Both client and server sides can begin 
> communicating immediately (or after SASL completes if security is active), 
> with a baseline set of messages and codecs.
> For more interesting use cases, support configuration messages that negotiate 
> connection configuration going forward after both sides ack the changes: 
> codec, configuration, compression. Any nack aborts the upgrade request and 
> leaves both sides still in the default profile.
> Should be a pluggable implementation. For example, codec implementations 
> should be automatically discovered at runtime if shipped with the client or 
> server, and the set of available options should be communicated to the other 
> side.
> Features like codecs should all be versioned themselves. Negotiation should 
> be version aware, and decisionmaking on if a given pair of component versions 
> are compatible should be delegated to the component.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Updated] (HBASE-10378) Divide HLog interface into User and Implementor specific interfaces

2014-01-18 Thread Himanshu Vashishtha (JIRA)

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

Himanshu Vashishtha updated HBASE-10378:


Attachment: 10378-1.patch

Attaching an initial patch implementing the above mentioned changes. Please 
have a look at the overall approach. Thanks.

For testing, mvn clean test -PrunAllTests passes for both hadoop1 and hadoop2. 
Also ran the patched version on a test cluster/killing nodes and doing log 
splitting for basic sanity test. It looks good.

> Divide HLog interface into User and Implementor specific interfaces
> ---
>
> Key: HBASE-10378
> URL: https://issues.apache.org/jira/browse/HBASE-10378
> Project: HBase
>  Issue Type: Sub-task
>  Components: wal
>Reporter: Himanshu Vashishtha
> Attachments: 10378-1.patch
>
>
> HBASE-5937 introduces the HLog interface as a first step to support multiple 
> WAL implementations. This interface is a good start, but has some 
> limitations/drawbacks in its current state, such as:
> 1) There is no clear distinction b/w User and Implementor APIs, and it 
> provides APIs both for WAL users (append, sync, etc) and also WAL 
> implementors (Reader/Writer interfaces, etc). There are APIs which are very 
> much implementation specific (getFileNum, etc) and a user such as a 
> RegionServer shouldn't know about it.
> 2) There are about 14 methods in FSHLog which are not present in HLog 
> interface but are used at several places in the unit test code. These tests 
> typecast HLog to FSHLog, which makes it very difficult to test multiple WAL 
> implementations without doing some ugly checks.
> I'd like to propose some changes in HLog interface that would ease the multi 
> WAL story:
> 1) Have two interfaces WAL and WALService. WAL provides APIs for 
> implementors. WALService provides APIs for users (such as RegionServer).
> 2) A skeleton implementation of the above two interface as the base class for 
> other WAL implementations (AbstractWAL). It provides required fields for all 
> subclasses (fs, conf, log dir, etc). Make a minimal set of test only methods 
> and add this set in AbstractWAL.
> 3) HLogFactory returns a WALService reference when creating a WAL instance; 
> if a user need to access impl specific APIs (there are unit tests which get 
> WAL from a HRegionServer and then call impl specific APIs), use AbstractWAL 
> type casting,
> 4) Make TestHLog abstract and let all implementors provide their respective 
> test class which extends TestHLog (TestFSHLog, for example).



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Updated] (HBASE-10378) Divide HLog interface into User and Implementor specific interfaces

2014-01-18 Thread Himanshu Vashishtha (JIRA)

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

Himanshu Vashishtha updated HBASE-10378:


Attachment: 10378-1.patch

> Divide HLog interface into User and Implementor specific interfaces
> ---
>
> Key: HBASE-10378
> URL: https://issues.apache.org/jira/browse/HBASE-10378
> Project: HBase
>  Issue Type: Sub-task
>  Components: wal
>Reporter: Himanshu Vashishtha
> Attachments: 10378-1.patch, 10378-1.patch
>
>
> HBASE-5937 introduces the HLog interface as a first step to support multiple 
> WAL implementations. This interface is a good start, but has some 
> limitations/drawbacks in its current state, such as:
> 1) There is no clear distinction b/w User and Implementor APIs, and it 
> provides APIs both for WAL users (append, sync, etc) and also WAL 
> implementors (Reader/Writer interfaces, etc). There are APIs which are very 
> much implementation specific (getFileNum, etc) and a user such as a 
> RegionServer shouldn't know about it.
> 2) There are about 14 methods in FSHLog which are not present in HLog 
> interface but are used at several places in the unit test code. These tests 
> typecast HLog to FSHLog, which makes it very difficult to test multiple WAL 
> implementations without doing some ugly checks.
> I'd like to propose some changes in HLog interface that would ease the multi 
> WAL story:
> 1) Have two interfaces WAL and WALService. WAL provides APIs for 
> implementors. WALService provides APIs for users (such as RegionServer).
> 2) A skeleton implementation of the above two interface as the base class for 
> other WAL implementations (AbstractWAL). It provides required fields for all 
> subclasses (fs, conf, log dir, etc). Make a minimal set of test only methods 
> and add this set in AbstractWAL.
> 3) HLogFactory returns a WALService reference when creating a WAL instance; 
> if a user need to access impl specific APIs (there are unit tests which get 
> WAL from a HRegionServer and then call impl specific APIs), use AbstractWAL 
> type casting,
> 4) Make TestHLog abstract and let all implementors provide their respective 
> test class which extends TestHLog (TestFSHLog, for example).



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Commented] (HBASE-10349) Table became unusable when master balanced its region after table was dropped

2014-01-18 Thread Hudson (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-10349?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13875787#comment-13875787
 ] 

Hudson commented on HBASE-10349:


SUCCESS: Integrated in HBase-TRUNK-on-Hadoop-1.1 #58 (See 
[https://builds.apache.org/job/HBase-TRUNK-on-Hadoop-1.1/58/])
HBASE-10349 Table became unusable when master balanced its region after table 
was dropped (jxiang: rev 1559311)
* 
/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
* 
/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionStates.java
* 
/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DeleteTableHandler.java
* 
/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManager.java
* 
/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManagerOnCluster.java


> Table became unusable when master balanced its region after table was dropped
> -
>
> Key: HBASE-10349
> URL: https://issues.apache.org/jira/browse/HBASE-10349
> Project: HBase
>  Issue Type: Bug
>Affects Versions: 0.98.0
>Reporter: Ted Yu
>Assignee: Jimmy Xiang
> Fix For: 0.98.0, 0.96.2, 0.99.0
>
> Attachments: 
> 10349-hadoop-hdfs-namenode-hor11n14.gq1.ygridcore.net.zip, 10349-output.log, 
> 10349-v1.txt, 10349-v2.txt, HBASE-10349-meta-test-and-debug.patch, 
> hbase-10349.patch, hbase-10349_v2.patch, 
> hbase-hbase-master-hor15n05.gq1.ygridcore.net.log.tar.gz
>
>
> 0.98 was used.
> This was sequence of events:
> create 'tablethree_mod'
> snapshot 'tablethree_mod', 'snapshot_tablethree_mod'
> disable 'tablethree_mod'
> 2014-01-15 09:34:51,749   restore_snapshot 'snapshot_tablethree_mod'
> 2014-01-15 09:35:07,210   enable 'tablethree_mod'
> 2014-01-15 09:35:46,134   delete_snapshot 'snapshot_tablethree_mod'
> 2014-01-15 09:41:42,210   disable 'tablethree_mod'
> 2014-01-15 09:41:43,610   drop 'tablethree_mod'
> create 'tablethree_mod'
> For the last table creation request:
> {code} 
> 2014-01-15 10:03:52,999|beaver.component.hbase|INFO| 'create 'tablethree_mod',
> {NAME => 'f1', VERSIONS => 3}
> ,
> {NAME => 'f2', VERSIONS => 3}
> ,
> {NAME => 'f3', VERSIONS => 3}
> '
> 2014-01-15 10:03:52,999|beaver.component.hbase|INFO| 'exists 'tablethree_mod''
> 2014-01-15 10:03:52,999|beaver.component.hbase|INFO| 'put 'tablethree_mod', 
> '0', 'f1:q1', 'value-0', 10'
> 2014-01-15 10:03:52,999|beaver.component.hbase|INFO| 'put 'tablethree_mod', 
> '1', 'f1:q1', 'value-1', 20'
> 2014-01-15 10:03:53,000|beaver.component.hbase|INFO| 'put 'tablethree_mod', 
> '2', 'f2:q2', 'value-2', 30'
> 2014-01-15 10:03:53,000|beaver.component.hbase|INFO| 'put 'tablethree_mod', 
> '3', 'f3:q3', 'value-3', 40'
> 2014-01-15 10:03:53,000|beaver.component.hbase|INFO| 'put 'tablethree_mod', 
> '4', 'f3:q3', 'value-4', 50'
> 2014-01-15 10:03:53,000|beaver.component.hbase|INFO|Done writing commands to 
> file. Will execute them now.
> 2014-01-15 10:03:53,000|beaver.machine|INFO|RUNNING: /usr/lib/hbase/bin/hbase 
> shell /grid/0/tmp/hwqe/artifacts/tmp-471142
> 2014-01-15 10:03:55,878|beaver.machine|INFO|2014-01-15 10:03:55,878 INFO 
> [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, 
> use io.native.lib.available
> 2014-01-15 10:03:57,283|beaver.machine|INFO|2014-01-15 10:03:57,283 WARN 
> [main] conf.Configuration: hbase-site.xml:an attempt to override final 
> parameter: dfs.support.append; Ignoring.
> 2014-01-15 10:03:57,669|beaver.machine|INFO|2014-01-15 10:03:57,669 WARN 
> [main] conf.Configuration: hbase-site.xml:an attempt to override final 
> parameter: dfs.support.append; Ignoring.
> 2014-01-15 10:03:57,720|beaver.machine|INFO|2014-01-15 10:03:57,720 WARN 
> [main] conf.Configuration: hbase-site.xml:an attempt to override final 
> parameter: dfs.support.append; Ignoring.
> 2014-01-15 10:03:57,997|beaver.machine|INFO|
> 2014-01-15 10:03:57,997|beaver.machine|INFO|ERROR: Table already exists: 
> tablethree_mod!
> 2014-01-15 10:03:57,997|beaver.machine|INFO|
> {code}
> This was an intermittent issue after using Snapshots, a table is not properly 
> dropped / and not able to properly re-create with the same name. And a 
> HRegion is empty or null Error occurs. (When you try to drop the table it 
> says it does not exist, and when you try to create the table it says that it 
> does already exist).
> {code}
> 2014-01-15 10:04:02,462|beaver.machine|INFO|ERROR: HRegionInfo was null or 
> empty in hbase:meta, row=keyvalues=
> {tablethree_mod,,1389778226606.afc82d1ceabbaca36a504b83b65fc0c9./info:seqnumDuringOpen/1389778905355/Put/vlen=8/mvcc=0,
>  
> tablethree_mod,,1389778226606.afc82d1ceabbaca36a504b83b65fc0c9./info:server/1389778905355/Put/vlen=32/mvcc=0,
>  
> tablethree_mo

[jira] [Updated] (HBASE-10378) Divide HLog interface into User and Implementor specific interfaces

2014-01-18 Thread Himanshu Vashishtha (JIRA)

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

Himanshu Vashishtha updated HBASE-10378:


Attachment: (was: 10378-1.patch)

> Divide HLog interface into User and Implementor specific interfaces
> ---
>
> Key: HBASE-10378
> URL: https://issues.apache.org/jira/browse/HBASE-10378
> Project: HBase
>  Issue Type: Sub-task
>  Components: wal
>Reporter: Himanshu Vashishtha
> Attachments: 10378-1.patch
>
>
> HBASE-5937 introduces the HLog interface as a first step to support multiple 
> WAL implementations. This interface is a good start, but has some 
> limitations/drawbacks in its current state, such as:
> 1) There is no clear distinction b/w User and Implementor APIs, and it 
> provides APIs both for WAL users (append, sync, etc) and also WAL 
> implementors (Reader/Writer interfaces, etc). There are APIs which are very 
> much implementation specific (getFileNum, etc) and a user such as a 
> RegionServer shouldn't know about it.
> 2) There are about 14 methods in FSHLog which are not present in HLog 
> interface but are used at several places in the unit test code. These tests 
> typecast HLog to FSHLog, which makes it very difficult to test multiple WAL 
> implementations without doing some ugly checks.
> I'd like to propose some changes in HLog interface that would ease the multi 
> WAL story:
> 1) Have two interfaces WAL and WALService. WAL provides APIs for 
> implementors. WALService provides APIs for users (such as RegionServer).
> 2) A skeleton implementation of the above two interface as the base class for 
> other WAL implementations (AbstractWAL). It provides required fields for all 
> subclasses (fs, conf, log dir, etc). Make a minimal set of test only methods 
> and add this set in AbstractWAL.
> 3) HLogFactory returns a WALService reference when creating a WAL instance; 
> if a user need to access impl specific APIs (there are unit tests which get 
> WAL from a HRegionServer and then call impl specific APIs), use AbstractWAL 
> type casting,
> 4) Make TestHLog abstract and let all implementors provide their respective 
> test class which extends TestHLog (TestFSHLog, for example).



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Commented] (HBASE-10327) Remove remove(K, V) from type PoolMap

2014-01-18 Thread Hudson (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-10327?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13875788#comment-13875788
 ] 

Hudson commented on HBASE-10327:


SUCCESS: Integrated in HBase-TRUNK-on-Hadoop-1.1 #58 (See 
[https://builds.apache.org/job/HBase-TRUNK-on-Hadoop-1.1/58/])
HBASE-10327. Remove remove(K, V) from type PoolMap (Eric Charles) 
(apurtell: rev 1559288)
* 
/hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/util/PoolMap.java


> Remove remove(K, V) from type PoolMap
> --
>
> Key: HBASE-10327
> URL: https://issues.apache.org/jira/browse/HBASE-10327
> Project: HBase
>  Issue Type: Bug
>Affects Versions: 0.99.0
>Reporter: Eric Charles
>Assignee: Eric Charles
> Fix For: 0.99.0
>
> Attachments: HBASE-10327.patch
>
>
> I keep getting red cross in my eclipse, whatever the jdk (jdk6, jdk7, jdk8)
> Name clash: The method remove(K, V) of type PoolMap has the same erasure 
> as remove(Object, Object) of type Map but does not override it
> maybe related to HBASE-10030
> The solution I have is simply removing the deprecated method, and everything 
> is fine. I am not sure of the backwards compatibility here.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Updated] (HBASE-10378) Divide HLog interface into User and Implementor specific interfaces

2014-01-18 Thread Himanshu Vashishtha (JIRA)

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

Himanshu Vashishtha updated HBASE-10378:


Status: Patch Available  (was: Open)

> Divide HLog interface into User and Implementor specific interfaces
> ---
>
> Key: HBASE-10378
> URL: https://issues.apache.org/jira/browse/HBASE-10378
> Project: HBase
>  Issue Type: Sub-task
>  Components: wal
>Reporter: Himanshu Vashishtha
> Attachments: 10378-1.patch
>
>
> HBASE-5937 introduces the HLog interface as a first step to support multiple 
> WAL implementations. This interface is a good start, but has some 
> limitations/drawbacks in its current state, such as:
> 1) There is no clear distinction b/w User and Implementor APIs, and it 
> provides APIs both for WAL users (append, sync, etc) and also WAL 
> implementors (Reader/Writer interfaces, etc). There are APIs which are very 
> much implementation specific (getFileNum, etc) and a user such as a 
> RegionServer shouldn't know about it.
> 2) There are about 14 methods in FSHLog which are not present in HLog 
> interface but are used at several places in the unit test code. These tests 
> typecast HLog to FSHLog, which makes it very difficult to test multiple WAL 
> implementations without doing some ugly checks.
> I'd like to propose some changes in HLog interface that would ease the multi 
> WAL story:
> 1) Have two interfaces WAL and WALService. WAL provides APIs for 
> implementors. WALService provides APIs for users (such as RegionServer).
> 2) A skeleton implementation of the above two interface as the base class for 
> other WAL implementations (AbstractWAL). It provides required fields for all 
> subclasses (fs, conf, log dir, etc). Make a minimal set of test only methods 
> and add this set in AbstractWAL.
> 3) HLogFactory returns a WALService reference when creating a WAL instance; 
> if a user need to access impl specific APIs (there are unit tests which get 
> WAL from a HRegionServer and then call impl specific APIs), use AbstractWAL 
> type casting,
> 4) Make TestHLog abstract and let all implementors provide their respective 
> test class which extends TestHLog (TestFSHLog, for example).



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Commented] (HBASE-10378) Divide HLog interface into User and Implementor specific interfaces

2014-01-18 Thread Hadoop QA (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-10378?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13875796#comment-13875796
 ] 

Hadoop QA commented on HBASE-10378:
---

{color:red}-1 overall{color}.  Here are the results of testing the latest 
attachment 
  http://issues.apache.org/jira/secure/attachment/12623840/10378-1.patch
  against trunk revision .
  ATTACHMENT ID: 12623840

{color:green}+1 @author{color}.  The patch does not contain any @author 
tags.

{color:green}+1 tests included{color}.  The patch appears to include 128 
new or modified tests.

{color:green}+1 hadoop1.0{color}.  The patch compiles against the hadoop 
1.0 profile.

{color:green}+1 hadoop1.1{color}.  The patch compiles against the hadoop 
1.1 profile.

{color:red}-1 javadoc{color}.  The javadoc tool appears to have generated 1 
warning messages.

{color:green}+1 javac{color}.  The applied patch does not increase the 
total number of javac compiler warnings.

{color:green}+1 findbugs{color}.  The patch does not introduce any new 
Findbugs (version 1.3.9) warnings.

{color:green}+1 release audit{color}.  The applied patch does not increase 
the total number of release audit warnings.

{color:green}+1 lineLengths{color}.  The patch does not introduce lines 
longer than 100

{color:red}-1 site{color}.  The patch appears to cause mvn site goal to 
fail.

{color:green}+1 core tests{color}.  The patch passed unit tests in .

Test results: 
https://builds.apache.org/job/PreCommit-HBASE-Build/8469//testReport/
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/8469//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop2-compat.html
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/8469//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-prefix-tree.html
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/8469//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-client.html
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/8469//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-common.html
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/8469//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-protocol.html
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/8469//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.html
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/8469//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-examples.html
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/8469//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-thrift.html
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/8469//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop-compat.html
Console output: 
https://builds.apache.org/job/PreCommit-HBASE-Build/8469//console

This message is automatically generated.

> Divide HLog interface into User and Implementor specific interfaces
> ---
>
> Key: HBASE-10378
> URL: https://issues.apache.org/jira/browse/HBASE-10378
> Project: HBase
>  Issue Type: Sub-task
>  Components: wal
>Reporter: Himanshu Vashishtha
> Attachments: 10378-1.patch
>
>
> HBASE-5937 introduces the HLog interface as a first step to support multiple 
> WAL implementations. This interface is a good start, but has some 
> limitations/drawbacks in its current state, such as:
> 1) There is no clear distinction b/w User and Implementor APIs, and it 
> provides APIs both for WAL users (append, sync, etc) and also WAL 
> implementors (Reader/Writer interfaces, etc). There are APIs which are very 
> much implementation specific (getFileNum, etc) and a user such as a 
> RegionServer shouldn't know about it.
> 2) There are about 14 methods in FSHLog which are not present in HLog 
> interface but are used at several places in the unit test code. These tests 
> typecast HLog to FSHLog, which makes it very difficult to test multiple WAL 
> implementations without doing some ugly checks.
> I'd like to propose some changes in HLog interface that would ease the multi 
> WAL story:
> 1) Have two interfaces WAL and WALService. WAL provides APIs for 
> implementors. WALService provides APIs for users (such as RegionServer).
> 2) A skeleton implementation of the above two interface as the base class for 
> other WAL implementations (AbstractWAL). It provides required fields for all 
> subclasses (fs, conf, log dir, etc). Make a minimal set of test only methods 
> and add this set in AbstractWAL.
> 3) HLogFactory returns a WALService reference when creating a WAL instance; 
> if a user need to access impl specific APIs (there are unit