Java Solaris Communities Sun Store Join SDN My Profile Why Join?
 
Bug Database
Bug Detail
Quick Lists
Top 25 Bugs
Top 25 RFE's
Recently Closed Bugs
Printable Page Printable Page


Bug Database
Bug ID: 6688675
Votes 0
Synopsis IBM applet is very slow on JRE6 due to repeated JAR file downloads w/ no HTTP header 'last-modified'
Category java_deployment:download
Reported Against
Release Fixed 7(b64), 6u13-rev(b07) (Bug ID:2172272) , 6u14(b06) (Bug ID:2176412)
State 10-Fix Delivered, bug
Priority: 2-High
Related Bugs 6763369 , 6842992 , 4972238 , 6209058
Submit Date 15-APR-2008
Description
 customer '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]

%
Posted Date : 2008-04-15 11:40:17.0

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.
Posted Date : 2009-01-16 09:29:17.0
Work Around
- Switch off the Java deployment cache for running this applet.
- Don't use JRE 6.
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.
Posted Date : 2009-05-20 16:08:16.0

The fix for this (uncverified) was delivered into JDK7 b64 as part of:
6797688: Umbrella: Merge all JDK 6u4 - 6u12 deployment code into JDK7
Posted Date : 2009-07-22 17:28:52.0
Comments
  
  Include a link with my name & email   


PLEASE NOTE: JDK6 is formerly known as Project Mustang