java.util.prefs.Preferences behaviour different in Solaris & WindowsNT jdk14 b46
When executed simultaneously:
----------------------------
java Test01 executed in window01
java Test02 executed in window02
In Solaris Test01 passes.
In WindowsNT java.lang.InternalError thrown.
Test01.java , Test02.java
and resultsof java Test01 on WindowsNT are below:
----------------------------------------Test01--------
import java.util.prefs.*;
import java.util.*;
import java.io.*;
public class Test01 {
static final int TOTAL = 80000;
public static void main(String[] args) throws Exception {
Preferences userRoot = Preferences.userRoot();
Preferences N1 = userRoot.node("N1");
try {
N1.removeNode();
userRoot.flush();
N1 = userRoot.node("N1");
Preferences N2 =N1.node("N2");
String value = "valuejvm1";
String key = "keyjvm1";
for (int i =0; i<TOTAL; i++) {
String newKey = key + i;
String newValue = value + i;
N2.put(newKey,newValue);
//System.out.println(" In put mode i =" + i);
}
System.out.println("Test01**** Pass");
} catch(Exception e) {
System.out.println("Exception thrown in Test01 Fail" + e);
}
}
}
------------------------------------Test02--------------------------------
import java.util.prefs.*;
import java.util.*;
public class Test02 {
public static void main(String[] args) throws Exception {
Preferences userRoot = Preferences.userRoot();
Preferences N1 = userRoot.node("N1");
Preferences N2 = N1.node("N2");
try {
N2.removeNode();
userRoot.flush();
System.out.println("Test02$$$$ Pass");
} catch(Exception e) {
System.out.println("Exception thrown in Test02 Fail" + e);
}
}
}
--------------windows Result---------------------
H:\merlin\prefsBug\bug>java -version
java version "1.4.0-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-beta-b46)
Java HotSpot(TM) Client VM (build B45, mixed mode)
H:\merlin\prefsBug\bug>java Test01
Exception in thread "main" java.lang.InternalError: Could not open windows registry node Software\JavaSoft\Prefs\/N1\/N2 at root 0x80000001. Windows RegOpenKey(...) returned error code 2.
at java.util.prefs.WindowsPreferences.openKey(../../../src/win32/classes/java/util/prefs/WindowsPreferences.java:269)
at java.util.prefs.WindowsPreferences.openKey(../../../src/win32/classes/java/util/prefs/WindowsPreferences.java:251)
at java.util.prefs.WindowsPreferences.putSpi(../../../src/win32/classes/java/util/prefs/WindowsPreferences.java:356)
at java.util.prefs.AbstractPreferences.put(../../../src/share/classes/java/util/prefs/AbstractPreferences.java:157)
at Test01.main(Test01.java:23)
-------------------------------------------------------------------------
When executed simultaneously:
----------------------------
java Test01 executed in window01
java Test02 executed in window02
In Solaris Test01 passes.
In WindowsNT java.lang.InternalError thrown.
Test01.java , Test02.java
and resultsof java Test01 on WindowsNT are below:
----------------------------------------Test01--------
import java.util.prefs.*;
import java.util.*;
import java.io.*;
public class Test01 {
static final int TOTAL = 80000;
public static void main(String[] args) throws Exception {
Preferences userRoot = Preferences.userRoot();
Preferences N1 = userRoot.node("N1");
try {
N1.removeNode();
userRoot.flush();
N1 = userRoot.node("N1");
Preferences N2 =N1.node("N2");
String value = "valuejvm1";
String key = "keyjvm1";
for (int i =0; i<TOTAL; i++) {
String newKey = key + i;
String newValue = value + i;
N2.put(newKey,newValue);
//System.out.println(" In put mode i =" + i);
}
System.out.println("Test01**** Pass");
} catch(Exception e) {
System.out.println("Exception thrown in Test01 Fail" + e);
}
}
}
------------------------------------Test02--------------------------------
import java.util.prefs.*;
import java.util.*;
public class Test02 {
public static void main(String[] args) throws Exception {
Preferences userRoot = Preferences.userRoot();
Preferences N1 = userRoot.node("N1");
Preferences N2 = N1.node("N2");
try {
N2.removeNode();
userRoot.flush();
System.out.println("Test02$$$$ Pass");
} catch(Exception e) {
System.out.println("Exception thrown in Test02 Fail" + e);
}
}
}
--------------windows Result---------------------
H:\merlin\prefsBug\bug>java -version
java version "1.4.0-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-beta-b46)
Java HotSpot(TM) Client VM (build B45, mixed mode)
H:\merlin\prefsBug\bug>java Test01
Exception in thread "main" java.lang.InternalError: Could not open windows registry node Software\JavaSoft\Prefs\/N1\/N2 at root 0x80000001. Windows RegOpenKey(...) returned error code 2.
at java.util.prefs.WindowsPreferences.openKey(../../../src/win32/classes/java/util/prefs/WindowsPreferences.java:269)
at java.util.prefs.WindowsPreferences.openKey(../../../src/win32/classes/java/util/prefs/WindowsPreferences.java:251)
at java.util.prefs.WindowsPreferences.putSpi(../../../src/win32/classes/java/util/prefs/WindowsPreferences.java:356)
at java.util.prefs.AbstractPreferences.put(../../../src/share/classes/java/util/prefs/AbstractPreferences.java:157)
at Test01.main(Test01.java:23)
-------------------------------------------------------------------------