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

Myrna van Lunteren commented on DERBY-5608:
-------------------------------------------

I tried a run with a build with the patch applied on the system where the 
trouble is reproducible, and unfortunately, I see lots of cascading errors.

It starts with this:
1) 
test_01_WrongUsage(org.apache.derbyTesting.functionTests.tests.derbynet.NetworkServerControlApiTest)java.lang.InterruptedException
        at java.lang.ProcessImpl.waitFor(Native Method)
        at 
org.apache.derbyTesting.junit.SpawnedProcess.complete(SpawnedProcess.java:214)
        at 
org.apache.derbyTesting.junit.SpawnedProcess.complete(SpawnedProcess.java:176)
        at 
org.apache.derbyTesting.junit.BaseTestCase.readProcessOutput(BaseTestCase.java:774)
        at 
org.apache.derbyTesting.junit.BaseTestCase.assertExecJavaCmdAsExpected(BaseTestCase.java:508)
        at 
org.apache.derbyTesting.functionTests.tests.derbynet.NetworkServerControlApiTest.test_01_WrongUsage(NetworkServerControlApiTest.java:81)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
        at 
org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:113)
        at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
        at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
        at junit.extensions.TestSetup.run(TestSetup.java:25)
        at 
org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
        at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
        at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
        at junit.extensions.TestSetup.run(TestSetup.java:25)
        at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
        at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
        at junit.extensions.TestSetup.run(TestSetup.java:25)
        at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
        at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
        at junit.extensions.TestSetup.run(TestSetup.java:25)

The next failure is 
2) 
testBoundaries(org.apache.derbyTesting.functionTests.tests.jdbcapi.InternationalConnectTest)java.sql.SQLException:
 DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: 
java.security.AccessControlExceptionAccess denied (java.io.FilePermission 
[edited path to system dir]\system\AAAAAAAAAAAAAA[...repeat....]AAAA\tmp 
delete)XJ001.U
        
The third failure is:
3) 
shutdownDerby(org.apache.derbyTesting.functionTests.tests.store.BootAllTest)java.lang.NullPointerException
        at 
org.apache.derby.impl.services.monitor.TopService.getService(TopService.java:128)
        at 
org.apache.derby.impl.services.monitor.BaseMonitor.shutdown(BaseMonitor.java:199)
        at org.apache.derby.jdbc.InternalDriver.connect(InternalDriver.java:248)
        at 
org.apache.derby.jdbc.AutoloadedDriver.connect(AutoloadedDriver.java:143)
        at java.sql.DriverManager.getConnection(DriverManager.java:317)
        at java.sql.DriverManager.getConnection(DriverManager.java:297)
        at 
org.apache.derbyTesting.junit.DriverManagerConnector.getConnectionByAttributes(DriverManagerConnector.java:144)
        at 
org.apache.derbyTesting.junit.DriverManagerConnector.shutEngine(DriverManagerConnector.java:121)
        at 
org.apache.derbyTesting.junit.TestConfiguration.shutdownEngine(TestConfiguration.java:1716)
        at 
org.apache.derbyTesting.functionTests.tests.store.BootAllTest.shutdownDerby(BootAllTest.java:116)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
        at 
org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:113)
        at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
        at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
        at junit.extensions.TestSetup.run(TestSetup.java:25)
        at 
org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:51)
        at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
        at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
        at junit.extensions.TestSetup.run(TestSetup.java:18)
        at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
        at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
        at junit.extensions.TestSetup.run(TestSetup.java:25)
        at 
org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:51)
        at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
        at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
        at junit.extensions.TestSetup.run(TestSetup.java:18)
        at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
        at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
        at junit.extensions.TestSetup.run(TestSetup.java:25)
        at 
org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:51)
        at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
        at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
        at junit.extensions.TestSetup.run(TestSetup.java:18)

Which then leaves Derby system shutdown, and causes many, many more failures.
Tests run: 11591,  Failures: 76,  Errors: 817

                
> BaseTestCase.readProcessOutput should read getInputStream()  and 
> getErrorStream() in separate threads
> -----------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-5608
>                 URL: https://issues.apache.org/jira/browse/DERBY-5608
>             Project: Derby
>          Issue Type: Bug
>          Components: Test
>    Affects Versions: 10.9.0.0
>            Reporter: Kathey Marsden
>            Assignee: Kristian Waagan
>            Priority: Minor
>         Attachments: derby-5608-1a-use_spawnedprocess.diff
>
>
> BaseTestCase.readProcessOutput() reads the streams from 
> Process.getInputStream() and Process.getErrorStream() sequentially 
> InputStream is = pr.getInputStream();
> InputStream es = pr.getErrorStream();
> ...
>  output += "<STDOUT> " + inputStreamToString(is) + "<END STDOUT>\n";
>  output += "<STDERR>" + inputStreamToString(es) + "<END STDERR>\n";
> I think that to be really correct the  two streams need to be read in 
> separate threads because if the error output  is  large it could block and 
> cause a hang  if they are read sequentially like this.
> I noticed during the DERBY-5601 discussion as Myrna referenced in that  the 
> addition of draining the error stream caused a different problem (an 
> InterruptException). I don't understand how it could cause that problem but 
> do think a hang blocking on  reading the input would be possible if the error 
> output was large enough both  before and after the change to add the reading 
> of the error stream sequentially.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to