[jira] [Commented] (DRILL-4946) org.objectweb.asm.tree.analysis.AnalyzerException printed to console in embedded mode

2016-10-16 Thread Chunhui Shi (JIRA)

[ 
https://issues.apache.org/jira/browse/DRILL-4946?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=1558#comment-1558
 ] 

Chunhui Shi commented on DRILL-4946:


[~jacq...@dremio.com]  Thanks. We may want to investigate more on this scalar 
replacement later. What worries me is, if in some cases it generates 'invalid' 
byte code sequence and we can catch with an exception, in some other cases, it 
may generate 'incorrect' byte code but we don't have any exception raised.


> org.objectweb.asm.tree.analysis.AnalyzerException printed to console in 
> embedded mode
> -
>
> Key: DRILL-4946
> URL: https://issues.apache.org/jira/browse/DRILL-4946
> Project: Apache Drill
>  Issue Type: Bug
>Reporter: Chunhui Shi
>Assignee: Chunhui Shi
>Priority: Critical
>
> Testing by querying a json file got AnalyzerException printed. 
> The problem was due to scalar_replacement mode is default to be 'try', and 
> org.objectweb.asm.util.CheckMethodAdapter is printing stack trace to stderr. 
> [shi@cshi-centos1 private-drill]$ cat /tmp/conv.json 
> {"row": "0", "key": "\\x4a\\x31\\x39\\x38", "key2": "4a313938", "kp1": 
> "4a31", "kp2": "38"}
> {"row": "1", "key": null, "key2": null, "kp1": null, "kp2": null}
> {"row": "2", "key": "\\x4e\\x4f\\x39\\x51", "key2": "4e4f3951", "kp1": 
> "4e4f", "kp2": "51"}
> {"row": "3", "key": "\\x6e\\x6f\\x39\\x31", "key2": "6e6f3931", "kp1": 
> "6e6f", "kp2": "31"}
> 0: jdbc:drill:zk=local> SELECT convert_from(binary_string(key), 'INT_BE') as 
> intkey from dfs.`/tmp/conv.json`;
> org.objectweb.asm.tree.analysis.AnalyzerException: Error at instruction 158: 
> Expected an object reference, but found .
>   at org.objectweb.asm.tree.analysis.Analyzer.analyze(Analyzer.java:294)
>   at 
> org.objectweb.asm.util.CheckMethodAdapter$1.visitEnd(CheckMethodAdapter.java:450)
>   at org.objectweb.asm.MethodVisitor.visitEnd(MethodVisitor.java:877)
>   at 
> org.objectweb.asm.util.CheckMethodAdapter.visitEnd(CheckMethodAdapter.java:1028)
>   at org.objectweb.asm.MethodVisitor.visitEnd(MethodVisitor.java:877)
>   at 
> org.apache.drill.exec.compile.CheckMethodVisitorFsm.visitEnd(CheckMethodVisitorFsm.java:114)
>   at org.objectweb.asm.MethodVisitor.visitEnd(MethodVisitor.java:877)
>   at 
> org.apache.drill.exec.compile.CheckMethodVisitorFsm.visitEnd(CheckMethodVisitorFsm.java:114)
>   at org.objectweb.asm.MethodVisitor.visitEnd(MethodVisitor.java:877)
>   at org.objectweb.asm.MethodVisitor.visitEnd(MethodVisitor.java:877)
>   at 
> org.apache.drill.exec.compile.bytecode.InstructionModifier.visitEnd(InstructionModifier.java:508)
>   at org.objectweb.asm.tree.MethodNode.accept(MethodNode.java:837)
>   at 
> org.apache.drill.exec.compile.bytecode.ScalarReplacementNode.visitEnd(ScalarReplacementNode.java:87)
>   at org.objectweb.asm.MethodVisitor.visitEnd(MethodVisitor.java:877)
>   at 
> org.apache.drill.exec.compile.bytecode.AloadPopRemover.visitEnd(AloadPopRemover.java:136)
>   at org.objectweb.asm.tree.MethodNode.accept(MethodNode.java:837)
>   at org.objectweb.asm.tree.MethodNode.accept(MethodNode.java:726)
>   at org.objectweb.asm.tree.ClassNode.accept(ClassNode.java:412)
>   at 
> org.apache.drill.exec.compile.MergeAdapter.getMergedClass(MergeAdapter.java:223)
>   at 
> org.apache.drill.exec.compile.ClassTransformer.getImplementationClass(ClassTransformer.java:263)
>   at 
> org.apache.drill.exec.compile.CodeCompiler$Loader.load(CodeCompiler.java:78)
>   at 
> org.apache.drill.exec.compile.CodeCompiler$Loader.load(CodeCompiler.java:74)
>   at 
> com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3527)
>   at 
> com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2319)
>   at 
> com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2282)
>   at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2197)
>   at com.google.common.cache.LocalCache.get(LocalCache.java:3937)
>   at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941)
>   at 
> com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4824)
>   at 
> org.apache.drill.exec.compile.CodeCompiler.getImplementationClass(CodeCompiler.java:63)
>   at 
> org.apache.drill.exec.compile.CodeCompiler.getImplementationClass(CodeCompiler.java:56)
>   at 
> org.apache.drill.exec.ops.FragmentContext.getImplementationClass(FragmentContext.java:310)
>   at 
> org.apache.drill.exec.physical.impl.project.ProjectRecordBatch.setupNewSchema(ProjectRecordBatch.java:484)
>   at 
> org.apache.drill.exec.record.AbstractSingleRecordBatch.innerNext(AbstractSingleRecordBatch.java:7

[jira] [Commented] (DRILL-4946) org.objectweb.asm.tree.analysis.AnalyzerException printed to console in embedded mode

2016-10-16 Thread Jacques Nadeau (JIRA)

[ 
https://issues.apache.org/jira/browse/DRILL-4946?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15581070#comment-15581070
 ] 

Jacques Nadeau commented on DRILL-4946:
---

For reference: the scalar replacement code is known to not work in some 
situations. In those situations, in production, we fallback to skipping it 
since it is simply a performance optimization. In development tests we fail 
queries so we don't accidentally introduce scalar replacement regressions.

> org.objectweb.asm.tree.analysis.AnalyzerException printed to console in 
> embedded mode
> -
>
> Key: DRILL-4946
> URL: https://issues.apache.org/jira/browse/DRILL-4946
> Project: Apache Drill
>  Issue Type: Bug
>Reporter: Chunhui Shi
>Assignee: Chunhui Shi
>Priority: Critical
>
> Testing by querying a json file got AnalyzerException printed. 
> The problem was due to scalar_replacement mode is default to be 'try', and 
> org.objectweb.asm.util.CheckMethodAdapter is printing stack trace to stderr. 
> [shi@cshi-centos1 private-drill]$ cat /tmp/conv.json 
> {"row": "0", "key": "\\x4a\\x31\\x39\\x38", "key2": "4a313938", "kp1": 
> "4a31", "kp2": "38"}
> {"row": "1", "key": null, "key2": null, "kp1": null, "kp2": null}
> {"row": "2", "key": "\\x4e\\x4f\\x39\\x51", "key2": "4e4f3951", "kp1": 
> "4e4f", "kp2": "51"}
> {"row": "3", "key": "\\x6e\\x6f\\x39\\x31", "key2": "6e6f3931", "kp1": 
> "6e6f", "kp2": "31"}
> 0: jdbc:drill:zk=local> SELECT convert_from(binary_string(key), 'INT_BE') as 
> intkey from dfs.`/tmp/conv.json`;
> org.objectweb.asm.tree.analysis.AnalyzerException: Error at instruction 158: 
> Expected an object reference, but found .
>   at org.objectweb.asm.tree.analysis.Analyzer.analyze(Analyzer.java:294)
>   at 
> org.objectweb.asm.util.CheckMethodAdapter$1.visitEnd(CheckMethodAdapter.java:450)
>   at org.objectweb.asm.MethodVisitor.visitEnd(MethodVisitor.java:877)
>   at 
> org.objectweb.asm.util.CheckMethodAdapter.visitEnd(CheckMethodAdapter.java:1028)
>   at org.objectweb.asm.MethodVisitor.visitEnd(MethodVisitor.java:877)
>   at 
> org.apache.drill.exec.compile.CheckMethodVisitorFsm.visitEnd(CheckMethodVisitorFsm.java:114)
>   at org.objectweb.asm.MethodVisitor.visitEnd(MethodVisitor.java:877)
>   at 
> org.apache.drill.exec.compile.CheckMethodVisitorFsm.visitEnd(CheckMethodVisitorFsm.java:114)
>   at org.objectweb.asm.MethodVisitor.visitEnd(MethodVisitor.java:877)
>   at org.objectweb.asm.MethodVisitor.visitEnd(MethodVisitor.java:877)
>   at 
> org.apache.drill.exec.compile.bytecode.InstructionModifier.visitEnd(InstructionModifier.java:508)
>   at org.objectweb.asm.tree.MethodNode.accept(MethodNode.java:837)
>   at 
> org.apache.drill.exec.compile.bytecode.ScalarReplacementNode.visitEnd(ScalarReplacementNode.java:87)
>   at org.objectweb.asm.MethodVisitor.visitEnd(MethodVisitor.java:877)
>   at 
> org.apache.drill.exec.compile.bytecode.AloadPopRemover.visitEnd(AloadPopRemover.java:136)
>   at org.objectweb.asm.tree.MethodNode.accept(MethodNode.java:837)
>   at org.objectweb.asm.tree.MethodNode.accept(MethodNode.java:726)
>   at org.objectweb.asm.tree.ClassNode.accept(ClassNode.java:412)
>   at 
> org.apache.drill.exec.compile.MergeAdapter.getMergedClass(MergeAdapter.java:223)
>   at 
> org.apache.drill.exec.compile.ClassTransformer.getImplementationClass(ClassTransformer.java:263)
>   at 
> org.apache.drill.exec.compile.CodeCompiler$Loader.load(CodeCompiler.java:78)
>   at 
> org.apache.drill.exec.compile.CodeCompiler$Loader.load(CodeCompiler.java:74)
>   at 
> com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3527)
>   at 
> com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2319)
>   at 
> com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2282)
>   at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2197)
>   at com.google.common.cache.LocalCache.get(LocalCache.java:3937)
>   at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941)
>   at 
> com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4824)
>   at 
> org.apache.drill.exec.compile.CodeCompiler.getImplementationClass(CodeCompiler.java:63)
>   at 
> org.apache.drill.exec.compile.CodeCompiler.getImplementationClass(CodeCompiler.java:56)
>   at 
> org.apache.drill.exec.ops.FragmentContext.getImplementationClass(FragmentContext.java:310)
>   at 
> org.apache.drill.exec.physical.impl.project.ProjectRecordBatch.setupNewSchema(ProjectRecordBatch.java:484)
>   at 
> org.apache.drill.exec.record.AbstractSingleRecordBatch.innerNext(AbstractSingleRecordBatch.java:78)
>

