This is an automated email from the ASF dual-hosted git repository.

damccorm pushed a commit to branch revert-23165-jamm
in repository https://gitbox.apache.org/repos/asf/beam.git

commit 70031f7e8e1735b73f90c090a31f6ae1f9485e8a
Author: Danny McCormick <[email protected]>
AuthorDate: Tue Oct 18 11:42:55 2022 -0400

    Revert "Automatically open module/packages for Java 11+"
---
 .../org/apache/beam/gradle/BeamModulePlugin.groovy | 44 +++++++--------
 .../src/main/scripts/build_release_candidate.sh    | 13 +----
 sdks/go/test/run_validatesrunner_tests.sh          |  7 +--
 sdks/java/container/Dockerfile                     |  4 +-
 sdks/java/container/agent/build.gradle             | 64 ----------------------
 .../org/apache/beam/agent/OpenModuleAgent.java     | 64 ----------------------
 sdks/java/container/boot.go                        |  5 --
 sdks/java/container/common.gradle                  | 14 -----
 sdks/java/container/java11/build.gradle            |  4 --
 sdks/java/container/java11/option-jamm.json        |  5 +-
 sdks/java/container/java17/build.gradle            |  6 +-
 sdks/java/container/java17/option-jamm.json        |  5 +-
 settings.gradle.kts                                |  1 -
 .../site/content/en/contribute/release-guide.md    |  3 +-
 14 files changed, 32 insertions(+), 207 deletions(-)

diff --git 
a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy 
b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
index d20222b8197..8541cf75ae6 100644
--- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
+++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
@@ -39,7 +39,6 @@ import org.gradle.api.tasks.Exec
 import org.gradle.api.tasks.JavaExec
 import org.gradle.api.tasks.TaskProvider
 import org.gradle.api.tasks.bundling.Jar
-import org.gradle.api.tasks.compile.CompileOptions
 import org.gradle.api.tasks.compile.JavaCompile
 import org.gradle.api.tasks.javadoc.Javadoc
 import org.gradle.api.tasks.testing.Test
@@ -756,29 +755,6 @@ class BeamModulePlugin implements Plugin<Project> {
           + suffix)
     }
 
