Jason Dere created HIVE-19883:
---------------------------------

             Summary: QTestUtil: initDataset() can be affected by the settings 
of the previous test
                 Key: HIVE-19883
                 URL: https://issues.apache.org/jira/browse/HIVE-19883
             Project: Hive
          Issue Type: Bug
          Components: Testing Infrastructure
            Reporter: Jason Dere


Tried creating a test that set 
metastore.create.as.acid/hive.create.as.insert.only, and I found that the 
built-in table default.src was being created as an insert-only transactional 
table, which will cause errors in other tests that do not set the TxnManager to 
one that supports transactional tables.

It appears that initDataset() uses the old CliDriver that was used for the 
previous test, which has any settings used during that test:
{noformat}
java.lang.Exception: Creating src
        at 
org.apache.hadoop.hive.ql.exec.DDLTask.createTable(DDLTask.java:4926) 
[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at org.apache.hadoop.hive.ql.exec.DDLTask.execute(DDLTask.java:428) 
[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:205) 
[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:97) 
[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:2659) 
[hive-exec-4.0.0-SNAPSHOT.jar:?]
        at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:2311) 
[hive-exec-4.0.0-SNAPSHOT.jar:?]
        at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1982) 
[hive-exec-4.0.0-SNAPSHOT.jar:?]
        at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1683) 
[hive-exec-4.0.0-SNAPSHOT.jar:?]
        at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1677) 
[hive-exec-4.0.0-SNAPSHOT.jar:?]
        at 
org.apache.hadoop.hive.ql.reexec.ReExecDriver.run(ReExecDriver.java:157) 
[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.ql.reexec.ReExecDriver.run(ReExecDriver.java:218) 
[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:239) 
[hive-cli-4.0.0-SNAPSHOT.jar:?]
        at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:188) 
[hive-cli-4.0.0-SNAPSHOT.jar:?]
        at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:402) 
[hive-cli-4.0.0-SNAPSHOT.jar:?]
        at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:335) 
[hive-cli-4.0.0-SNAPSHOT.jar:?]
        at org.apache.hadoop.hive.ql.QTestUtil.initDataset(QTestUtil.java:1277) 
[classes/:?]
        at 
org.apache.hadoop.hive.ql.QTestUtil.initDataSetForTest(QTestUtil.java:1259) 
[classes/:?]
        at org.apache.hadoop.hive.ql.QTestUtil.cliInit(QTestUtil.java:1328) 
[classes/:?]
        at 
org.apache.hadoop.hive.cli.control.CoreCliDriver.runTest(CoreCliDriver.java:176)
 [classes/:?]
        at 
org.apache.hadoop.hive.cli.control.CliAdapter.runTest(CliAdapter.java:104) 
[classes/:?]
        at 
org.apache.hadoop.hive.cli.TestMiniLlapLocalCliDriver.testCliDriver(TestMiniLlapLocalCliDriver.java:59)
 [test-classes/:?]
{noformat}

A new CliDriver is created for the new test, but only after we've created the 
dataset tables for the next test (see the line numbers for QTestUtil.cliInit() 
in both stack traces).
{noformat}
CliSessionState(SessionState).getConf() line: 317       
CliDriver.<init>() line: 110    
QTestUtil.cliInit(File, boolean) line: 1360     
CoreCliDriver.runTest(String, String, String) line: 176 
CoreCliDriver(CliAdapter).runTest(String, File) line: 104       
TestMiniLlapLocalCliDriver.testCliDriver() line: 59     
{noformat}

I think fix is to move the creation of the new CliDriver higher up in 
QTestUtil.cliInit(), before we call initDataset().



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

Reply via email to