Originally posted by Isomorphic
Announcement
Collapse
No announcement yet.
X
-
We don't have weblogic support readily available - we are just certifying/performance testing our app against their server.
And, being a java developer myself, I would like to see a line of code responsible for a leak - because it is your code that calls java APIs in a way that causes a file descriptor to leak under weblogic. In my books, the problem is 50/50 between smartclient and weblogic, so you are at least partially responsible. I.e., what exactly is that you do with List.ds.xml every request?
Then, I can see if anything pops up in google related to the code that is supposedly leaking descriptors...
Comment
-
?
No, it is our code that calls WebLogic code in such a way that WebLogic leaks, but other engines do not.
As best as we can tell, the particular API (we told you yesterday) is lastModified() - since you are using container IO, as previously described, this is a call on the java.net.URL returned by servletContext.getResource().
Comment
-
We've confirmed this as a WebLogic bug - lastModified() in fact leaks a file descriptor if called repeatedly on a URLConnection received via servletContext.getResource().openConnection(), even if the file is always the same.
A moderately horrific workaround of urlConnection.getOutputStream().close() after the lastModified() call fixes the problem - we're unsure of the performance consequences of this and we think it would be better to get a patch for WebLogic if one is available.
Comment
-
Thanks a lot for finding this out! Did you just reproduce the problem? Or there is an official weblogic bug that I can refer to? This way I can track a bug and see if it gets fixed in later release.
What I don't understand is why you need to check if this file was changed, it is deployed as a part of war file and will never change between container restarts.
Comment
-
From application point of view, List.ds.xml is never changed, it is an internal smartclient file and can only be changed as new version of smartclient arrives. But this means a new version of our application that packages smartclient has arrived as well and has to be redeployed anyways.
Not sure what is the use case this file can change after deployment and between restarts. Only debugging of smartclient itself comes to mind.
Comment
-
Originally posted by jimmi1977From application point of view, List.ds.xml is never changed, it is an internal smartclient file and can only be changed as new version of smartclient arrives. But this means a new version of our application that packages smartclient has arrived as well and has to be redeployed anyways.
Not sure what is the use case this file can change after deployment and between restarts. Only debugging of smartclient itself comes to mind.
Comment
-
In looking into this, we found and fixed a flaw that made the staleness checks too frequent - the available performance gain from completely disabling all such checks or hardcoding certain files as immutable would no longer even be measurable.
Also, we're uncomfortable with providing a flag to turn off staleness checking entirely - this is a uniform codepath accommodating many types of loading, including loading from true HTTP URLs.
See what you can get out of WebLogic - you're much better off with this fixed in the platform. If it's a no-go we can look at implementing WebLogic workarounds.
Comment
Comment