[
https://issues.apache.org/jira/browse/PHOENIX-1315?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
James Taylor updated PHOENIX-1315:
----------------------------------
Attachment: PHOENIX-1315_v3.patch
Updated patch. Getting the following test failures (w/out the call to
queryPlan.iterator()):
{code}
2014-10-05 01:18:40.182 java[3926:1203] Unable to load realm mapping info from
SCDynamicStore
Running org.apache.phoenix.pig.PhoenixHBaseLoaderIT
Tests run: 11, Failures: 0, Errors: 7, Skipped: 0, Time elapsed: 151.04 sec <<<
FAILURE! - in org.apache.phoenix.pig.PhoenixHBaseLoaderIT
testGroupingOfDataForTable(org.apache.phoenix.pig.PhoenixHBaseLoaderIT) Time
elapsed: 8.262 sec <<< ERROR!
java.lang.RuntimeException: No data for location 'out'
at org.apache.pig.builtin.mock.Storage$Data.get(Storage.java:327)
at
org.apache.phoenix.pig.PhoenixHBaseLoaderIT.testGroupingOfDataForTable(PhoenixHBaseLoaderIT.java:415)
testDataForTable(org.apache.phoenix.pig.PhoenixHBaseLoaderIT) Time elapsed:
16.385 sec <<< ERROR!
org.apache.pig.impl.logicalLayer.FrontendException: Unable to open iterator for
alias B
at org.apache.pig.PigServer.openIterator(PigServer.java:872)
at
org.apache.phoenix.pig.PhoenixHBaseLoaderIT.testDataForTable(PhoenixHBaseLoaderIT.java:259)
testForNonPKSQLQuery(org.apache.phoenix.pig.PhoenixHBaseLoaderIT) Time
elapsed: 16.717 sec <<< ERROR!
org.apache.pig.impl.logicalLayer.FrontendException: Unable to open iterator for
alias A
at org.apache.pig.PigServer.openIterator(PigServer.java:872)
at
org.apache.phoenix.pig.PhoenixHBaseLoaderIT.testForNonPKSQLQuery(PhoenixHBaseLoaderIT.java:346)
testDataForSQLQueryWithSequences(org.apache.phoenix.pig.PhoenixHBaseLoaderIT)
Time elapsed: 16.391 sec <<< ERROR!
org.apache.pig.impl.logicalLayer.FrontendException: Unable to open iterator for
alias A
at org.apache.pig.PigServer.openIterator(PigServer.java:872)
at
org.apache.phoenix.pig.PhoenixHBaseLoaderIT.testDataForSQLQueryWithSequences(PhoenixHBaseLoaderIT.java:520)
testDataForSQLQueryWithFunctions(org.apache.phoenix.pig.PhoenixHBaseLoaderIT)
Time elapsed: 16.493 sec <<< ERROR!
org.apache.pig.impl.logicalLayer.FrontendException: Unable to open iterator for
alias A
at org.apache.pig.PigServer.openIterator(PigServer.java:872)
at
org.apache.phoenix.pig.PhoenixHBaseLoaderIT.testDataForSQLQueryWithFunctions(PhoenixHBaseLoaderIT.java:557)
testDataForSQLQuery(org.apache.phoenix.pig.PhoenixHBaseLoaderIT) Time elapsed:
16.351 sec <<< ERROR!
org.apache.pig.impl.logicalLayer.FrontendException: Unable to open iterator for
alias A
at org.apache.pig.PigServer.openIterator(PigServer.java:872)
at
org.apache.phoenix.pig.PhoenixHBaseLoaderIT.testDataForSQLQuery(PhoenixHBaseLoaderIT.java:300)
testLoadAndStore(org.apache.phoenix.pig.PhoenixHBaseLoaderIT) Time elapsed:
16.793 sec <<< ERROR!
java.sql.SQLException: ERROR 402 (24016): Cursor past last row.
at
org.apache.phoenix.exception.SQLExceptionCode$Factory$1.newException(SQLExceptionCode.java:334)
at
org.apache.phoenix.exception.SQLExceptionInfo.buildException(SQLExceptionInfo.java:133)
at
org.apache.phoenix.jdbc.PhoenixResultSet.checkCursorState(PhoenixResultSet.java:197)
at
org.apache.phoenix.jdbc.PhoenixResultSet.getInt(PhoenixResultSet.java:413)
at
org.apache.phoenix.jdbc.PhoenixResultSet.getInt(PhoenixResultSet.java:424)
at
org.apache.phoenix.pig.PhoenixHBaseLoaderIT.testLoadAndStore(PhoenixHBaseLoaderIT.java:475)
Results :
Tests in error:
PhoenixHBaseLoaderIT.testGroupingOfDataForTable:415 ? Runtime No data for
loca...
PhoenixHBaseLoaderIT.testDataForTable:259 ? Frontend Unable to open iterator
f...
PhoenixHBaseLoaderIT.testForNonPKSQLQuery:346 ? Frontend Unable to open
iterat...
PhoenixHBaseLoaderIT.testDataForSQLQueryWithSequences:520 ? Frontend Unable
to...
PhoenixHBaseLoaderIT.testDataForSQLQueryWithFunctions:557 ? Frontend Unable
to...
PhoenixHBaseLoaderIT.testDataForSQLQuery:300 ? Frontend Unable to open
iterato...
PhoenixHBaseLoaderIT.testLoadAndStore:475 ? SQL ERROR 402 (24016): Cursor
past...
{code}
If I put back the queryPlan.iterators() call, I get only two failures:
{code}
Rerun org.apache.phoenix.pig.PhoenixHBaseLoaderIT
org.apache.phoenix.pig.PhoenixHBaseLoaderIT
testGroupingOfDataForTable(org.apache.phoenix.pig.PhoenixHBaseLoaderIT)
java.lang.RuntimeException: No data for location 'out'
at org.apache.pig.builtin.mock.Storage$Data.get(Storage.java:327)
at
org.apache.phoenix.pig.PhoenixHBaseLoaderIT.testGroupingOfDataForTable(PhoenixHBaseLoaderIT.java:415)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
testLoadAndStore(org.apache.phoenix.pig.PhoenixHBaseLoaderIT)
java.sql.SQLException: ERROR 402 (24016): Cursor past last row.
at
org.apache.phoenix.exception.SQLExceptionCode$Factory$1.newException(SQLExceptionCode.java:334)
at
org.apache.phoenix.exception.SQLExceptionInfo.buildException(SQLExceptionInfo.java:133)
at
org.apache.phoenix.jdbc.PhoenixResultSet.checkCursorState(PhoenixResultSet.java:197)
at
org.apache.phoenix.jdbc.PhoenixResultSet.getInt(PhoenixResultSet.java:413)
at
org.apache.phoenix.jdbc.PhoenixResultSet.getInt(PhoenixResultSet.java:424)
at
org.apache.phoenix.pig.PhoenixHBaseLoaderIT.testLoadAndStore(PhoenixHBaseLoaderIT.java:475)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
{code}
> Remove queryPlan.iterators() call in PhoenixInputFormat if not necessary
> ------------------------------------------------------------------------
>
> Key: PHOENIX-1315
> URL: https://issues.apache.org/jira/browse/PHOENIX-1315
> Project: Phoenix
> Issue Type: Bug
> Reporter: James Taylor
> Assignee: maghamravikiran
> Fix For: 4.2, 3.2
>
> Attachments: PHOENIX-1315.patch, PHOENIX-1315_v2.patch,
> PHOENIX-1315_v3.patch
>
>
> I came across this with a recent change I was making. Why is the call to
> queryPlan.iterators() necessary in PhoenixInputFormat?
> {code}
> private QueryPlan getQueryPlan(final JobContext context) throws
> IOException {
> Preconditions.checkNotNull(context);
> if(queryPlan == null) {
> try{
> final Connection connection = getConnection();
> final String selectStatement = getConf().getSelectStatement();
> Preconditions.checkNotNull(selectStatement);
> final Statement statement = connection.createStatement();
> final PhoenixStatement pstmt =
> statement.unwrap(PhoenixStatement.class);
> this.queryPlan = pstmt.compileQuery(selectStatement);
> // FIXME: why is getting the iterator necessary here, as it
> will
> // cause the query to run.
> this.queryPlan.iterator();
> } catch(Exception exception) {
> LOG.error(String.format("Failed to get the query plan with
> error [%s]",exception.getMessage()));
> throw new RuntimeException(exception);
> }
> }
> return queryPlan;
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)