提交 c150c15d 编写于 作者: A alanb

6950927: Testcase failure sun/management/jmxremote/bootstrap/JvmstatCountersTest.java

Reviewed-by: dholmes, dcubed
上级 7dd1dbb8
...@@ -37,6 +37,8 @@ import java.util.Properties; ...@@ -37,6 +37,8 @@ import java.util.Properties;
* Linux implementation of HotSpotVirtualMachine * Linux implementation of HotSpotVirtualMachine
*/ */
public class LinuxVirtualMachine extends HotSpotVirtualMachine { public class LinuxVirtualMachine extends HotSpotVirtualMachine {
// temp directory for socket file
private static final String tmpdir = System.getProperty("java.io.tmpdir");
// Indicates if this machine uses the old LinuxThreads // Indicates if this machine uses the old LinuxThreads
static boolean isLinuxThreads; static boolean isLinuxThreads;
...@@ -260,7 +262,7 @@ public class LinuxVirtualMachine extends HotSpotVirtualMachine { ...@@ -260,7 +262,7 @@ public class LinuxVirtualMachine extends HotSpotVirtualMachine {
// Return the socket file for the given process. // Return the socket file for the given process.
// Checks working directory of process for .java_pid<pid>. If not // Checks working directory of process for .java_pid<pid>. If not
// found it looks in /tmp. // found it looks in temp directory.
private String findSocketFile(int pid) { private String findSocketFile(int pid) {
// First check for a .java_pid<pid> file in the working directory // First check for a .java_pid<pid> file in the working directory
// of the target process // of the target process
...@@ -268,20 +270,17 @@ public class LinuxVirtualMachine extends HotSpotVirtualMachine { ...@@ -268,20 +270,17 @@ public class LinuxVirtualMachine extends HotSpotVirtualMachine {
String path = "/proc/" + pid + "/cwd/" + fn; String path = "/proc/" + pid + "/cwd/" + fn;
File f = new File(path); File f = new File(path);
if (!f.exists()) { if (!f.exists()) {
// Not found, so try /tmp // Not found, so try temp directory
path = "/tmp/" + fn; f = new File(tmpdir, fn);
f = new File(path); path = f.exists() ? f.getPath() : null;
if (!f.exists()) {
return null; // not found
}
} }
return path; return path;
} }
// On Solaris/Linux a simple handshake is used to start the attach mechanism // On Solaris/Linux a simple handshake is used to start the attach mechanism
// if not already started. The client creates a .attach_pid<pid> file in the // if not already started. The client creates a .attach_pid<pid> file in the
// target VM's working directory (or /tmp), and the SIGQUIT handler checks // target VM's working directory (or temp directory), and the SIGQUIT handler
// for the file. // checks for the file.
private File createAttachFile(int pid) throws IOException { private File createAttachFile(int pid) throws IOException {
String fn = ".attach_pid" + pid; String fn = ".attach_pid" + pid;
String path = "/proc/" + pid + "/cwd/" + fn; String path = "/proc/" + pid + "/cwd/" + fn;
...@@ -289,8 +288,7 @@ public class LinuxVirtualMachine extends HotSpotVirtualMachine { ...@@ -289,8 +288,7 @@ public class LinuxVirtualMachine extends HotSpotVirtualMachine {
try { try {
f.createNewFile(); f.createNewFile();
} catch (IOException x) { } catch (IOException x) {
path = "/tmp/" + fn; f = new File(tmpdir, fn);
f = new File(path);
f.createNewFile(); f.createNewFile();
} }
return f; return f;
......
...@@ -38,6 +38,11 @@ import java.util.Properties; ...@@ -38,6 +38,11 @@ import java.util.Properties;
* Solaris implementation of HotSpotVirtualMachine. * Solaris implementation of HotSpotVirtualMachine.
*/ */
public class SolarisVirtualMachine extends HotSpotVirtualMachine { public class SolarisVirtualMachine extends HotSpotVirtualMachine {
// Use /tmp instead of /var/tmp on Solaris as /tmp is the default used by
// HotSpot when the property is not set on the command line.
private static final String tmpdir1 = System.getProperty("java.io.tmpdir");
private static final String tmpdir =
(tmpdir1.equals("/var/tmp") || tmpdir1.equals("/var/tmp/")) ? "/tmp" : tmpdir1;
// door descriptor; // door descriptor;
private int fd = -1; private int fd = -1;
...@@ -187,7 +192,7 @@ public class SolarisVirtualMachine extends HotSpotVirtualMachine { ...@@ -187,7 +192,7 @@ public class SolarisVirtualMachine extends HotSpotVirtualMachine {
} }
// The door is attached to .java_pid<pid> in the target VM's working // The door is attached to .java_pid<pid> in the target VM's working
// directory or /tmp. // directory or temporary directory.
private int openDoor(int pid) throws IOException { private int openDoor(int pid) throws IOException {
// First check for a .java_pid<pid> file in the working directory // First check for a .java_pid<pid> file in the working directory
// of the target process // of the target process
...@@ -196,7 +201,7 @@ public class SolarisVirtualMachine extends HotSpotVirtualMachine { ...@@ -196,7 +201,7 @@ public class SolarisVirtualMachine extends HotSpotVirtualMachine {
try { try {
fd = open(path); fd = open(path);
} catch (FileNotFoundException fnf) { } catch (FileNotFoundException fnf) {
path = "/tmp/" + fn; path = tmpdir + "/" + fn;
fd = open(path); fd = open(path);
} }
...@@ -213,8 +218,8 @@ public class SolarisVirtualMachine extends HotSpotVirtualMachine { ...@@ -213,8 +218,8 @@ public class SolarisVirtualMachine extends HotSpotVirtualMachine {
// On Solaris/Linux a simple handshake is used to start the attach mechanism // On Solaris/Linux a simple handshake is used to start the attach mechanism
// if not already started. The client creates a .attach_pid<pid> file in the // if not already started. The client creates a .attach_pid<pid> file in the
// target VM's working directory (or /tmp), and the SIGQUIT handler checks // target VM's working directory (or temporary directory), and the SIGQUIT
// for the file. // handler checks for the file.
private File createAttachFile(int pid) throws IOException { private File createAttachFile(int pid) throws IOException {
String fn = ".attach_pid" + pid; String fn = ".attach_pid" + pid;
String path = "/proc/" + pid + "/cwd/" + fn; String path = "/proc/" + pid + "/cwd/" + fn;
...@@ -222,8 +227,7 @@ public class SolarisVirtualMachine extends HotSpotVirtualMachine { ...@@ -222,8 +227,7 @@ public class SolarisVirtualMachine extends HotSpotVirtualMachine {
try { try {
f.createNewFile(); f.createNewFile();
} catch (IOException x) { } catch (IOException x) {
path = "/tmp/" + fn; f = new File(tmpdir, fn);
f = new File(path);
f.createNewFile(); f.createNewFile();
} }
return f; return f;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册