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

Ted Yu commented on HBASE-7295:
-------------------------------

There were so many TestHBaseFsck failures on Jenkins. I was able to reproduce 
the following:

testFixAssignmentsAndNoHdfsChecking(org.apache.hadoop.hbase.util.TestHBaseFsck):
 expected:<[NOT_DEPLOYED, HOLE_IN_REGION_CHAIN]> but was:<[MULTI_DEPLOYED, 
NOT_DEPLOYED, MULTI_DEPLOYED, NOT_DEPLOYED, HOLE_IN_REGION_CHAIN]>

However, I saw the following in test output.

{code}
2012-12-06 20:51:32,370 WARN  [PRI IPC Server handler 0 on 57913] 
hdfs.DFSClient$DFSInputStream(2232): Short circuit access failed
org.apache.hadoop.security.AccessControlException: 
org.apache.hadoop.security.AccessControlException: Can&apos;t continue with 
getBlockLocalPathInfo() authorization. The user zhihyu.hfs.0 is not allowed to 
call getBlockLocalPathInfo
  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
  at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
  at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
  at 
org.apache.hadoop.ipc.RemoteException.instantiateException(RemoteException.java:95)
  at 
org.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:57)
  at org.apache.hadoop.hdfs.DFSClient.getLocalBlockReader(DFSClient.java:513)
  at org.apache.hadoop.hdfs.DFSClient.access$800(DFSClient.java:78)
  at 
org.apache.hadoop.hdfs.DFSClient$DFSInputStream.blockSeekTo(DFSClient.java:2228)
  at org.apache.hadoop.hdfs.DFSClient$DFSInputStream.read(DFSClient.java:2381)
  at java.io.DataInputStream.readFully(DataInputStream.java:178)
  at java.io.DataInputStream.readFully(DataInputStream.java:152)
  at 
org.apache.hadoop.hbase.util.FSTableDescriptors.getTableDescriptorModtime(FSTableDescriptors.java:429)
  at 
org.apache.hadoop.hbase.util.FSTableDescriptors.getTableDescriptorModtime(FSTableDescriptors.java:414)
  at 
org.apache.hadoop.hbase.util.FSTableDescriptors.get(FSTableDescriptors.java:169)
  at 
org.apache.hadoop.hbase.util.FSTableDescriptors.get(FSTableDescriptors.java:132)
  at 
org.apache.hadoop.hbase.regionserver.HRegionServer.openRegion(HRegionServer.java:3403)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  at java.lang.reflect.Method.invoke(Method.java:597)
  at 
org.apache.hadoop.hbase.ipc.ProtobufRpcEngine$Server.call(ProtobufRpcEngine.java:356)
  at org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1816)
Caused by: org.apache.hadoop.ipc.RemoteException: 
org.apache.hadoop.security.AccessControlException: Can&apos;t continue with 
getBlockLocalPathInfo() authorization. The user zhihyu.hfs.0 is not allowed to 
call getBlockLocalPathInfo
  at 
org.apache.hadoop.hdfs.server.datanode.DataNode.checkBlockLocalPathAccess(DataNode.java:1849)
  at 
org.apache.hadoop.hdfs.server.datanode.DataNode.getBlockLocalPathInfo(DataNode.java:1859)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  at java.lang.reflect.Method.invoke(Method.java:597)
  at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:578)
{code}
Not sure if the above is related to test failure.
                
> Contention in HBaseClient.getConnection
> ---------------------------------------
>
>                 Key: HBASE-7295
>                 URL: https://issues.apache.org/jira/browse/HBASE-7295
>             Project: HBase
>          Issue Type: Improvement
>    Affects Versions: 0.94.3
>            Reporter: Varun Sharma
>            Assignee: Varun Sharma
>             Fix For: 0.94.3
>
>         Attachments: 7295-0.94.txt, 7295-0.94-v2.txt, 7295-trunk.txt
>
>
> HBaseClient.getConnection() synchronizes on the connections object. We found 
> severe contention on a thrift gateway which was fanning out roughly 3000+ 
> calls per second to hbase region servers. The thrift gateway had 2000+ 
> threads for handling incoming connections. Threads were blocked on the 
> syncrhonized block - we set ipc.pool.size to 200. Since we are using 
> RoundRobin/ThreadLocal pool only - its not necessary to synchronize on 
> connections - it might lead to cases where we might go slightly over the 
> ipc.max.pool.size() but the additional connections would timeout after 
> maxIdleTime - underlying PoolMap connections object is thread safe.

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

Reply via email to