Derby
  1. Derby
  2. DERBY-5490

Lots of error trying to spawn a JVM in the SecureServerTest and Replication tests when running on the preview JDK 7 on Mac OS X

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 10.9.1.0
    • Component/s: Test
    • Labels:
      None
    • Environment:
      OpenJDK Runtime Environment (build 1.7.0-ea-b213) on Mac OS X 10.7
    • Urgency:
      Normal

      Description

      I see lots of errors when the tests try to spawn a JVM while running on the OpenJDK 7 preview for Mac OS X.

      SecureServerTest runs cleanly when I use JDK 6. But I see lots of these errors when I use JDK 7:

      .java.io.IOException: Cannot run program "/Library/Java/JavaVirtualMachines/JDK": error=2, No such file or directory
      at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
      at java.lang.Runtime.exec(Runtime.java:615)
      at java.lang.Runtime.exec(Runtime.java:448)
      at java.lang.Runtime.exec(Runtime.java:345)
      at org.apache.derbyTesting.functionTests.tests.derbynet.SecureServerTest$1.run(SecureServerTest.java:487)
      at java.security.AccessController.doPrivileged(Native Method)
      at org.apache.derbyTesting.functionTests.tests.derbynet.SecureServerTest.runServerCommand(SecureServerTest.java:479)
      at org.apache.derbyTesting.functionTests.tests.derbynet.SecureServerTest.runsysinfo(SecureServerTest.java:415)
      at org.apache.derbyTesting.functionTests.tests.derbynet.SecureServerTest.testServerStartup(SecureServerTest.java:356)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at junit.framework.TestCase.runTest(TestCase.java:164)
      at junit.framework.TestCase.runBare(TestCase.java:130)
      at org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:116)
      at junit.framework.TestResult$1.protect(TestResult.java:106)
      at junit.framework.TestResult.runProtected(TestResult.java:124)
      at junit.framework.TestResult.run(TestResult.java:109)
      at junit.framework.TestCase.run(TestCase.java:120)
      at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
      at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
      at junit.framework.TestResult.runProtected(TestResult.java:124)
      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.framework.TestResult.runProtected(TestResult.java:124)
      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.framework.TestResult.runProtected(TestResult.java:124)
      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.framework.TestResult.runProtected(TestResult.java:124)
      at junit.extensions.TestSetup.run(TestSetup.java:25)
      at junit.framework.TestSuite.runTest(TestSuite.java:230)
      at junit.framework.TestSuite.run(TestSuite.java:225)
      at junit.textui.TestRunner.doRun(TestRunner.java:121)
      at junit.textui.TestRunner.start(TestRunner.java:185)
      at junit.textui.TestRunner.main(TestRunner.java:143)
      Caused by: java.io.IOException: error=2, No such file or directory
      at java.lang.UNIXProcess.forkAndExec(Native Method)
      at java.lang.UNIXProcess.<init>(UNIXProcess.java:135)
      at java.lang.ProcessImpl.start(ProcessImpl.java:130)
      at java.lang.ProcessBuilder.start(ProcessBuilder.java:1021)
      ... 41 more

      1. derby-5490-01-aa-fixForMac.diff
        0.7 kB
        Rick Hillegas
      2. derby-5490-03-aa-revert.diff
        0.7 kB
        Rick Hillegas

        Issue Links

          Activity

          Hide
          Rick Hillegas added a comment -

          Attaching derby-5490-01-aa-fixForMac.diff. With this patch SecureServerTest runs cleanly for me on my Mac on JDKs 6 and 7. Committed at subversion revision 1197563.

          The problem is that the pathname of my JDK 7 executable contains spaces. Because of the way that the server process is spawned, those spaces are interpreted as argument separators. I fixed this by replacing the java executable name with just "java" if the executable name contains spaces and you are running on Mac OS X. If people are experiencing this problem on other platforms, we could consider removing the Mac OS X check. I am reluctant to attempt a more general solution for fear that this may break something that doesn't need fixing in other developers' environments.

          I will leave this issue open until the next time I run full regression tests on JDK 7.

          Touches the following file:

          M java/testing/org/apache/derbyTesting/junit/BaseTestCase.java

          Show
          Rick Hillegas added a comment - Attaching derby-5490-01-aa-fixForMac.diff. With this patch SecureServerTest runs cleanly for me on my Mac on JDKs 6 and 7. Committed at subversion revision 1197563. The problem is that the pathname of my JDK 7 executable contains spaces. Because of the way that the server process is spawned, those spaces are interpreted as argument separators. I fixed this by replacing the java executable name with just "java" if the executable name contains spaces and you are running on Mac OS X. If people are experiencing this problem on other platforms, we could consider removing the Mac OS X check. I am reluctant to attempt a more general solution for fear that this may break something that doesn't need fixing in other developers' environments. I will leave this issue open until the next time I run full regression tests on JDK 7. Touches the following file: M java/testing/org/apache/derbyTesting/junit/BaseTestCase.java
          Hide
          Rick Hillegas added a comment -

          Resolving this issue. I have not seen these errors in my last couple test runs on Java 7. I see the trigger-related errors in the upgrade tests that everyone else sees and I see the errors described on derby-5402. But I don't see errors related to spawning server JVMs.

          Show
          Rick Hillegas added a comment - Resolving this issue. I have not seen these errors in my last couple test runs on Java 7. I see the trigger-related errors in the upgrade tests that everyone else sees and I see the errors described on derby-5402. But I don't see errors related to spawning server JVMs.
          Hide
          Dag H. Wanvik added a comment -

          I think the patch for this issue can be backed out when DERBY-5504 is implemented: it turns out this patch caused another issue: DERBY-5502 since the patch makes tests start "java" subprocesses with a relative path (rather than absolute), which needs more Java privileges to run (execute on all files in fact), as opposed to execute privilege just on the java image.

          Show
          Dag H. Wanvik added a comment - I think the patch for this issue can be backed out when DERBY-5504 is implemented: it turns out this patch caused another issue: DERBY-5502 since the patch makes tests start "java" subprocesses with a relative path (rather than absolute), which needs more Java privileges to run (execute on all files in fact), as opposed to execute privilege just on the java image.
          Hide
          Rick Hillegas added a comment -

          Thanks Dag. I agree.

          Show
          Rick Hillegas added a comment - Thanks Dag. I agree.
          Hide
          Rick Hillegas added a comment -

          Attaching derby-5490-03-aa-revert.diff. This patch reverts the previous work done on this issue now that DERBY-5504 has provided a more comprehensive solution. I have verified that SecureServerTest and ReplicationSuite run cleanly after applying this reversion. Committed at subversion revision 1203706.

          Touches the following file:

          M java/testing/org/apache/derbyTesting/junit/BaseTestCase.java

          Show
          Rick Hillegas added a comment - Attaching derby-5490-03-aa-revert.diff. This patch reverts the previous work done on this issue now that DERBY-5504 has provided a more comprehensive solution. I have verified that SecureServerTest and ReplicationSuite run cleanly after applying this reversion. Committed at subversion revision 1203706. Touches the following file: M java/testing/org/apache/derbyTesting/junit/BaseTestCase.java

            People

            • Assignee:
              Unassigned
              Reporter:
              Rick Hillegas
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development