java.lang.RuntimeException: ERROR: Failed to recover corrupt cache entry
Asked Answered
Q

2

7

I just had this error message from one of my users. (IE8, Java 1.6.20 ). It is from an applet which receives instructions from Javascript and executes certain processes on the client.

RangeError
java.lang.RuntimeException: ERROR: Failed to recover corrupt cache entry
at com.sun.deploy.cache.CacheEntry.recover
at com.sun.deploy.cache.CacheEntry.getSignerMap
at com.sun.deploy.cache.CachedJarFile.getSignerMap
at com.sun.deploy.cache.CachedJarFile.access$100
....

Any iddeas what could be causing this?

Quathlamba answered 16/7, 2010 at 7:43 Comment(4)
I have the same problem with Java 1.7.Canopy
Same problem with Java 1.6, update 29Spinoff
A bit more info: This happens over webstart and clearing the cache did not help. Also, it seems to be reported again here: forums.oracle.com/forums/thread.jspa?messageID=10114803Spinoff
Yeah, I'm seeing the same thing and it also does not appear to be the bug that Stephen C references.Horror
C
1

It might be this bug. If so the workaround would appear to be to clear the java cache and try again.

Caporetto answered 16/7, 2010 at 9:28 Comment(0)
M
0

I have experienced this problem at java1.8_0.31 and Only workaround I found so far that put packed jars (pack.gz) to same directory with your jar(s). When tracing the servlet i see that

JnlpDownloadServlet(3): Request: /MyWeb/signed.jnlp
JnlpDownloadServlet(3): User-Agent: JNLP/1.7.0 javaws/11.31.2.13 (<internal>) Java/1.8.0_31
JnlpDownloadServlet(4): DownloadRequest[path=/signed.jnlp encoding=gzip isPlatformRequest=false]
JnlpDownloadServlet(4): Basic Protocol lookup
JnlpDownloadServlet(4): JnlpResource: JnlpResource[WAR Path: /signed.jnlp lastModified=Wed Feb 11 09:13:42 EET 2015]]
JnlpDownloadServlet(3): Resource returned: /signed.jnlp
JnlpDownloadServlet(4): SupportQuery in Href: true
JnlpDownloadServlet(4): lastModified: 1423638822000 Wed Feb 11 09:13:42 EET 2015
JnlpDownloadServlet(3): Request: /MyWeb/GUIJars/signed/main.jar?version-id=1.101
JnlpDownloadServlet(3): User-Agent: JNLP/1.7.0 javaws/11.31.2.13 (<internal>) Java/1.8.0_31
JnlpDownloadServlet(4): DownloadRequest[path=/GUIJars/signed/main.jar encoding=pack200-gzip,gzip query=version-id=1.101 version=1.101 isPlatformRequest=false]
JnlpDownloadServlet(4): Version-based/Extension based lookup
JnlpDownloadServlet(4): JnlpResource: JnlpResource[WAR Path: /GUIJars/signed/main__V1.101.jar versionId=1.101 name=main.jar lastModified=Fri Feb 13 16:28:36 EET 2015] returnVersionId=1.101]
JnlpDownloadServlet(3): Resource returned: /GUIJars/signed/main__V1.101.jar
JnlpDownloadServlet(4): Real resource returned: JnlpResource[WAR Path: /GUIJars/signed/main__V1.101.jar versionId=1.101 name=main.jar lastModified=Fri Feb 13 16:28:36 EET 2015] returnVersionId=1.101]

And at client side when tracing log is shown that

network: ResponseCode for http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar?version-id=1.101 : 200
network: Encoding for http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar?version-id=1.101 : gzip
network: Server response: (length: -1, lastModified: Fri Feb 13 16:28:36 EET 2015, downloadVersion: 1.101, mimeType: application/java-archive)
network: Created version ID: 1.101
network: Created version ID: 1.101
network: Created version ID: 1.101
network: Cache entry not found [url: http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar, version: 1.101]
network: Downloading resource: http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar?version-id=1.101
    Content-Length: -1
    Content-Encoding: gzip
