6950927: Testcase failure sun/management/jmxremote/bootstrap/JvmstatCountersTest.java
Reviewed-by: dholmes, dcubed
--- a/jdk/src/solaris/classes/sun/tools/attach/LinuxVirtualMachine.java Fri May 28 12:10:14 2010 -0700
+++ b/jdk/src/solaris/classes/sun/tools/attach/LinuxVirtualMachine.java Wed Jun 02 09:29:39 2010 +0100
@@ -37,6 +37,8 @@
* Linux implementation of 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
static boolean isLinuxThreads;
@@ -260,7 +262,7 @@
// Return the socket file for the given process.
// 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) {
// First check for a .java_pid<pid> file in the working directory
// of the target process
@@ -268,20 +270,17 @@
String path = "/proc/" + pid + "/cwd/" + fn;
File f = new File(path);
if (!f.exists()) {
- // Not found, so try /tmp
- path = "/tmp/" + fn;
- f = new File(path);
- if (!f.exists()) {
- return null; // not found
- }
+ // Not found, so try temp directory
+ f = new File(tmpdir, fn);
+ path = f.exists() ? f.getPath() : null;
}
return path;
}
// 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
- // target VM's working directory (or /tmp), and the SIGQUIT handler checks
- // for the file.
+ // target VM's working directory (or temp directory), and the SIGQUIT handler
+ // checks for the file.
private File createAttachFile(int pid) throws IOException {
String fn = ".attach_pid" + pid;
String path = "/proc/" + pid + "/cwd/" + fn;
@@ -289,8 +288,7 @@
try {
f.createNewFile();
} catch (IOException x) {
- path = "/tmp/" + fn;
- f = new File(path);
+ f = new File(tmpdir, fn);
f.createNewFile();
}
return f;
--- a/jdk/src/solaris/classes/sun/tools/attach/SolarisVirtualMachine.java Fri May 28 12:10:14 2010 -0700
+++ b/jdk/src/solaris/classes/sun/tools/attach/SolarisVirtualMachine.java Wed Jun 02 09:29:39 2010 +0100
@@ -38,6 +38,11 @@
* Solaris implementation of 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;
private int fd = -1;
@@ -187,7 +192,7 @@
}
// 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 {
// First check for a .java_pid<pid> file in the working directory
// of the target process
@@ -196,7 +201,7 @@
try {
fd = open(path);
} catch (FileNotFoundException fnf) {
- path = "/tmp/" + fn;
+ path = tmpdir + "/" + fn;
fd = open(path);
}
@@ -213,8 +218,8 @@
// 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
- // target VM's working directory (or /tmp), and the SIGQUIT handler checks
- // for the file.
+ // target VM's working directory (or temporary directory), and the SIGQUIT
+ // handler checks for the file.
private File createAttachFile(int pid) throws IOException {
String fn = ".attach_pid" + pid;
String path = "/proc/" + pid + "/cwd/" + fn;
@@ -222,8 +227,7 @@
try {
f.createNewFile();
} catch (IOException x) {
- path = "/tmp/" + fn;
- f = new File(path);
+ f = new File(tmpdir, fn);
f.createNewFile();
}
return f;