[jira] [Commented] (DRILL-4946) org.objectweb.asm.tree.analysis.AnalyzerException printed to console in embedded mode

2016-10-16 Thread ASF GitHub Bot (JIRA)

[ 
https://issues.apache.org/jira/browse/DRILL-4946?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15581061#comment-15581061
 ] 

ASF GitHub Bot commented on DRILL-4946:
---

GitHub user chunhui-shi opened a pull request:

https://github.com/apache/drill/pull/619

DRILL-4946: redirect System.err so users under embedded mode won't se…

…e error stacks printed due to errors occurred in scalar replacement.

You can merge this pull request into a Git repository by running:

$ git pull https://github.com/chunhui-shi/drill DRILL-4946

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/drill/pull/619.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #619


commit ea41861220f1e6f594d644f6b4eb8129a216f8b8
Author: chunhui-shi 
Date:   2016-10-14T20:34:11Z

DRILL-4946: redirect System.err so users under embedded mode won't see 
error stacks printed due to errors occurred in scalar replacement.




> org.objectweb.asm.tree.analysis.AnalyzerException printed to console in 
> embedded mode
> -
>
> Key: DRILL-4946
> URL: https://issues.apache.org/jira/browse/DRILL-4946
> Project: Apache Drill
>  Issue Type: Bug
>Reporter: Chunhui Shi
>Assignee: Chunhui Shi
>Priority: Critical
>
> Testing by querying a json file got AnalyzerException printed. 
> The problem was due to scalar_replacement mode is default to be 'try', and 
> org.objectweb.asm.util.CheckMethodAdapter is printing stack trace to stderr. 
> [shi@cshi-centos1 private-drill]$ cat /tmp/conv.json 
> {"row": "0", "key": "\\x4a\\x31\\x39\\x38", "key2": "4a313938", "kp1": 
> "4a31", "kp2": "38"}
> {"row": "1", "key": null, "key2": null, "kp1": null, "kp2": null}
> {"row": "2", "key": "\\x4e\\x4f\\x39\\x51", "key2": "4e4f3951", "kp1": 
> "4e4f", "kp2": "51"}
> {"row": "3", "key": "\\x6e\\x6f\\x39\\x31", "key2": "6e6f3931", "kp1": 
> "6e6f", "kp2": "31"}
> 0: jdbc:drill:zk=local> SELECT convert_from(binary_string(key), 'INT_BE') as 
> intkey from dfs.`/tmp/conv.json`;
> org.objectweb.asm.tree.analysis.AnalyzerException: Error at instruction 158: 
> Expected an object reference, but found .
>   at org.objectweb.asm.tree.analysis.Analyzer.analyze(Analyzer.java:294)
>   at 
> org.objectweb.asm.util.CheckMethodAdapter$1.visitEnd(CheckMethodAdapter.java:450)
>   at org.objectweb.asm.MethodVisitor.visitEnd(MethodVisitor.java:877)
>   at 
> org.objectweb.asm.util.CheckMethodAdapter.visitEnd(CheckMethodAdapter.java:1028)
>   at org.objectweb.asm.MethodVisitor.visitEnd(MethodVisitor.java:877)
>   at 
> org.apache.drill.exec.compile.CheckMethodVisitorFsm.visitEnd(CheckMethodVisitorFsm.java:114)
>   at org.objectweb.asm.MethodVisitor.visitEnd(MethodVisitor.java:877)
>   at 
> org.apache.drill.exec.compile.CheckMethodVisitorFsm.visitEnd(CheckMethodVisitorFsm.java:114)
>   at org.objectweb.asm.MethodVisitor.visitEnd(MethodVisitor.java:877)
>   at org.objectweb.asm.MethodVisitor.visitEnd(MethodVisitor.java:877)
>   at 
> org.apache.drill.exec.compile.bytecode.InstructionModifier.visitEnd(InstructionModifier.java:508)
>   at org.objectweb.asm.tree.MethodNode.accept(MethodNode.java:837)
>   at 
> org.apache.drill.exec.compile.bytecode.ScalarReplacementNode.visitEnd(ScalarReplacementNode.java:87)
>   at org.objectweb.asm.MethodVisitor.visitEnd(MethodVisitor.java:877)
>   at 
> org.apache.drill.exec.compile.bytecode.AloadPopRemover.visitEnd(AloadPopRemover.java:136)
>   at org.objectweb.asm.tree.MethodNode.accept(MethodNode.java:837)
>   at org.objectweb.asm.tree.MethodNode.accept(MethodNode.java:726)
>   at org.objectweb.asm.tree.ClassNode.accept(ClassNode.java:412)
>   at 
> org.apache.drill.exec.compile.MergeAdapter.getMergedClass(MergeAdapter.java:223)
>   at 
> org.apache.drill.exec.compile.ClassTransformer.getImplementationClass(ClassTransformer.java:263)
>   at 
> org.apache.drill.exec.compile.CodeCompiler$Loader.load(CodeCompiler.java:78)
>   at 
> org.apache.drill.exec.compile.CodeCompiler$Loader.load(CodeCompiler.java:74)
>   at 
> com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3527)
>   at 
> com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2319)
>   at 
> com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2282)
>   at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2197)
>   at com.google.common.cache.LocalCache.get(LocalCache.java:3937)
>   at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941)
>   at 
> com.google.common.cache.Lo

