Duplicate :
|
|
Duplicate :
|
|
Duplicate :
|
|
Duplicate :
|
|
Relates :
|
|
Relates :
|
The problem is caused by the security fix for : https://bugs.openjdk.java.net/browse/JDK-8079072 In that fix we stopped reading in from the cached index file the following fields: validationTimeStamp, knownToBeSigned, blacklistValidationTime, certExpirationDate, classVerificationStatus, hasOnlySignedEntries, hasSingleCodeSource, hasMissingSignedEntries, and trustedLibrariesValidationTime, and these are re-computed on every run. Now it was originally thought that this performance degradation was caused by the time needed to recompute these values, but that proved to be negligible. The problem is that after they are re-computed, there are places which will re-write the index file with the changed values. the one place in CacheEntry.readIndexFile(): > if (hasSigningInfo() && > ((section4Pre15Length == 0 && enhancedJarAccess) || > BlackList.getInstance().hasBeenModifiedSince(blacklistValidationTime) || > TrustedLibraries.hasBeenModifiedSince(trustedLibrariesValidationTime)) && > (!Cache.isSystemCacheEntry(this) || Environment.isSystemCacheMode())) { > > raf.close(); > raf = null; > saveUpgrade(); was comparing against blacklistValidationTime and trustedLibrariesValidationTime (which are no longer reasons to write the index, since these values in the cache are ignored). just changing that to: > if (hasSigningInfo() && > ((section4Pre15Length == 0 && enhancedJarAccess) && > (!Cache.isSystemCacheEntry(this) || Environment.isSystemCacheMode())) { > > raf.close(); > raf = null; > saveUpgrade();
|