You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Rick Hillegas (JIRA)" <ji...@apache.org> on 2016/12/03 19:24:58 UTC

[jira] [Updated] (DERBY-6856) Make it possible to build Derby using JDK 9

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

Rick Hillegas updated DERBY-6856:
---------------------------------
    Attachment: ptestScript
                PTest.java

It has taken me a while, but I now have a compact repro for the regression in JDK 9 build 144. I am attaching the following files:

  PTest.java - A test which shows this problem

  ptestScript - A script for building the test and running it

To show the problem, put PTest.java in the current directory and run ptestScript. The script will compile the test class and put the test class inside a jar file in the parent directory. Then the script will run the test in setup mode, creating a subdirectory of the current directory and a policy file. Finally, the script will run the test under a security manager, demonstrating the problem on JDK 9 build 144.

I have observed the following:

1) The problem only occurs if the jar file which receives privileges is in the parent directory of the current directory. If the jar file is in the current directory, then the problem does not occur.

2) The problem only occurs if the policy file grants write permission as well as read permission on the target directory.

Here is the output of the test when run under JDK 8:

{noformat}
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
Compile the test and jar it up...
Run the test in setup mode, creating a subdirectory and policy file...
Policy file is...
grant codeBase "file:/Users/rhillegas/derby/PTest.jar" {
  permission java.io.FilePermission "/Users/rhillegas/derby/mainline/ptestdir/-", "write";
  permission java.io.FilePermission "/Users/rhillegas/derby/mainline/ptestdir/-", "read";
};

Now run the experiment under a security manager...
Checking for existence of /Users/rhillegas/derby/mainline/ptestdir/zdummy.txt
'/Users/rhillegas/derby/mainline/ptestdir/zdummy.txt' exists = false
{noformat}

Here is the output from the script when the current environment uses jdk 9 build 144:

{noformat}
java version "9-ea"
Java(TM) SE Runtime Environment (build 9-ea+144)
Java HotSpot(TM) 64-Bit Server VM (build 9-ea+144, mixed mode)
Compile the test and jar it up...
Run the test in setup mode, creating a subdirectory and policy file...
Policy file is...
grant codeBase "file:/Users/rhillegas/derby/PTest.jar" {
  permission java.io.FilePermission "/Users/rhillegas/derby/mainline/ptestdir/-", "write";
  permission java.io.FilePermission "/Users/rhillegas/derby/mainline/ptestdir/-", "read";
};

Now run the experiment under a security manager...
Checking for existence of /Users/rhillegas/derby/mainline/ptestdir/zdummy.txt
Caught a java.security.AccessControlException bearing this message: access denied ("java.io.FilePermission" "/Users/rhillegas/derby/mainline/ptestdir/zdummy.txt" "read")
{noformat}

> Make it possible to build Derby using JDK 9
> -------------------------------------------
>
>                 Key: DERBY-6856
>                 URL: https://issues.apache.org/jira/browse/DERBY-6856
>             Project: Derby
>          Issue Type: Improvement
>          Components: Build tools
>    Affects Versions: 10.12.1.1
>            Reporter: Rick Hillegas
>         Attachments: PTest.java, derby-6856-01-ab-addShardingKey.diff, derby-6856-01-ac-cleanup.diff, derby-6856-02-aa-addShardingKey.diff, derby-6856-03-aa-autoboxingDeprecationWarnings.diff, derby-6856-03-ab-autoboxingDeprecationWarnings.diff, derby-6856-04-aa-autoboxingDeprecationWarnings-part2.diff, derby-6856-04-ab-autoboxingDeprecationWarnings-part2.diff, derby-6856-05-ac-roundingMode-Class.newInstance.diff, derby-6856-05-af-roundingMode-Class.getDeclaredConstructor.diff, derby-6856-05-ag-roundingMode-Class.newInstance.diff, derby-6856-06-aa-observable.diff, derby-6856-07-aa-oneMoreNewInstance.diff, derby-6856-08-aa-cleanupJavadoc.diff, derby-6856-09-aa-javadocEntities.diff, derby-6856-XX-ab-base.diff, derby-6856-XX-ac-base.diff, ptestScript
>
>
> Derby can't be built with JDK 9. Java 9 introduces new JDBC classes like java.sql.ShardingKey and methods which refer to these new classes.
> In addition, project Jigsaw has created a new way to name classes (see http://openjdk.java.net/jeps/220). This breaks the PropertySetter build tool which we use so that old JVMs can compile Derby and so that Derby can be compiled to run on old JVMs.
> It is likely that we will need to leave this issue open throughout the development cycle of Java 9.



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