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

ASF GitHub Bot commented on HADOOP-19329:
-----------------------------------------

pan3793 commented on code in PR #7759:
URL: https://github.com/apache/hadoop/pull/7759#discussion_r2163268306


##########
hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/SignalUtil.java:
##########
@@ -0,0 +1,152 @@
+/*
+ * 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.hadoop.util;
+
+import org.apache.hadoop.classification.InterfaceAudience;
+
+import org.apache.hadoop.util.dynamic.BindingUtils;
+import org.apache.hadoop.util.dynamic.DynConstructors;
+import org.apache.hadoop.util.dynamic.DynMethods;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Proxy;
+
+@InterfaceAudience.Private
+public class SignalUtil {
+
+  static final Class<?> jdkSignalClazz =
+      BindingUtils.loadClassSafely("sun.misc.Signal");
+  static final Class<?> jdkSignalHandlerClazz =
+      BindingUtils.loadClassSafely("sun.misc.SignalHandler");
+
+  static DynConstructors.Ctor<?> jdkSignalCtor =
+      new DynConstructors.Builder()
+          .impl(jdkSignalClazz, String.class)
+          .build();
+
+  static DynMethods.StaticMethod jdkSignalHandleStaticMethod =
+      new DynMethods.Builder("handle")
+          .impl(jdkSignalClazz, jdkSignalClazz, jdkSignalHandlerClazz)
+          .buildStatic();
+
+  static DynMethods.StaticMethod jdkSignalRaiseStaticMethod =
+      new DynMethods.Builder("raise")
+          .impl(jdkSignalClazz, jdkSignalClazz)
+          .buildStatic();
+
+  static DynMethods.UnboundMethod jdkSignalHandlerHandleMethod =
+      new DynMethods.Builder("handle")
+          .impl(jdkSignalHandlerClazz, jdkSignalClazz)
+          .build();
+
+  @InterfaceAudience.Private
+  public static class Signal {
+    private final static DynMethods.UnboundMethod getNumberMethod =
+        new DynMethods.Builder("getNumber").impl(jdkSignalClazz).build();
+
+    private final static DynMethods.UnboundMethod getNameMethod =
+        new DynMethods.Builder("getName").impl(jdkSignalClazz).build();
+
+    private final Object delegate;
+
+    public Signal(String name) {
+      this.delegate = jdkSignalCtor.newInstance(name);
+    }
+
+    public Signal(Object delegate) {
+      Preconditions.checkArgument(jdkSignalClazz.isInstance(delegate),
+          String.format("Expected class is '%s', but actual class is '%s'",
+              jdkSignalClazz.getName(), delegate.getClass().getName()));
+      this.delegate = delegate;
+    }
+
+    public int getNumber() {
+      return getNumberMethod.bind(delegate).invoke();

Review Comment:
   updated to make bind happen in constructor



##########
hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/SignalUtil.java:
##########
@@ -0,0 +1,152 @@
+/*
+ * 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.hadoop.util;
+
+import org.apache.hadoop.classification.InterfaceAudience;
+
+import org.apache.hadoop.util.dynamic.BindingUtils;
+import org.apache.hadoop.util.dynamic.DynConstructors;
+import org.apache.hadoop.util.dynamic.DynMethods;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Proxy;
+
+@InterfaceAudience.Private
+public class SignalUtil {
+
+  static final Class<?> jdkSignalClazz =
+      BindingUtils.loadClassSafely("sun.misc.Signal");
+  static final Class<?> jdkSignalHandlerClazz =
+      BindingUtils.loadClassSafely("sun.misc.SignalHandler");
+
+  static DynConstructors.Ctor<?> jdkSignalCtor =
+      new DynConstructors.Builder()
+          .impl(jdkSignalClazz, String.class)
+          .build();
+
+  static DynMethods.StaticMethod jdkSignalHandleStaticMethod =
+      new DynMethods.Builder("handle")
+          .impl(jdkSignalClazz, jdkSignalClazz, jdkSignalHandlerClazz)
+          .buildStatic();
+
+  static DynMethods.StaticMethod jdkSignalRaiseStaticMethod =
+      new DynMethods.Builder("raise")
+          .impl(jdkSignalClazz, jdkSignalClazz)
+          .buildStatic();
+
+  static DynMethods.UnboundMethod jdkSignalHandlerHandleMethod =
+      new DynMethods.Builder("handle")
+          .impl(jdkSignalHandlerClazz, jdkSignalClazz)
+          .build();
+
+  @InterfaceAudience.Private
+  public static class Signal {
+    private final static DynMethods.UnboundMethod getNumberMethod =
+        new DynMethods.Builder("getNumber").impl(jdkSignalClazz).build();
+
+    private final static DynMethods.UnboundMethod getNameMethod =
+        new DynMethods.Builder("getName").impl(jdkSignalClazz).build();
+
+    private final Object delegate;
+
+    public Signal(String name) {
+      this.delegate = jdkSignalCtor.newInstance(name);
+    }
+
+    public Signal(Object delegate) {
+      Preconditions.checkArgument(jdkSignalClazz.isInstance(delegate),
+          String.format("Expected class is '%s', but actual class is '%s'",
+              jdkSignalClazz.getName(), delegate.getClass().getName()));
+      this.delegate = delegate;
+    }
+
+    public int getNumber() {
+      return getNumberMethod.bind(delegate).invoke();
+    }
+
+    public String getName() {
+      return getNameMethod.bind(delegate).invoke();

Review Comment:
   addressed too





> [JDK17] Remove usage of sun.misc.Signal
> ---------------------------------------
>
>                 Key: HADOOP-19329
>                 URL: https://issues.apache.org/jira/browse/HADOOP-19329
>             Project: Hadoop Common
>          Issue Type: Sub-task
>          Components: build
>            Reporter: yanmin
>            Assignee: yanmin
>            Priority: Major
>              Labels: pull-request-available
>
> when we build hadoop in JDK11 runtime based on 
> [https://github.com/apache/hadoop/pull/7085|https://github.com/apache/hadoop/pull/7085,]
>  JDK11 build is failing as flowing due to: {{package sun.misc does not 
> exist}} in.
>  
> This is because that package sun.misc is not supported after jdk11.
> {code:java}
> [ERROR] Failed to execute goal 
> org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile 
> (default-compile) on project hadoop-common: Compilation failure: Compilation 
> failure: 
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/SignalLogger.java:[22,16]
>  package sun.misc does not exist
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/SignalLogger.java:[23,16]
>  package sun.misc does not exist
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/SignalLogger.java:[44,43]
>  cannot find symbol
> [ERROR]   symbol:   class SignalHandler
> [ERROR]   location: class org.apache.hadoop.util.SignalLogger
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/SignalLogger.java:[46,19]
>  cannot find symbol
> [ERROR]   symbol:   class SignalHandler
> [ERROR]   location: class org.apache.hadoop.util.SignalLogger.Handler
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/SignalLogger.java:[59,24]
>  cannot find symbol
> [ERROR]   symbol:   class Signal
> [ERROR]   location: class org.apache.hadoop.util.SignalLogger.Handler
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/service/launcher/IrqHandler.java:[26,16]
>  package sun.misc does not exist
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/service/launcher/IrqHandler.java:[27,16]
>  package sun.misc does not exist
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/service/launcher/IrqHandler.java:[42,42]
>  cannot find symbol
> [ERROR]   symbol: class SignalHandler
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/service/launcher/IrqHandler.java:[71,11]
>  cannot find symbol
> [ERROR]   symbol:   class Signal
> [ERROR]   location: class org.apache.hadoop.service.launcher.IrqHandler
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/service/launcher/IrqHandler.java:[126,22]
>  cannot find symbol
> [ERROR]   symbol:   class Signal
> [ERROR]   location: class org.apache.hadoop.service.launcher.IrqHandler
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/nativeio/NativeIO.java:[48,16]
>  package sun.misc does not exist
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/FastByteComparisons.java:[27,16]
>  package sun.misc does not exist
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/FastByteComparisons.java:[134,20]
>  cannot find symbol
> [ERROR]   symbol:   class Unsafe
> [ERROR]   location: class 
> org.apache.hadoop.io.FastByteComparisons.LexicographicalComparerHolder.UnsafeComparer
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/SignalLogger.java:[50,39]
>  cannot find symbol
> [ERROR]   symbol:   class Signal
> [ERROR]   location: class org.apache.hadoop.util.SignalLogger.Handler
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/SignalLogger.java:[50,21]
>  cannot find symbol
> [ERROR]   symbol:   variable Signal
> [ERROR]   location: class org.apache.hadoop.util.SignalLogger.Handler
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/SignalLogger.java:[58,5]
>  method does not override or implement a method from a supertype
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/service/launcher/IrqHandler.java:[92,20]
>  cannot find symbol
> [ERROR]   symbol:   class Signal
> [ERROR]   location: class org.apache.hadoop.service.launcher.IrqHandler
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/service/launcher/IrqHandler.java:[93,7]
>  cannot find symbol
> [ERROR]   symbol:   variable Signal
> [ERROR]   location: class org.apache.hadoop.service.launcher.IrqHandler
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/service/launcher/IrqHandler.java:[113,5]
>  cannot find symbol
> [ERROR]   symbol:   variable Signal
> [ERROR]   location: class org.apache.hadoop.service.launcher.IrqHandler
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/service/launcher/IrqHandler.java:[125,3]
>  method does not override or implement a method from a supertype
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/nativeio/NativeIO.java:[901,17]
>  cannot find symbol
> [ERROR]   symbol:   class Unsafe
> [ERROR]   location: class org.apache.hadoop.io.nativeio.NativeIO
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/nativeio/NativeIO.java:[903,7]
>  cannot find symbol
> [ERROR]   symbol:   class Unsafe
> [ERROR]   location: class org.apache.hadoop.io.nativeio.NativeIO
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/nativeio/NativeIO.java:[903,24]
>  cannot find symbol
> [ERROR]   symbol:   class Unsafe
> [ERROR]   location: class org.apache.hadoop.io.nativeio.NativeIO
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/FastByteComparisons.java:[140,22]
>  cannot find symbol
> [ERROR]   symbol:   class Unsafe
> [ERROR]   location: class 
> org.apache.hadoop.io.FastByteComparisons.LexicographicalComparerHolder.UnsafeComparer
> [ERROR] 
> /hadoop/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/FastByteComparisons.java:[145,29]
>  cannot find symbol
> [ERROR]   symbol: class Unsafe
> [ERROR] -> [Help 1]
> [ERROR] 
> [ERROR] To see the full stack trace of the errors, re-run Maven with the -e 
> switch.
> [ERROR] Re-run Maven using the -X switch to enable full debug logging.
> [ERROR] 
> [ERROR] For more information about the errors and possible solutions, please 
> read the following articles:
> [ERROR] [Help 1] 
> http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
> [ERROR] 
> [ERROR] After correcting the problems, you can resume the build with the 
> command
> [ERROR]   mvn <args> -rf :hadoop-common
> {code}
> related jira: https://issues.apache.org/jira/browse/HADOOP-19298
>  
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org

Reply via email to