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>