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

Yiyi Hu updated DRILL-3826:
---------------------------
    External issue URL: https://issues.apache.org/jira/browse/DRILL-3926
     External issue ID: DRILL-3926
           Description: 
Frequently seen CHANNEL CLOSED EXCEPTION while running concurrent quries with 
relatively large LIMIT.


Here are the details,

SET UP:
- Single drillbit running on a single zookeeper node
- 4G heap size, 8G direct memory
- Storage plugins: local filesystem, hdfs, hbase


TEST DATA:
- A 50,000,000 records json file test.json, with two fields id<Int>, 
title<String>  (approximately 3G).


SHELL TEST:
- Running 4 drill shells concurrently with query:
  SELECT id, title from dfs.`test.json` LIMIT 5000000.

- Queries got canceled. Channel closing between client and server were seen 
randomly, as an example shown below:

{noformat}
java.lang.RuntimeException: java.sql.SQLException: SYSTEM ERROR: 
ChannelClosedException: Channel closed /192.168.4.201:31010 <--> 
/192.168.4.201:48829.

Fragment 0:0

[Error Id: 0bd2b500-155e-46e0-9f26-bd89fea47a25 on TEST-101:31010]
        at sqlline.IncrementalRows.hasNext(IncrementalRows.java:73)
        at 
sqlline.TableOutputFormat$ResizingRowsProvider.next(TableOutputFormat.java:87)
        at sqlline.TableOutputFormat.print(TableOutputFormat.java:118)
        at sqlline.SqlLine.print(SqlLine.java:1583)
        at sqlline.Commands.execute(Commands.java:852)
        at sqlline.Commands.sql(Commands.java:751)
        at sqlline.SqlLine.dispatch(SqlLine.java:738)
        at sqlline.SqlLine.begin(SqlLine.java:612)
        at sqlline.SqlLine.start(SqlLine.java:366)
        at sqlline.SqlLine.main(SqlLine.java:259)
{noformat}

JDBC TEST:
- 6 separate threads running the same query: SELECT id, title from 
dfs.`test.json` LIMIT 10000000, each maintains its own connection. ResultSet, 
statement and connection are closed finally.

- Throws the same channel closed exception randomly. Log file were enclosed for 
review.

- Memory usage was monitored, all good.

CROSS STORAGE PLUGINS:
- The same issue can be found not only in JSON on a file system (local/hdfs), 
but also in HBASE.

- The issue was not found in a single thread application.


  was:
Frequently seen CHANNEL CLOSED EXCEPTION while running concurrent quries with 
relatively large LIMIT.


Here are the details,

SET UP:
- Single drillbit running on a single zookeeper node
- 4G heap size, 8G direct memory
- Storage plugins: local filesystem, hdfs, hbase


TEST DATA:
- A 50,000,000 records json file test.json, with two fields id<Int>, 
title<String>  (approximately 3G).


SHELL TEST:
- Running 4 drill shells concurrently with query:
  SELECT id, title from dfs.`test.json` LIMIT 5000000.

- Queries got canceled. Channel closing between client and server were seen 
randomly, as an example shown below:

java.lang.RuntimeException: java.sql.SQLException: SYSTEM ERROR: 
ChannelClosedException: Channel closed /192.168.4.201:31010 <--> 
/192.168.4.201:48829.

Fragment 0:0

[Error Id: 0bd2b500-155e-46e0-9f26-bd89fea47a25 on TEST-101:31010]
        at sqlline.IncrementalRows.hasNext(IncrementalRows.java:73)
        at 
sqlline.TableOutputFormat$ResizingRowsProvider.next(TableOutputFormat.java:87)
        at sqlline.TableOutputFormat.print(TableOutputFormat.java:118)
        at sqlline.SqlLine.print(SqlLine.java:1583)
        at sqlline.Commands.execute(Commands.java:852)
        at sqlline.Commands.sql(Commands.java:751)
        at sqlline.SqlLine.dispatch(SqlLine.java:738)
        at sqlline.SqlLine.begin(SqlLine.java:612)
        at sqlline.SqlLine.start(SqlLine.java:366)
        at sqlline.SqlLine.main(SqlLine.java:259)