-    project.ext.setJava17Options = { CompileOptions options ->
-      def java17Home = project.findProperty("java17Home")
-      options.fork = true
-      options.forkOptions.javaHome = java17Home as File
-      options.compilerArgs += ['-Xlint:-path']
-      // Error prone requires some packages to be exported/opened for Java 17
-      // Disabling checks since this property is only used for Jenkins tests
-      // https://github.com/tbroyer/gradle-errorprone-plugin#jdk-16-support
-      options.errorprone.errorproneArgs.add("-XepDisableAllChecks")
-      options.forkOptions.jvmArgs += [
-        "-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED",
-        "-J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED",
-        "-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED",
-        "-J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED",
-        "-J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED",
-        
"-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED",
-        "-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED",
-        "-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
-        "-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED",
-        "-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED"
-      ]
-    }
-
     project.ext.repositories = {
       maven {
         name "testPublicationLocal"
@@ -1264,8 +1240,26 @@ class BeamModulePlugin implements Plugin<Project> {
       if (project.hasProperty("compileAndRunTestsWithJava17")) {
         def java17Home = project.findProperty("java17Home")
         project.tasks.compileTestJava {
+          options.fork = true
+          options.forkOptions.javaHome = java17Home as File
+          options.compilerArgs += ['-Xlint:-path']
           options.compilerArgs.addAll(['--release', '17'])
-          project.ext.setJava17Options(options)
+          // Error prone requires some packages to be exported/opened for Java 
17
+          // Disabling checks since this property is only used for Jenkins 
tests
+          // https://github.com/tbroyer/gradle-errorprone-plugin#jdk-16-support
+          options.errorprone.errorproneArgs.add("-XepDisableAllChecks")
+          options.forkOptions.jvmArgs += [
+            "-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED",
+            
"-J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED",
+            
"-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED",
+            
"-J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED",
+            
"-J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED",
+            
"-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED",
+            
"-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED",
+            
"-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
+            "-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED",
+            "-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED"
+          ]
         }
         project.tasks.withType(Test) {
           useJUnit()
diff --git a/release/src/main/scripts/build_release_candidate.sh 
b/release/src/main/scripts/build_release_candidate.sh
index 0c6da71c76c..8fe434edb97 100755
--- a/release/src/main/scripts/build_release_candidate.sh
+++ b/release/src/main/scripts/build_release_candidate.sh
@@ -77,7 +77,6 @@ RC_NUM=
 SIGNING_KEY=
 USER_GITHUB_ID=
 DEBUG=
-JAVA11_HOME=
 
 while [[ $# -gt 0 ]] ; do
   arg="$1"
@@ -104,10 +103,6 @@ while [[ $# -gt 0 ]] ; do
       shift; USER_GITHUB_ID=$1; shift
       ;;
 
-      --java11-home)
-      shift; JAVA11_HOME=$1; shift
-      ;;
-
       *)
       echo "Unrecognized argument: $1"
       usage
@@ -140,12 +135,6 @@ if [[ -z "$USER_GITHUB_ID" ]] ; then
   exit 1
 fi
 
-if [[ -z "$JAVA11_HOME" ]] ; then
-  echo 'Please provide Java 11 home. Required to build 
sdks/java/container/agent for Java 11+ containers.'
-  usage
-  exit 1
-fi
-
 if [[ -z "$SIGNING_KEY" ]] ; then
   echo "=================Pre-requirements===================="
   echo "Please make sure you have configured and started your gpg-agent by 
running ./preparation_before_release.sh."
@@ -344,7 +333,7 @@ if [[ $confirmation = "y" ]]; then
   cd ${BEAM_ROOT_DIR}
   git checkout ${RC_TAG}
 
-  ./gradlew :pushAllDockerImages -Pdocker-pull-licenses 
-Pdocker-tag=${RELEASE}rc${RC_NUM} -Pjava11Home=${JAVA11_HOME}
+  ./gradlew :pushAllDockerImages -Pdocker-pull-licenses 
-Pdocker-tag=${RELEASE}rc${RC_NUM}
 
   wipe_local_clone_dir
 fi
diff --git a/sdks/go/test/run_validatesrunner_tests.sh 
b/sdks/go/test/run_validatesrunner_tests.sh
index 0d0531c8234..d9d94b3a73a 100755
--- a/sdks/go/test/run_validatesrunner_tests.sh
+++ b/sdks/go/test/run_validatesrunner_tests.sh
@@ -237,11 +237,6 @@ case $key in
         shift # past argument
         shift # past value
         ;;
-    --java11_home)
-        JAVA11_HOME="$2"
-        shift # past argument
-        shift # past value
-        ;;
     *)    # unknown option
         echo "Unknown option: $1"
         exit 1
@@ -387,7 +382,7 @@ if [[ "$RUNNER" == "dataflow" ]]; then
       JAVA_TAG=$(date +%Y%m%d-%H%M%S)
       JAVA_CONTAINER=us.gcr.io/$PROJECT/$USER/beam_java11_sdk
       echo "Using container $JAVA_CONTAINER for cross-language java transforms"
-      ./gradlew :sdks:java:container:java11:docker 
-Pdocker-repository-root=us.gcr.io/$PROJECT/$USER -Pdocker-tag=$JAVA_TAG 
-Pjava11Home=$JAVA11_HOME
+      ./gradlew :sdks:java:container:java11:docker 
-Pdocker-repository-root=us.gcr.io/$PROJECT/$USER -Pdocker-tag=$JAVA_TAG
 
       # Verify it exists
       docker images | grep $JAVA_TAG
diff --git a/sdks/java/container/Dockerfile b/sdks/java/container/Dockerfile
index c29b7f7910b..179a7e22979 100644
--- a/sdks/java/container/Dockerfile
+++ b/sdks/java/container/Dockerfile
@@ -31,9 +31,7 @@ ADD target/beam-sdks-java-io-kafka.jar /opt/apache/beam/jars/
 ADD target/kafka-clients.jar /opt/apache/beam/jars/
 
 # Required to use jamm as a javaagent to get accurate object size measuring
-# COPY fails if file is not found, so use a wildcard for open-module-agent.jar
-# since it is only included in Java 9+ containers
-COPY target/jamm.jar target/open-module-agent*.jar /opt/apache/beam/jars/
+ADD target/jamm.jar /opt/apache/beam/jars/
 
 ADD target/linux_amd64/boot /opt/apache/beam/
 
diff --git a/sdks/java/container/agent/build.gradle 
b/sdks/java/container/agent/build.gradle
deleted file mode 100644
index 9d86fd430a6..00000000000
--- a/sdks/java/container/agent/build.gradle
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * License); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-plugins {
-    id 'org.apache.beam.module'
-}
-applyJavaNature(
-    exportJavadoc: false,
-    publish: false
-)
-
-description = "Apache Beam :: SDKs :: Java :: Container :: Agent"
-
-jar {
-    manifest {
-        attributes("Agent-Class": "org.apache.beam.agent.OpenModuleAgent",
-                "Can-Redefine-Classes": true,
-                "Can-Retransform-Classes": true,
-                "Premain-Class": "org.apache.beam.agent.OpenModuleAgent")
-    }
-}
-
-
-if (project.hasProperty('java11Home')) {
-    javaVersion = "1.11"
-    def java11Home = project.findProperty('java11Home')
-    project.tasks.withType(JavaCompile) {
-        options.fork = true
-        options.forkOptions.javaHome = java11Home as File
-        options.compilerArgs += ['-Xlint:-path']
-    }
-} else if (project.hasProperty('java17Home')) {
-    javaVersion = "1.17"
-    project.tasks.withType(JavaCompile) {
-        setJava17Options(options)
-
-        checkerFramework {
-            skipCheckerFramework = true
-        }
-    }
-}
-
-// Module classes requires JDK > 8
-project.tasks.each {
-    it.onlyIf {
-        project.hasProperty('java11Home') || project.hasProperty('java17Home')
-                || JavaVersion.VERSION_1_8.compareTo(JavaVersion.current()) < 0
-    }
-}
diff --git 
a/sdks/java/container/agent/src/main/java/org/apache/beam/agent/OpenModuleAgent.java
 
b/sdks/java/container/agent/src/main/java/org/apache/beam/agent/OpenModuleAgent.java
deleted file mode 100644
index 0440475e361..00000000000
--- 
a/sdks/java/container/agent/src/main/java/org/apache/beam/agent/OpenModuleAgent.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.beam.agent;
-
-import java.lang.instrument.Instrumentation;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-
-/*
- * Opens all base modules in the JDK to jamm (used to accurately measure 
object sizes)
- */
-public class OpenModuleAgent {
-  public static void premain(String argument, Instrumentation instrumentation) 
{
-    Set<Module> modulesToOpen = new HashSet<>();
-    Optional<Module> jamm = ModuleLayer.boot().findModule("jamm");
-    if (!jamm.isPresent()) {
-      System.err.println("Jamm module expected, but not found");
-      return;
-    }
-
-    ModuleLayer.boot()
-        .modules()
-        .forEach(
-            module -> {
-              if (!module.getDescriptor().isOpen()) {
-                modulesToOpen.add(module);
-              }
-            });
-
-    Set<Module> openModules = Set.of(jamm.get());
-    for (Module module : modulesToOpen) {
-      Map<String, Set<Module>> addOpens = new HashMap<>();
-      for (String pkg : module.getPackages()) {
-        addOpens.put(pkg, openModules);
-      }
-      instrumentation.redefineModule(
-          module,
-          Collections.emptySet(),
-          Collections.emptyMap(),
-          addOpens,
-          Collections.emptySet(),
-          Collections.emptyMap());
-    }
-  }
-}
diff --git a/sdks/java/container/boot.go b/sdks/java/container/boot.go
index 5fa85c77dd5..d0411331874 100644
--- a/sdks/java/container/boot.go
+++ b/sdks/java/container/boot.go
@@ -224,11 +224,6 @@ func main() {
                        }
                }
        }
-       // Automatically open modules for Java 11+
-       openModuleAgentJar := "/opt/apache/beam/jars/open-module-agent.jar"
-       if _, err := os.Stat(openModuleAgentJar); err == nil {
-               args = append(args, "-javaagent:" + openModuleAgentJar)
-       }
        args = append(args, "org.apache.beam.fn.harness.FnHarness")
        log.Printf("Executing: java %v", strings.Join(args, " "))
 
diff --git a/sdks/java/container/common.gradle 
b/sdks/java/container/common.gradle
index 265d14fbe9c..b9f8da73cbd 100644
--- a/sdks/java/container/common.gradle
+++ b/sdks/java/container/common.gradle
@@ -48,9 +48,6 @@ task copyDockerfileDependencies(type: Copy) {
     from configurations.dockerDependency
     rename 'slf4j-api.*', 'slf4j-api.jar'
     rename 'slf4j-jdk14.*', 'slf4j-jdk14.jar'
-    if (imageJavaVersion == "11" || imageJavaVersion == "17") {
-        rename 'beam-sdks-java-container-agent.*.jar', 'open-module-agent.jar'
-    }
     rename 'beam-sdks-java-harness-.*.jar', 'beam-sdks-java-harness.jar'
     rename 'beam-sdks-java-io-kafka.*.jar', 'beam-sdks-java-io-kafka.jar'
     rename 'kafka-clients.*.jar', 'kafka-clients.jar'
@@ -89,16 +86,6 @@ task skipPullLicenses(type: Exec) {
     args "-c", "mkdir -p build/target/go-licenses build/target/options 
build/target/third_party_licenses && touch 
build/target/third_party_licenses/skip"
 }
 
-task validateJavaHome {
-    if (imageJavaVersion == "11" || imageJavaVersion == "17") {
-        doFirst {
-            if (!project.hasProperty('java17Home') && 
!project.hasProperty('java11Home')) {
-                throw new GradleException('java17Home or java11Home property 
required. Re-run with -Pjava17Home or -Pjava11Home')
-            }
-        }
-    }
-}
-
 docker {
     name containerImageName(
             name: 
"${project.docker_image_default_repo_prefix}java${imageJavaVersion}_sdk",
@@ -129,4 +116,3 @@ dockerPrepare.dependsOn copySdkHarnessLauncher
 dockerPrepare.dependsOn copyDockerfileDependencies
 dockerPrepare.dependsOn ":sdks:java:container:downloadCloudProfilerAgent"
 dockerPrepare.dependsOn copyJdkOptions
-dockerPrepare.dependsOn validateJavaHome
\ No newline at end of file
diff --git a/sdks/java/container/java11/build.gradle 
b/sdks/java/container/java11/build.gradle
index bbf7bb1f971..b9f70facdf1 100644
--- a/sdks/java/container/java11/build.gradle
+++ b/sdks/java/container/java11/build.gradle
@@ -22,7 +22,3 @@ project.ext {
 
 // Load the main build script which contains all build logic.
 apply from: "../common.gradle"
-
-dependencies {
-    dockerDependency project(path: ":sdks:java:container:agent")
-}
\ No newline at end of file
diff --git a/sdks/java/container/java11/option-jamm.json 
b/sdks/java/container/java11/option-jamm.json
index ac9a8e60063..e994648a8e2 100644
--- a/sdks/java/container/java11/option-jamm.json
+++ b/sdks/java/container/java11/option-jamm.json
@@ -4,7 +4,10 @@
   "options": {
     "java_arguments": [
       "--add-modules=jamm",
-      "--module-path=/opt/apache/beam/jars/jamm.jar"
+      "--module-path=/opt/apache/beam/jars/jamm.jar",
+      "--add-opens=java.base/java.lang=jamm",
+      "--add-opens=java.base/java.lang.ref=jamm",
+      "--add-opens=java.base/java.util=jamm"
     ]
   }
 }
\ No newline at end of file
diff --git a/sdks/java/container/java17/build.gradle 
b/sdks/java/container/java17/build.gradle
index 24e7af6c2c5..54e2a283c59 100644
--- a/sdks/java/container/java17/build.gradle
+++ b/sdks/java/container/java17/build.gradle
@@ -21,8 +21,4 @@ project.ext {
 }
 
 // Load the main build script which contains all build logic.
-apply from: "../common.gradle"
-
-dependencies {
-    dockerDependency project(path: ":sdks:java:container:agent")
-}
\ No newline at end of file
+apply from: "../common.gradle"
\ No newline at end of file
diff --git a/sdks/java/container/java17/option-jamm.json 
b/sdks/java/container/java17/option-jamm.json
index ac9a8e60063..e994648a8e2 100644
--- a/sdks/java/container/java17/option-jamm.json
+++ b/sdks/java/container/java17/option-jamm.json
@@ -4,7 +4,10 @@
   "options": {
     "java_arguments": [
       "--add-modules=jamm",
-      "--module-path=/opt/apache/beam/jars/jamm.jar"
+      "--module-path=/opt/apache/beam/jars/jamm.jar",
+      "--add-opens=java.base/java.lang=jamm",
+      "--add-opens=java.base/java.lang.ref=jamm",
+      "--add-opens=java.base/java.util=jamm"
     ]
   }
 }
\ No newline at end of file
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 52f5a9431cc..d17d4caead0 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -116,7 +116,6 @@ include(":sdks:java:bom")
 include(":sdks:java:bom:gcp")
 include(":sdks:java:build-tools")
 include(":sdks:java:container")
-include(":sdks:java:container:agent")
 include(":sdks:java:container:java8")
 include(":sdks:java:container:java11")
 include(":sdks:java:container:java17")
diff --git a/website/www/site/content/en/contribute/release-guide.md 
b/website/www/site/content/en/contribute/release-guide.md
index c5ea4442145..72b461d9c5d 100644
--- a/website/www/site/content/en/contribute/release-guide.md
+++ b/website/www/site/content/en/contribute/release-guide.md
@@ -500,7 +500,6 @@ Consider adding known issues there for minor issues instead 
of accepting cherry
 * Originating branch has the version information updated to the new version;
 * Nightly snapshot is in progress (do revisit it continually);
 * Set `JAVA_HOME` to JDK 8 (Example: `export 
JAVA_HOME=/example/path/to/java/jdk8`).
-* Have Java 11 installed.
 
 The core of the release process is the build-vote-fix cycle.
 Each cycle produces one release candidate.
@@ -544,7 +543,7 @@ See the source of the script for more details, or to run 
commands manually in ca
 
 * **Usage**
 
-      ./beam/release/src/main/scripts/build_release_candidate.sh --release 
"${RELEASE_VERSION}" --rc "${RC_NUM}" --github-user "${GITHUB_USER}" 
--java11-home "${JAVA11_HOME}"
+      ./beam/release/src/main/scripts/build_release_candidate.sh --release 
"${RELEASE_VERSION}" --rc "${RC_NUM}" --github-user "${GITHUB_USER}"
 
 * **The script will:**
   1. Clone the repo at the selected RC tag.

Reply via email to