Michael Blow has submitted this change and it was merged.

Change subject: [NO ISSUE] Use RuntimeMXBean.getPid() when available
......................................................................


[NO ISSUE] Use RuntimeMXBean.getPid() when available

Change-Id: Ic2371171dfc01423921c2e2d04fbc68a38978f2e
Reviewed-on: https://asterix-gerrit.ics.uci.edu/3312
Integration-Tests: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Contrib: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Reviewed-by: Till Westmann <ti...@apache.org>
---
M 
hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/NodeControllerData.java
M 
hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/NodeRegistration.java
M 
hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/PidHelper.java
M 
hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/trace/Event.java
M 
hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/trace/Tracer.java
A 
hyracks-fullstack/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/PidHelperTest.java
6 files changed, 51 insertions(+), 10 deletions(-)

Approvals:
  Till Westmann: Looks good to me, approved
  Jenkins: Verified; ; Verified

Objections:
  Jenkins: Violations found



diff --git 
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/NodeControllerData.java
 
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/NodeControllerData.java
index c37acab..24a3e57 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/NodeControllerData.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/NodeControllerData.java
@@ -79,7 +79,7 @@
 
     private final Map<String, String> systemProperties;
 
-    private final int pid;
+    private final long pid;
 
     private final HeartbeatSchema hbSchema;
 
diff --git 
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/NodeRegistration.java
 
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/NodeRegistration.java
index 437b001..474bc0a 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/NodeRegistration.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/NodeRegistration.java
@@ -75,7 +75,7 @@
 
     private final NetworkAddress messagingPort;
 
-    private final int pid;
+    private final long pid;
 
     private final NodeCapacity capacity;
 
@@ -190,7 +190,7 @@
         return messagingPort;
     }
 
-    public int getPid() {
+    public long getPid() {
         return pid;
     }
 }
diff --git 
a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/PidHelper.java
 
b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/PidHelper.java
index 5a8edbd..46e77e3 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/PidHelper.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/PidHelper.java
@@ -21,6 +21,7 @@
 import java.lang.management.ManagementFactory;
 import java.lang.management.RuntimeMXBean;
 import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
 import org.apache.logging.log4j.Level;
@@ -34,11 +35,20 @@
     private PidHelper() {
     }
 
-    public static int getPid() {
+    public static long getPid() {
         return getPid(ManagementFactory.getRuntimeMXBean());
     }
 
-    public static int getPid(RuntimeMXBean runtimeMXBean) {
+    public static long getPid(RuntimeMXBean runtimeMXBean) {
+        // TODO: replace with direct invoke of getPid() once compatibility is 
at JDK 10 or higher
+        try {
+            Method getPidMethod = runtimeMXBean.getClass().getMethod("getPid");
+            return (Long) getPidMethod.invoke(runtimeMXBean);
+        } catch (NoSuchMethodException e) {
+            LOGGER.debug("ignoring exception trying to find getPid() (expected 
pre-JDK 10)", e);
+        } catch (IllegalAccessException | InvocationTargetException e) {
+            LOGGER.debug("ignoring exception trying to execute getPid()", e);
+        }
         try {
             Field jvmField = runtimeMXBean.getClass().getDeclaredField("jvm");
             jvmField.setAccessible(true);
diff --git 
a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/trace/Event.java
 
b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/trace/Event.java
index b5fe3d3..b744198 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/trace/Event.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/trace/Event.java
@@ -28,14 +28,14 @@
     public final long cat;
     public final ITracer.Phase ph;
     public final long ts;
-    public final int pid;
+    public final long pid;
     public final long tid;
     public final ITracer.Scope scope;
     public final String args;
     public final TraceCategoryRegistry registry;
 
-    private Event(String name, long cat, ITracer.Phase ph, long ts, int pid, 
long tid, ITracer.Scope scope, String args,
-            TraceCategoryRegistry registry) {
+    private Event(String name, long cat, ITracer.Phase ph, long ts, long pid, 
long tid, ITracer.Scope scope,
+            String args, TraceCategoryRegistry registry) {
         this.name = name;
         this.cat = cat;
         this.ph = ph;
@@ -51,7 +51,7 @@
         return (System.nanoTime() - NANOTIME_DELTA_TO_EPOCH) / 1000;
     }
 
-    public static Event create(String name, long cat, ITracer.Phase ph, int 
pid, long tid, ITracer.Scope scope,
+    public static Event create(String name, long cat, ITracer.Phase ph, long 
pid, long tid, ITracer.Scope scope,
             String args, TraceCategoryRegistry registry) {
         return new Event(name, cat, ph, timestamp(), pid, tid, scope, args, 
registry);
     }
diff --git 
a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/trace/Tracer.java
 
b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/trace/Tracer.java
index 9019fdf..c1c38cf 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/trace/Tracer.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/trace/Tracer.java
@@ -44,7 +44,7 @@
     private long categories;
     private final TraceCategoryRegistry registry;
 
-    private static final int pid = PidHelper.getPid();
+    private static final long pid = PidHelper.getPid();
 
     public Tracer(String name, long categories, TraceCategoryRegistry 
registry) {
         final String traceLoggerName = Tracer.class.getName() + ".Traces." + 
name;
diff --git 
a/hyracks-fullstack/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/PidHelperTest.java
 
b/hyracks-fullstack/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/PidHelperTest.java
new file mode 100644
index 0000000..1a7984d
--- /dev/null
+++ 
b/hyracks-fullstack/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/PidHelperTest.java
@@ -0,0 +1,31 @@
+/*
+ * 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.hyracks.util;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class PidHelperTest {
+
+    @Test
+    public void testPidHelper() {
+        long pid = PidHelper.getPid();
+        Assert.assertTrue("positive non-zero pid (but was " + pid + ")", pid > 
0);
+    }
+}

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/3312
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ic2371171dfc01423921c2e2d04fbc68a38978f2e
Gerrit-PatchSet: 4
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Murtadha Hubail <mhub...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>

Reply via email to