Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
-
Reviewed
-
Adds a timeout for client-side RPC. Default to 60 seconds. Change by adding hbase.rpc.timeout to hbase-site.xml and setting timeout in milliseconds.
Description
We see a client stuck at an RPC to a zombie RS. HBase RPC should support timeout.
"IPC Client (47) connection to msgstore179.ash2.facebook.com/10.138.89.182:60020 from an unknown user" daemon prio=10 tid=0x00007f554c5ab800 nid=0x5df3 runnable [0x00000000590d4000]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215)
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
- locked <0x00007f5aa402a9e8> (a sun.nio.ch.Util$1)
- locked <0x00007f5aa402aac0> (a java.util.Collections$UnmodifiableSet)
- locked <0x00007f596a398408> (a sun.nio.ch.EPollSelectorImpl)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
at org.apache.hadoop.net.SocketIOWithTimeout$SelectorPool.select(SocketIOWithTimeout.java:332)
at org.apache.hadoop.net.SocketIOWithTimeout.doIO(SocketIOWithTimeout.java:157)
at org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:155)
at org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:128)
at java.io.FilterInputStream.read(FilterInputStream.java:116)
at org.apache.hadoop.hbase.ipc.HBaseClient$Connection$PingInputStream.read(HBaseClient.java:279)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:237) - locked <0x00007f5a1d7e7bd8> (a java.io.BufferedInputStream)
at java.io.DataInputStream.readInt(DataInputStream.java:370)
at org.apache.hadoop.hbase.ipc.HBaseClient$Connection.receiveResponse(HBaseClient.java:514)
at org.apache.hadoop.hbase.ipc.HBaseClient$Connection.run(HBaseClient.java:454)