[
https://issues.apache.org/jira/browse/KUDU-1542?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15393899#comment-15393899
]
Jean-Daniel Cryans commented on KUDU-1542:
------------------------------------------
bq. After examine code of KuduSession.java , it seems that the "while(true)"
clause in "apply" method of KuduSession cause the hang. In current logic, if
there is an exception happened during executing "session.apply" such as
"timeout exception" , apply method will delay for a while and try again and
again.
If it's a timeout exception, it won't be a PleaseThrottleException, so it will
not "delay for a while and try again and again". I've fixed many hangs
recently, maybe this is what you are encountering?
https://gerrit.cloudera.org/#/c/3541/
https://gerrit.cloudera.org/#/c/3586/
https://gerrit.cloudera.org/#/c/3724/
> kudu-client will hang in some corner case(bad network or busy kudu server)
> --------------------------------------------------------------------------
>
> Key: KUDU-1542
> URL: https://issues.apache.org/jira/browse/KUDU-1542
> Project: Kudu
> Issue Type: Bug
> Components: client
> Affects Versions: 0.9.1
> Reporter: zhangsong
> Priority: Minor
>
> when using java-client loading data into kudu, there are rare cases where
> kudu-client hang there "forever" , these some java exceptions when "hang"
> happened:
> " thread pool-5-thread-1 -> wakeup thread pool-5-thread-1 -> wakeup thread
> pool-5-thread-1 -> wakeup thread pool-5-thread-1 -> wakeup thread
> pool-5-thread-1 -> wakeup thread pool-5-thread-1 -> wakeup thread
> pool-5-thread-1 -> wakeup thread pool-5-thread-1 -> wakeup thread
> pool-5-thread
> -1 -> wakeup thread pool-5-thread-1 -> wakeup thread pool-5-thread-1 ->
> wakeup thread pool-5-thread-1 -> wakeup thread pool-5-thread-1)
> at com.stumbleupon.async.Deferred.doJoin(Deferred.java:1183)
> at com.stumbleupon.async.Deferred.join(Deferred.java:1042)
> at org.kududb.client.KuduSession.apply(KuduSession.java:79)
> at
> com.jd.kafka.service.jdq.KududbLoaderDbHandler.doOptKudu(KududbLoaderDbHandler.java:190)
> at
> com.jd.kafka.service.jdq.KududbLoaderDbHandler.doUpdate(KududbLoaderDbHandler.java:277)
> at
> com.jd.kafka.service.jdq.KududbLoaderDbHandler.doOpt(KududbLoaderDbHandler.java:174)
> at com.jd.kafka.service.jdq.KududbLoaderDbHandler.doMessageHandle
> r(KududbLoaderDbHandler.java:153)
> at
> com.jd.kafka.service.jdq.KududbLoaderDbHandler.doMessageHandler(KududbLoaderDbHandler.java:40)
> at
> com.jd.bdp.jdq.consumer.zk.JDQConsumerTask.run(JDQConsumerTask.java:65)
> at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
> at java.util.concurrent.FutureTask.run(FutureTask.java:262)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> at java.lang.Thread.run(Thread.java:744)"
> After examine code of KuduSession.java , it seems that the "while(true)"
> clause in "apply" method of KuduSession cause the hang. In current logic, if
> there is an exception happened during executing "session.apply" such as
> "timeout exception" , apply method will delay for a while and try again and
> again.
> However , kudu-client should return error or throw exception out to it
> caller instead of trying forever. In my case , it re-connect/re-create
> kudu-client and re-apply will always succeed.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)