[jira] [Closed] (DRILL-4876) Remain disconnected connection

2016-10-16 Thread Takuya Kojima (JIRA)

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

Takuya Kojima closed DRILL-4876.

Resolution: Information Provided

> Remain disconnected connection
> --
>
> Key: DRILL-4876
> URL: https://issues.apache.org/jira/browse/DRILL-4876
> Project: Apache Drill
>  Issue Type: Bug
>  Components: Client - JDBC
>Affects Versions: 1.6.0, 1.7.0, 1.8.0
> Environment: CentOS 7
>Reporter: Takuya Kojima
>Assignee: Sorabh Hamirwasia
>Priority: Minor
> Attachments: 1_normal.png, 2_after_restart.png, 
> 3_try_to_connect_after_restart.png, 
> 4_disconnected_after_minEvictableIdleTimeMillis.png, 
> 5_after_disconnected.png, DrillClientConnectionResetTest.java, 
> drill-connection-pool.txt
>
>
> I'm using drill via Java Application on Tomcat with JDBC driver.
> I found that disconnected connection is not released when restart a drillbit.
> Drillbit is restarted, but JDBC's connection keeps to try to connect the 
> connection which started before restart.
> Expected behavior is its connection release and reconnect when drillbit is 
> restarted, but as a matter of fact, the connection will be released after 
> elapsed time of "minEvictableIdleTimeMillis" setting.
> As a result, the application can't connect in the meantime despite drillbit 
> is active.
> I thought this is not major issue, but Postgres and Vertica's JDBC driver 
> works well in the same situation. I spend the much time to identify the 
> cause, so I create a new issue of this.
> The attached is log and JMX's monitor graph with 1.6.0's JDBC driver, but I 
> also get it with 1.7.0 and 1.8.0.



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