network: Wrote URL http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar?version-id=1.101 to File C:\myCache\MyWeb\6.0\33\5a0dab21-647c684d-1.101--temp
network: Disconnect connection to http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar?version-id=1.101
network: Cache: Enable a new CacheEntry: http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar
network: Downloaded http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar: C:\myCache\MyWeb\6.0\33\5a0dab21-647c684d-1.101-
cache: Adding MemoryCache entry: http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar
java.util.zip.ZipException: error in opening zip file
    at java.util.zip.ZipFile.open(Native Method)
    at java.util.zip.ZipFile.<init>(Unknown Source)
    at java.util.zip.ZipFile.<init>(Unknown Source)
    at java.util.jar.JarFile.<init>(Unknown Source)
    at java.util.jar.JarFile.<init>(Unknown Source)
    at com.sun.deploy.security.EnhancedJarVerifier.validate(Unknown Source)
    at com.sun.deploy.cache.CacheEntry.getJarSigningData(Unknown Source)
    at com.sun.deploy.cache.CacheEntry.getCodeSigners(Unknown Source)
    at com.sun.deploy.ref.CodeRef.getCodeSigners(Unknown Source)
    at com.sun.deploy.security.ruleset.RuleId.contains(Unknown Source)
    at com.sun.deploy.security.ruleset.DRSHelper.findRule(Unknown Source)
    at com.sun.deploy.security.ruleset.DeploymentRuleSet.getDRS(Unknown Source)
    at com.sun.deploy.security.ruleset.DeploymentRuleSet.findDRS(Unknown Source)
    at com.sun.javaws.jnl.LaunchDesc.getMainDeploymentRuleSet(Unknown Source)
    at com.sun.javaws.jnl.LaunchDesc.getMatchImpl(Unknown Source)
    at com.sun.javaws.jnl.LaunchDesc.getJREMatcher(Unknown Source)
    at com.sun.javaws.Launcher.prepareLaunchFile(Unknown Source)
    at com.sun.javaws.Launcher.prepareAllResources(Unknown Source)
    at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
    at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
    at com.sun.javaws.Launcher.launch(Unknown Source)
    at com.sun.javaws.Main.launchApp(Unknown Source)
    at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
    at com.sun.javaws.Main.access$000(Unknown Source)
    at com.sun.javaws.Main$1.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
cache: Trying to recover cache entry for http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar
cache: MemoryCache: removed entry http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar
network: Remove cache entry: http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar
network: Cache entry not found [url: http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar, version: 1.101]
java.lang.RuntimeException: ERROR: Recovery got null entry
    at com.sun.deploy.cache.CacheEntry.recover(Unknown Source)
    at com.sun.deploy.cache.CacheEntry.getJarSigningData(Unknown Source)
    at com.sun.deploy.cache.CacheEntry.getCodeSigners(Unknown Source)
    at com.sun.deploy.ref.CodeRef.getCodeSigners(Unknown Source)
    at com.sun.deploy.security.ruleset.RuleId.contains(Unknown Source)
    at com.sun.deploy.security.ruleset.DRSHelper.findRule(Unknown Source)
    at com.sun.deploy.security.ruleset.DeploymentRuleSet.getDRS(Unknown Source)
    at com.sun.deploy.security.ruleset.DeploymentRuleSet.findDRS(Unknown Source)
    at com.sun.javaws.jnl.LaunchDesc.getMainDeploymentRuleSet(Unknown Source)
    at com.sun.javaws.jnl.LaunchDesc.getMatchImpl(Unknown Source)
    at com.sun.javaws.jnl.LaunchDesc.getJREMatcher(Unknown Source)
    at com.sun.javaws.Launcher.prepareLaunchFile(Unknown Source)
    at com.sun.javaws.Launcher.prepareAllResources(Unknown Source)
    at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
    at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
    at com.sun.javaws.Launcher.launch(Unknown Source)
    at com.sun.javaws.Main.launchApp(Unknown Source)
    at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
    at com.sun.javaws.Main.access$000(Unknown Source)
    at com.sun.javaws.Main$1.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source) 

Client behaves coming plain jar file as packed and gziped jar. Maybe need to examine HTTP Header to why client do that.

Mammet answered 16/2, 2015 at 15:24 Comment(2)
Second solution is that in our case we don't use JnlpDownloadServlet and HTTP Server(IBM HTTP SERVER) apply gzip to plain jar file. We configure "do not apply gzip to jar request" and problem gone.Mammet
In my case, Apache was serving the jar files. And the SetOutputFilter DEFLATE was included in the Apache conf file. Adding an exception to that filter (SetEnvIfNoCase Request_URI \.jar$ no-gzip dont-vary) fixed my problem.Stricklin

© 2022 - 2024 — McMap. All rights reserved.