Skip to content

Commit

Permalink
Merge pull request #339 from dmlloyd/pid-cache
Browse files Browse the repository at this point in the history
Cache current process handle
  • Loading branch information
dmlloyd authored Aug 29, 2024
2 parents a5ce4ec + fabe3bd commit 5da2994
Showing 1 changed file with 8 additions and 10 deletions.
18 changes: 8 additions & 10 deletions os/src/main/java/io/smallrye/common/os/Process.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@
* @author <a href="mailto:david.lloyd@redhat.com">David M. Lloyd</a>
*/
public final class Process {
private static final ProcessHandle current = doPrivileged((PrivilegedAction<ProcessHandle>) ProcessHandle::current);
private static final ProcessHandle.Info currentInfo = current.info();
private static final String name = doPrivileged((PrivilegedAction<String>) Process::computeProcessName);

private Process() {
}

Expand All @@ -39,14 +43,13 @@ private Process() {
* @return the process name (not {@code null})
*/
public static String getProcessName() {
return doPrivileged((PrivilegedAction<String>) Process::computeProcessName);
return name;
}

private static String computeProcessName() {
final ProcessHandle processHandle = ProcessHandle.current();
String processName = System.getProperty("jboss.process.name");
if (processName == null) {
processName = processHandle.info().command().orElse(null);
processName = currentInfo.command().orElse(null);
}
if (processName == null) {
processName = "<unknown>";
Expand All @@ -62,7 +65,7 @@ private static String computeProcessName() {
*/
@Deprecated(since = "2.4", forRemoval = true)
public static long getProcessId() {
return currentProcess().pid();
return current.pid();
}

/**
Expand All @@ -73,12 +76,7 @@ public static long getProcessId() {
*/
@Deprecated(since = "2.4", forRemoval = true)
public static ProcessInfo getCurrentProcess() {
return new ProcessInfo(currentProcess().pid(), getProcessName());
}

// do not make this public
private static ProcessHandle currentProcess() {
return doPrivileged((PrivilegedAction<ProcessHandle>) ProcessHandle::current);
return new ProcessInfo(current.pid(), getProcessName());
}

/**
Expand Down

0 comments on commit 5da2994

Please sign in to comment.