[#5720] Static initializers can cause deadlock
Motivation: SystemPropertyUtil requires InternalLoggerFactory requires ThreadLocalRandom requires SystemPropertyUtil. This can lead to a dead-lock. Modifications: Ensure ThreadLocalRandom does not require SystemPropertyUtil during initialization. Result: No more deadlock possible.
This commit is contained in:
parent
b5bd2ea66d
commit
8d9ca3c3c7
@ -77,8 +77,13 @@ public final class ThreadLocalRandom extends Random {
|
||||
long initialSeedUniquifier = ThreadLocalRandom.initialSeedUniquifier;
|
||||
if (initialSeedUniquifier == 0) {
|
||||
// Use the system property value.
|
||||
ThreadLocalRandom.initialSeedUniquifier = initialSeedUniquifier =
|
||||
SystemPropertyUtil.getLong("io.netty.initialSeedUniquifier", 0);
|
||||
ThreadLocalRandom.initialSeedUniquifier = initialSeedUniquifier = AccessController.doPrivileged(
|
||||
new PrivilegedAction<Long>() {
|
||||
@Override
|
||||
public Long run() {
|
||||
return Long.getLong("io.netty.initialSeedUniquifier", 0);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Otherwise, generate one.
|
||||
@ -86,7 +91,7 @@ public final class ThreadLocalRandom extends Random {
|
||||
boolean secureRandom = AccessController.doPrivileged(new PrivilegedAction<Boolean>() {
|
||||
@Override
|
||||
public Boolean run() {
|
||||
return SystemPropertyUtil.getBoolean("java.util.secureRandomSeed", false);
|
||||
return Boolean.getBoolean("java.util.secureRandomSeed");
|
||||
}
|
||||
});
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user