[jira] [Commented] (DRILL-4876) Remain disconnected connection

2016-10-16 Thread Takuya Kojima (JIRA)

[ 
https://issues.apache.org/jira/browse/DRILL-4876?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15581012#comment-15581012
 ] 

Takuya Kojima commented on DRILL-4876:
--

Hi Sorabh,

All right, now I opened the new ticket and will close this one.
Thank you for your support. It was really great help.

Thanks,
Takuya

> Remain disconnected connection
> --
>
> Key: DRILL-4876
> URL: https://issues.apache.org/jira/browse/DRILL-4876
> Project: Apache Drill
>  Issue Type: Bug
>  Components: Client - JDBC
>Affects Versions: 1.6.0, 1.7.0, 1.8.0
> Environment: CentOS 7
>Reporter: Takuya Kojima
>Assignee: Sorabh Hamirwasia
>Priority: Minor
> Attachments: 1_normal.png, 2_after_restart.png, 
> 3_try_to_connect_after_restart.png, 
> 4_disconnected_after_minEvictableIdleTimeMillis.png, 
> 5_after_disconnected.png, DrillClientConnectionResetTest.java, 
> drill-connection-pool.txt
>
>
> I'm using drill via Java Application on Tomcat with JDBC driver.
> I found that disconnected connection is not released when restart a drillbit.
> Drillbit is restarted, but JDBC's connection keeps to try to connect the 
> connection which started before restart.
> Expected behavior is its connection release and reconnect when drillbit is 
> restarted, but as a matter of fact, the connection will be released after 
> elapsed time of "minEvictableIdleTimeMillis" setting.
> As a result, the application can't connect in the meantime despite drillbit 
> is active.
> I thought this is not major issue, but Postgres and Vertica's JDBC driver 
> works well in the same situation. I spend the much time to identify the 
> cause, so I create a new issue of this.
> The attached is log and JMX's monitor graph with 1.6.0's JDBC driver, but I 
> also get it with 1.7.0 and 1.8.0.



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


