Hi, who may help We are running a Hadoop application that needs to use phoenix JDBC connection from the workers. The connection works, but when too many connection established at the same time, it throws RPC timeouts
Error: java.io.IOException: org.apache.phoenix.exception.PhoenixIOException: Failed after attempts=36, exceptions: Wed Feb 20 20:02:43 UTC 2019, null, java.net.SocketTimeoutException: callTimeout=60000, callDuration=60506. ... So we have figured we should probably set a higher hbase.rpc.timeout value, but then it comes to the issue: A little bit background on how we run the application Here is how we get PhoenixConnection from java program DriverManager.getConnection("jdbc:phoenix:host", props) And we trigger the program by using hadoop jar $test_jar We have tried multiple approaches to load hbase/phoenix configuration, but none of them get respected by PhoenixConnection, here are the methods we tried * Pass hbase_conf_dir through HADOOP_CLASSPATH, so run the hadoop application like HADOOP_CLASSPATH=/etc/hbase/conf/ hadoop jar $test_jar . However, PhoenixConnection doesn’t respect the parameters * Tried passing -Dhbase.rpc.timeout=1800, which is picked up by hbase conf object, but not PhoniexConnection * Explicitly set those parameters and pass them to the PhoenixConnection props.setProperty("hbase.rpc.timeout", "1800"); props.setProperty(“phoenix.query.timeoutMs", "1800"); Also didn’t get respected by PhoenixConnection * also tried what is suggested by phoenix here https://phoenix.apache.org/#connStr , use :longRunning together with those properties, still didn’t seem to work Besides all those approaches we tried, I have explicitly output those parameters we care from the connection, connection.getQueryServices().getProps() The default values I got are 60000 for hbase.rpc.timeout, and 600k for phoenix.query.timeoutMs , so I have tried to run a query lthat would run longer than 10 mins, Ideally it should timeout, however, it runs over 20 mins and didn’t timeout. So I’m wondering how PhoenixConnection respect those properties? So with some of your help, we’d like to know if there’s any thing wrong with our approaches. And we’d like to get rid of those SocketTimeExceptions. We are using phoenix-core version is 4.7.0-clabs-phoenix1.3.0 , and our phoenix-client version is phoenix-4.7.0-clabs-phoenix1.3.0.23 (we have tried phoenix-4.14.0-HBase-1.3 as well, which didn’t work either). Thanks for your time