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

Reply via email to