[jira] [Created] (DRILL-4948) Re-connection without explicit new connection

2016-10-16 Thread Takuya Kojima (JIRA)
Takuya Kojima created DRILL-4948:


 Summary: Re-connection without explicit new connection
 Key: DRILL-4948
 URL: https://issues.apache.org/jira/browse/DRILL-4948
 Project: Apache Drill
  Issue Type: Improvement
  Components: Client - JDBC
Affects Versions: Future
Reporter: Takuya Kojima
Priority: Minor


Current JDBC driver's behavior is basically need to abort old connection and 
create new one when lost the connection.

Re-connection by the application is not bad, but traditional DB products(e.g. 
Postgres, Vertica) JDBC driver can handle it without explicit re-connection.
So, it would be great enhancement for new comer from another DB products world.

See also this closed bug ticket: #4876



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


[jira] [Commented] (DRILL-4876) Remain disconnected connection

2016-10-16 Thread Sorabh Hamirwasia (JIRA)

[ 
https://issues.apache.org/jira/browse/DRILL-4876?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15580360#comment-15580360
 ] 

Sorabh Hamirwasia commented on DRILL-4876:
--

Hi Takuya,
You can close this JIRA ticket and please open a new one for the enhancement. 
For now let's mark it for Furture. It would be great to put a link for this 
issue in the new JIRA as well just to provide some more background information 
in future.

