United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-6688675 IBM applet is very slow on JRE6 due to repeated JAR file downloads w/ no HTTP header 'last-modified'
JDK-6688675 : IBM applet is very slow on JRE6 due to repeated JAR file downloads w/ no HTTP header 'last-modified'

Details
Type:
Bug
Submit Date:
2008-04-15
Status:
Resolved
Updated Date:
2010-07-29
Project Name:
JDK
Resolved Date:
2009-07-22
Component:
deploy
OS:
windows_xp
Sub-Component:
deployment_toolkit
CPU:
x86
Priority:
P2
Resolution:
Fixed
Affected Versions:
6
Fixed Versions:

Related Reports
Backport:
Backport:
Relates:
Relates:
Relates:

Sub Tasks

Description
IBM's Tivoli Storage Manager (TSM) client software is very slow due to 
repeated JAR file downloads when the server does not provide HTTP header 
'last-modified'.
With TSM there is a native client and a web client provided. The web 
client is a Java applet, which consists of only one jar file "dsm.jar". 
This applet is having the problem.


1. behavior
-----------
I used TSM web client Version 5, Release 4, Level 1.0.

1.1  JRE 1.4.2 or JRE 1.5.0
---------------------------
Using the TSM web client on JRE 1.4.2_16 or on 1.5.0_15 shows repeated 
downloads of its jar file of "dsm.jar". For only launching the applet, 
16, resp, 17 attempts were counted, resulting in a message about not 
caching the file each time:

network: Connecting http://<tsm-srv>:1581/dsm.jar with proxy=HTTP @ <proxy-server>:8080
network: Connecting http://<tsm-srv>:1581/dsm.jar with cookie "SUN_ID=<wiped>:52987908580279"
basic: Last modified time and/or expiration value is not available.  Jar file will not be cached. 


1.2  JRE 1.6.0
--------------
On JRE 1.6.0 the file "dsm.jar" is reported to be downloaded 18 times:

network: Connecting http://<tsm-srv>:1581/dsm.jar with proxy=HTTP @ <proxy-server>:8080 

with the following message associated:

network: Cache entry not found [url: http://<tsm-srv>:1581/dsm.jar, version: null] 


1.3  Performance
----------------
 It was measured the time from invoking a GUI function until 
 the GUI fully responded by entirely having popped up the 
 appropriate window.

 The cache was switched off by:
 1.5.0:  Java (TM) Control Panel -> General -> Settings 
  -> View Applets -> Options -> uncheck "Enable Caching"

 1.6.0:  Java Control Panel -> General -> Settings
  uncheck "Keep temporary files on my computer" 


 1.5.0_15  / time [sec]        w/o cache   w/ cache
 Launch of applet               10          20
 File->Connection Information    1           2
 Restore button                  4          20
 1.6.0_06  / time [sec]        w/o cache   w/ cache
 Launch of applet               12         146 (= 2:26 min)
 File->Connection Information    2           7
 Restore button                  3         404 (= 6:44 min)

 So, there is factor 7 (146/20) for only launching the applet, 
 and factor 20 (404/20) for popping up a dialogue window for
 one of the applet's basic functions.


1.4  TSM Web Server
-------------------
1.4.1 HTTP/1.0
--------------
 The TSM Web Server appears to be sending HTTP/1.0:

% telnet <tsm-srv> 1581
Trying [wiped]...
Connected to <tsm-srv>.
Escape character is '^]'.
HEAD / HTTP/1.1

HTTP/1.0 501 Not Implemented
Server: TSM_HTTP/0.1
Content-type: text/html
[ ... ] 

1.4.2 no 'last-modified' header
-------------------------------
% wget -S --server-response http://<tsm-srv>:1581/dsm.jar
--15:23:22--  http://<tsm-srv>:1581/dsm.jar
           => `dsm.jar'
Resolving <proxy-server>... [wiped], [wiped]
Connecting to <proxy-server>|[wiped]|:8080... connected.
Proxy request sent, awaiting response...
  HTTP/1.1 200 OK
  Date: Mon, 14 Apr 2008 13:23:22 GMT
  Content-length: 2102631
  Server: TSM_HTTP/0.1
  Via: 1.0 proxy-proxy
  Proxy-agent: Sun-Java-System-Web-Proxy-Server/4.0
  Connection: close
Length: 2,102,631 (2.0M)

100%[======================================================================>] 2,102,631    355.64K/s    ETA 00:00

15:23:29 (323.94 KB/s) - `dsm.jar' saved [2102631/2102631]

%
1.5 dependency on http proxy server
-----------------------------------
It was not clear from the description so far, that the issue is not only
dependent on the JRE but also on the http proxy server.

I used three different http proxy servers and compared these against the
use of no proxy server. 

I measured TSM applet download time in seconds from URL 
http://10.16.50.171:1581/
depending on JRE and depending on http proxy server.
IE 6 mit Classic Plug-in auf JRE 1.4.2_08
-----------------------------------------
 proxy / time [sec]      cache enabled  cache disabled
 no proxy                 34-34          34-34
 uk                       37-38          35-35
 central                  44-61          41-42
 sfbay                    59-59          45-45


IE 6 mit Classic Plug-in auf JRE 1.5.0_17
-----------------------------------------
 proxy / time [sec]      cache enabled  cache disabled
 no proxy                 35-36          33-36
 uk                       39-40          36-37
 central                  55-55          41-43
 sfbay                    60-63          45-46


IE 6 mit Classic Plug-in auf JRE 1.6.0_07
-----------------------------------------
 proxy / time [sec]      cache enabled  cache disabled
 no proxy                 38-40          33-35
 uk                       61-65          36-36
 uk                       61-62          36-36
 central                 186-187         42-42
 sfbay                   214-215         45-45


 We can see the following:
 - The use of a http proxy server has an effect on start-up time regardless 
   if cache was enabled or not.
 - The effect is more visible when cache is enabled compared to cache 
   disabled.
 - The effect of use of a http proxy server is very prominent, when using 
   JRE 1.6 and having cache enabled.

                                    

Comments
WORK AROUND

- Switch off the Java deployment cache for running this applet.
- Don't use JRE 6.
                                     
2008-04-15
EVALUATION

When porting this fix to JDK 7, the fix for 6842992 must be ported due to the original fix of this creates a regression 6842992.
                                     
2009-05-20
EVALUATION

The fix for this (uncverified) was delivered into JDK7 b64 as part of:
6797688: Umbrella: Merge all JDK 6u4 - 6u12 deployment code into JDK7
                                     
2009-07-22



Hardware and Software, Engineered to Work Together