Skip to content

Commit ff37909

Browse files
committed
GH-14 Allow multiple VisualVM users share the same temp dir
1 parent fb97d2b commit ff37909

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

visualvm/application/src/com/sun/tools/visualvm/application/Application.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ public String toString() {
137137
}
138138

139139

140-
// <system_temp>/visualvm.dat/<application_id>
140+
// <system_temp>/visualvm_<username>.dat/<application_id>
141141
@Override
142142
protected Storage createStorage() {
143143
File directory = new File(Storage.getTemporaryStorageDirectoryString() +

visualvm/core/src/com/sun/tools/visualvm/core/datasource/Storage.java

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import java.io.FileOutputStream;
3434
import java.io.InputStream;
3535
import java.io.OutputStream;
36+
import java.text.MessageFormat;
3637
import java.util.Properties;
3738
import java.util.logging.Level;
3839
import java.util.logging.Logger;
@@ -46,6 +47,7 @@ public final class Storage {
4647

4748
private static final String VISUALVM_TMP_DIR = System.getProperty("visualvm.tmpdir"); // NOI18N
4849
private static final String TEMPORARY_STORAGE_DIRNAME = "visualvm.dat"; // NOI18N
50+
private static final String TEMPORARY_STORAGE_DIRNAME_EX = "visualvm_{0}.dat"; // NOI18N
4951
private static final String PERSISTENT_STORAGE_DIRNAME = "repository"; // NOI18N
5052

5153
private static final Logger LOGGER = Logger.getLogger(Storage.class.getName());
@@ -242,10 +244,24 @@ public synchronized void deleteCustomPropertiesStorage() {
242244
public static String getTemporaryStorageDirectoryString() {
243245
synchronized(temporaryStorageDirectoryStringLock) {
244246
if (temporaryStorageDirectoryString == null) {
245-
String tmpDir = VISUALVM_TMP_DIR != null ? VISUALVM_TMP_DIR :
246-
System.getProperty("java.io.tmpdir"); // NOI18N
247-
temporaryStorageDirectoryString = new File(tmpDir).getAbsolutePath()
248-
+ File.separator + TEMPORARY_STORAGE_DIRNAME;
247+
if (VISUALVM_TMP_DIR != null) {
248+
temporaryStorageDirectoryString = new File(VISUALVM_TMP_DIR).getAbsolutePath() +
249+
File.separator + TEMPORARY_STORAGE_DIRNAME;
250+
} else {
251+
String tmpDir = System.getProperty("java.io.tmpdir"); // NOI18N
252+
String storageDir;
253+
254+
String userDir = System.getProperty("user.home"); // NOI18N
255+
if (userDir != null && !userDir.isEmpty()) {
256+
String userName = new File(userDir).getName();
257+
storageDir = MessageFormat.format(TEMPORARY_STORAGE_DIRNAME_EX, userName);
258+
} else {
259+
storageDir = TEMPORARY_STORAGE_DIRNAME;
260+
}
261+
262+
temporaryStorageDirectoryString = new File(tmpDir).getAbsolutePath() +
263+
File.separator + storageDir;
264+
}
249265
}
250266
return temporaryStorageDirectoryString;
251267
}

0 commit comments

Comments
 (0)