Thanks,
Sorabh

> Remain disconnected connection
> --
>
> Key: DRILL-4876
> URL: https://issues.apache.org/jira/browse/DRILL-4876
> Project: Apache Drill
>  Issue Type: Bug
>  Components: Client - JDBC
>Affects Versions: 1.6.0, 1.7.0, 1.8.0
> Environment: CentOS 7
>Reporter: Takuya Kojima
>Assignee: Sorabh Hamirwasia
>Priority: Minor
> Attachments: 1_normal.png, 2_after_restart.png, 
> 3_try_to_connect_after_restart.png, 
> 4_disconnected_after_minEvictableIdleTimeMillis.png, 
> 5_after_disconnected.png, DrillClientConnectionResetTest.java, 
> drill-connection-pool.txt
>
>
> I'm using drill via Java Application on Tomcat with JDBC driver.
> I found that disconnected connection is not released when restart a drillbit.
> Drillbit is restarted, but JDBC's connection keeps to try to connect the 
> connection which started before restart.
> Expected behavior is its connection release and reconnect when drillbit is 
> restarted, but as a matter of fact, the connection will be released after 
> elapsed time of "minEvictableIdleTimeMillis" setting.
> As a result, the application can't connect in the meantime despite drillbit 
> is active.
> I thought this is not major issue, but Postgres and Vertica's JDBC driver 
> works well in the same situation. I spend the much time to identify the 
> cause, so I create a new issue of this.
> The attached is log and JMX's monitor graph with 1.6.0's JDBC driver, but I 
> also get it with 1.7.0 and 1.8.0.



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