JDBC TEST:
- 6 separate threads running the same query: SELECT id, title from 
dfs.`test.json` LIMIT 10000000, each maintains its own connection to drill and 
resultSet, statement and connection are closed finally.

- Used resultSet.next() to iterate on the result set, do nothing else.

- Throws the same channel closed exception randomly. Log file were enclosed for 
review.

- Memory usage was monitored, all good.

CROSS STORAGE PLUGINS:
- The same issue can be found not only in JSON on a file system (local/hdfs), 
but also when querying the same 50,000,000 records table in HBASE.

- The issue is not found in a single thread application.



Closing connections during concurrent running of queries will trigger channel 
closure exception.

> Concurrent Query Submission leads to Channel Closed Exception
> -------------------------------------------------------------
>
>                 Key: DRILL-3826
>                 URL: https://issues.apache.org/jira/browse/DRILL-3826
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Client - JDBC, Execution - RPC
>    Affects Versions: 1.1.0, 1.2.0
>         Environment: - CentOS release 6.6 (Final)
> - hadoop-2.7.1
> - hbase-1.0.1.1
> - drill-1.1.0
> - jdk-1.8.0_45
>            Reporter: Yiyi Hu
>            Assignee: Daniel Barclay (Drill)
>              Labels: filesystem, hadoop, hbase, jdbc, rpc
>             Fix For: Future
>
>         Attachments: Sample2.png, jdbc-test-client-drillbit.log, 
> shell-sqlline.log, shell-test-drillbit.log
>
>
> Frequently seen CHANNEL CLOSED EXCEPTION while running concurrent quries with 
> relatively large LIMIT.
> Here are the details,
> SET UP:
> - Single drillbit running on a single zookeeper node
> - 4G heap size, 8G direct memory
> - Storage plugins: local filesystem, hdfs, hbase
> TEST DATA:
> - A 50,000,000 records json file test.json, with two fields id<Int>, 
> title<String>  (approximately 3G).
> SHELL TEST:
> - Running 4 drill shells concurrently with query:
>   SELECT id, title from dfs.`test.json` LIMIT 5000000.
> - Queries got canceled. Channel closing between client and server were seen 
> randomly, as an example shown below:
> {noformat}
> java.lang.RuntimeException: java.sql.SQLException: SYSTEM ERROR: 
> ChannelClosedException: Channel closed /192.168.4.201:31010 <--> 
> /192.168.4.201:48829.
> Fragment 0:0
> [Error Id: 0bd2b500-155e-46e0-9f26-bd89fea47a25 on TEST-101:31010]
>       at sqlline.IncrementalRows.hasNext(IncrementalRows.java:73)
>       at 
> sqlline.TableOutputFormat$ResizingRowsProvider.next(TableOutputFormat.java:87)
>       at sqlline.TableOutputFormat.print(TableOutputFormat.java:118)
>       at sqlline.SqlLine.print(SqlLine.java:1583)
>       at sqlline.Commands.execute(Commands.java:852)
>       at sqlline.Commands.sql(Commands.java:751)
>       at sqlline.SqlLine.dispatch(SqlLine.java:738)
>       at sqlline.SqlLine.begin(SqlLine.java:612)
>       at sqlline.SqlLine.start(SqlLine.java:366)
>       at sqlline.SqlLine.main(SqlLine.java:259)
> {noformat}
> JDBC TEST:
> - 6 separate threads running the same query: SELECT id, title from 
> dfs.`test.json` LIMIT 10000000, each maintains its own connection. ResultSet, 
> statement and connection are closed finally.
> - Throws the same channel closed exception randomly. Log file were enclosed 
> for review.
> - Memory usage was monitored, all good.
> CROSS STORAGE PLUGINS:
> - The same issue can be found not only in JSON on a file system (local/hdfs), 
> but also in HBASE.
> - The issue was not found in a single thread application.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to