[ 
https://issues.apache.org/jira/browse/HIVE-20927?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

yinghua_zh updated HIVE-20927:
------------------------------
    Component/s: Clients

> The beeline has a dead cycle, resulting in high CPU.
> ----------------------------------------------------
>
>                 Key: HIVE-20927
>                 URL: https://issues.apache.org/jira/browse/HIVE-20927
>             Project: Hive
>          Issue Type: Bug
>          Components: Clients
>            Reporter: yinghua_zh
>            Priority: Major
>
> When beeline executes the command and places it for a period of time, it is 
> found that the CPU of the beeline process is very high. It is the code that 
> has a dead loop.The stack is as follows:
> "Thread-4" #34 daemon prio=5 os_prio=0 tid=0x00007fbd6636d800 nid=0x162be 
> sleeping[0x00007fbd2e042000]
> java.lang.Thread.State: RUNNABLE
> at java.lang.Throwable.fillInStackTrace(Native Method)
> at java.lang.Throwable.fillInStackTrace(Throwable.java:783)
> - locked <0x000000076edb39d8> (a java.sql.SQLException)
> at java.lang.Throwable.<init>(Throwable.java:265)
> at java.lang.Exception.<init>(Exception.java:66)
> at java.sql.SQLException.<init>(SQLException.java:119)
> at org.apache.hive.jdbc.HiveStatement.checkConnection(HiveStatement.java:377)
> at org.apache.hive.jdbc.HiveStatement.getQueryLog(HiveStatement.java:865)
> at org.apache.hive.jdbc.HiveStatement.getQueryLog(HiveStatement.java:849)
> at 
> org.apache.hive.beeline.Commands$LogRunnable.updateQueryLog(Commands.java:1213)
> at org.apache.hive.beeline.Commands$LogRunnable.run(Commands.java:1221)
> at java.lang.Thread.run(Thread.java:745)
>  
> The dead cycle code is as is as follows:
> @Override public void run() {
>  while (hiveStatement.hasMoreLogs()) {
>  try {
>  updateQueryLog();
>  Thread.sleep(queryProgressInterval);
>  } catch (SQLException e) {
>  commands.error(new SQLWarning(e));
>  } catch (InterruptedException e) {
>  commands.debug("Getting log thread is interrupted, since query is done!");
>  commands.showRemainingLogsIfAny(hiveStatement);
>  }
>  }
>  }
>  }
>    
>  
> when the mehtod (checkConnection("getQueryLog");)occurs exception,the 
> condition "hiveStatement.hasMoreLogs()" is still true,exist the dead lop,but 
> the thread sleep code is not be run,so the CPU is high!
>  
>  
>  
>  
>  
>  
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to