You can subscribe to this list here.
| 2003 |
Jan
|
Feb
(55) |
Mar
(100) |
Apr
(203) |
May
(330) |
Jun
(190) |
Jul
(302) |
Aug
(323) |
Sep
(197) |
Oct
(245) |
Nov
(490) |
Dec
(330) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2004 |
Jan
(194) |
Feb
(400) |
Mar
(416) |
Apr
(415) |
May
(359) |
Jun
(381) |
Jul
(491) |
Aug
(311) |
Sep
(291) |
Oct
(273) |
Nov
(355) |
Dec
(266) |
| 2005 |
Jan
(306) |
Feb
(303) |
Mar
(520) |
Apr
(346) |
May
(255) |
Jun
(221) |
Jul
(171) |
Aug
(247) |
Sep
(147) |
Oct
(125) |
Nov
(165) |
Dec
(65) |
| 2006 |
Jan
(90) |
Feb
(53) |
Mar
(121) |
Apr
(103) |
May
(113) |
Jun
(103) |
Jul
(104) |
Aug
(67) |
Sep
(78) |
Oct
(82) |
Nov
(78) |
Dec
(70) |
| 2007 |
Jan
(77) |
Feb
(76) |
Mar
(63) |
Apr
(30) |
May
(47) |
Jun
(41) |
Jul
(44) |
Aug
(44) |
Sep
(49) |
Oct
(33) |
Nov
(25) |
Dec
(21) |
| 2008 |
Jan
(45) |
Feb
(13) |
Mar
(15) |
Apr
(12) |
May
(9) |
Jun
(33) |
Jul
(30) |
Aug
(7) |
Sep
(20) |
Oct
(17) |
Nov
(20) |
Dec
(10) |
| 2009 |
Jan
(8) |
Feb
(5) |
Mar
(12) |
Apr
(17) |
May
(19) |
Jun
(97) |
Jul
(77) |
Aug
(33) |
Sep
(24) |
Oct
(41) |
Nov
(16) |
Dec
(32) |
| 2010 |
Jan
(24) |
Feb
(14) |
Mar
(50) |
Apr
(71) |
May
(70) |
Jun
(64) |
Jul
(45) |
Aug
(62) |
Sep
(32) |
Oct
(4) |
Nov
(12) |
Dec
(2) |
| 2011 |
Jan
(1) |
Feb
(3) |
Mar
(4) |
Apr
(3) |
May
(6) |
Jun
(1) |
Jul
(4) |
Aug
(3) |
Sep
(4) |
Oct
(6) |
Nov
(3) |
Dec
(3) |
| 2012 |
Jan
(4) |
Feb
(8) |
Mar
(6) |
Apr
(10) |
May
(2) |
Jun
(3) |
Jul
(11) |
Aug
(10) |
Sep
(4) |
Oct
|
Nov
(1) |
Dec
(1) |
| 2013 |
Jan
(4) |
Feb
(1) |
Mar
(9) |
Apr
(1) |
May
(8) |
Jun
(2) |
Jul
(5) |
Aug
(2) |
Sep
|
Oct
(3) |
Nov
(10) |
Dec
(8) |
| 2014 |
Jan
(3) |
Feb
(12) |
Mar
(9) |
Apr
(12) |
May
(2) |
Jun
|
Jul
(3) |
Aug
(1) |
Sep
(1) |
Oct
(4) |
Nov
|
Dec
(2) |
| 2015 |
Jan
(1) |
Feb
(3) |
Mar
(4) |
Apr
(9) |
May
(2) |
Jun
(2) |
Jul
|
Aug
(2) |
Sep
(7) |
Oct
(9) |
Nov
(7) |
Dec
(9) |
| 2016 |
Jan
(7) |
Feb
(5) |
Mar
(5) |
Apr
(5) |
May
(8) |
Jun
(4) |
Jul
(5) |
Aug
(4) |
Sep
(6) |
Oct
(7) |
Nov
(2) |
Dec
(3) |
| 2017 |
Jan
(7) |
Feb
(8) |
Mar
(7) |
Apr
(3) |
May
(4) |
Jun
(3) |
Jul
(5) |
Aug
(8) |
Sep
(4) |
Oct
(2) |
Nov
(3) |
Dec
|
| 2018 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
| 2019 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
| 2021 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2022 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
| 2024 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
| 2025 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
(2) |
Aug
(5) |
Sep
(2) |
Oct
|
Nov
|
Dec
(1) |
| 2026 |
Jan
(1) |
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <kat...@ho...> - 2004-05-26 07:00:47
|
spring\docs\reference\src\index.xml <releaseinfo>Version 1.0.1</releaseinfo> Is this docs versioning in sync. with release versioning. Should this be automated by an ant task (e.g. copy src to build and call replace)? jürgen höller [werk3AT] wrote: > There hasn't been any change in AbstractXsltView since 1.0 final, so I guess this is usual behavior... > > BTW, current planned release date: tonight! I know, I know - this time for real, provided that there's no showstopper :-) > > Juergen > > > ________________________________ > > Von: spr...@li... im Auftrag von Darren Davison > Gesendet: Mi 26.05.2004 01:40 > An: spr...@li... > Betreff: Re: [Springframework-developer] Preparing for 1.0.2 > > > > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > On Wednesday 26 May 2004 00:27, Darren Davison wrote: > > >>AbstractXsltView (line 143) shown below is throwing a >>TransformerConfigurationException. The stylesheet is correctly loaded >>and appears valid whether loaded from a servlet context resource or a >>classpath resource (the 2 I tried). > > > hmm.. > > it seems that removing any <xsl:output> tags in the stylesheets themselves > makes the problem disappear. That strikes me as a bit odd though: has > something changed recently in XSL world? I can't find any info on this.. > > Cheers, > - -- > Darren Davison > Public Key: http://www.davison.uk.net/pages/key.htm > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.2.4 (GNU/Linux) > > iD8DBQFAs9l7KLMLAN01aw0RAgFCAJ97NbqA547fyx6rCQLiSXkCUFWreQCghOiD > Tle6ycCFcmn5hNf2ZLZznX0= > =4YWT > -----END PGP SIGNATURE----- > > > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market... Oracle 10g. > Take an Oracle 10g class now, and we'll give you the exam FREE. > http://ads.osdn.com/?ad_id149&alloc_id66&op=ick > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market... Oracle 10g. > Take an Oracle 10g class now, and we'll give you the exam FREE. > http://ads.osdn.com/?ad_id149&alloc_id66&op=click |
|
From: <jue...@we...> - 2004-05-26 05:43:08
|
There hasn't been any change in AbstractXsltView since 1.0 final, so I = guess this is usual behavior... =20 BTW, current planned release date: tonight! I know, I know - this time = for real, provided that there's no showstopper :-) =20 Juergen =20 ________________________________ Von: spr...@li... im Auftrag = von Darren Davison Gesendet: Mi 26.05.2004 01:40 An: spr...@li... Betreff: Re: [Springframework-developer] Preparing for 1.0.2 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Wednesday 26 May 2004 00:27, Darren Davison wrote: > AbstractXsltView (line 143) shown below is throwing a > TransformerConfigurationException. The stylesheet is correctly loaded > and appears valid whether loaded from a servlet context resource or a > classpath resource (the 2 I tried). hmm.. it seems that removing any <xsl:output> tags in the stylesheets = themselves makes the problem disappear. That strikes me as a bit odd though: has something changed recently in XSL world? I can't find any info on = this.. Cheers, - -- Darren Davison Public Key: http://www.davison.uk.net/pages/key.htm -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFAs9l7KLMLAN01aw0RAgFCAJ97NbqA547fyx6rCQLiSXkCUFWreQCghOiD Tle6ycCFcmn5hNf2ZLZznX0=3D =3D4YWT -----END PGP SIGNATURE----- ------------------------------------------------------- This SF.Net email is sponsored by: Oracle 10g Get certified on the hottest thing ever to hit the market... Oracle 10g. Take an Oracle 10g class now, and we'll give you the exam FREE. http://ads.osdn.com/?ad_id149&alloc_id=8166&op=3Dick _______________________________________________ Springframework-developer mailing list Spr...@li... https://lists.sourceforge.net/lists/listinfo/springframework-developer |
|
From: Matt R. <li...@ra...> - 2004-05-26 02:57:11
|
See comments below. On May 22, 2004, at 12:13 PM, j=FCrgen h=F6ller [werk3AT] wrote: > Matt, > > We still haven't decided on how to proceed with the Commons Validator=20= > stuff; for the time being, it remains in the sandbox. If you like,=20 > please create an issue in our JIRA for it! I can certainly create an issue in JIRA if that's what's needed to get=20= it moved into the core. > > As far as I see, it's just 8 classes, including a specific JSP custom=20= > tag; so I could imagine that we include it as part of the Spring=20 > distribution. I'm not sure if it should be part of Keith's emerging=20 > "spring-rules" subproject; that's rather gonna be a separate=20 > rules-based validation engine with its own plug into Spring's=20 > validation. And 8 integration classes aren't a convincing candidate=20 > for an own subproject either. > > You have used those Commons Validator integration classes pretty=20 > intensely, haven't you? Do you already consider them comprehensive=20 > enough for a release? Do you see any room for improvement there? Do=20 > you know of any existing alternative validation libraries that people=20= > could also want to have plugged into Spring? (To me, Commons Validator=20= > seems to be the only candidate for direct support in Spring at this=20 > point of time.) To be honest, Commons Validator is the only validation engine I've=20 worked with, but I've got a few years of experience with it. It's=20 suited my needs well for those years and I especially like it's slick=20 integration with XDoclet. I do consider them stable enough for a=20 release - though I can't back it up with any real-world experience. My=20= current real-world projects use Struts for the MVC layer and Spring=20 beyond that. One enhancement I'd like to see to commons validator (or=20= another declarative validation engine that allows client-side=20 validation) is the ability to define expression rules. WebWork has=20 this with its OGNL expression support. Don Brown also has a nice=20 example of using XPath expressions with commons validation - at=20 http://tinyurl.com/33ekr. > > I wouldn't mind Spring 1.0.3 as target milestone for it, provided that=20= > we agree that Commons Validator support should be part of the Spring=20= > distribution. Interestingly enough, we already ship=20 > commons-validator.jar, because it is a runtime requirement of Struts -=20= > so we wouldn't even have to ship any further dependencies. Nice. Matt > > Juergen > > > ________________________________ > > Von: spr...@li... im Auftrag=20= > von Matt Raible > Gesendet: Sa 22.05.2004 17:27 > An: spr...@li... > Betreff: Re: [Springframework-developer] Preparing for 1.0.2 > > > > It doesn't appear that the Commons Validator stuff will be in this > release. Will that be in a future release - or is it dependent on the > declarative validation framework (that I believe Keith is still = working > on)? > > Matt > > On May 22, 2004, at 8:10 AM, j=FCrgen h=F6ller [werk3AT] wrote: > >> Hi everybody, >> >> I've just finished my final preparations for our upcoming Spring >> release 1.0.2, scheduled for Sunday night. See the changelog for >> details; most issues have been discussed on the mailing lists or in >> JIRA. All remaining issues in JIRA have been addressed but do not >> incur Spring changes; I plan to close most of them at the time of the >> 1.0.2 release, resolved as "Won't fix". >> >> I've also updated our dependencies: FreeMarker 2.3 RC4, Hibernate >> 2.1.3, iBATIS SQL Maps 2.0 RC4, Velocity Tools 1.1 final, Commons >> Attributes May 9th snapshot. (Will Commons Attributes ever get out of >> the Jakarta sandbox?? At least some sort of official beta release >> would be nice.) BTW, MockObjects is no longer in our libraries, >> neither in CVS nor in the release distribution, as we don't use it >> anymore. >> >> I plan to create the actual release Sunday night. So for all you >> weekend workhorses out there, there's still a chance to test and >> review the current CVS head :-) Please no further enhancements, >> though: As the changelog shows, we've already gathered a lot of minor >> bugfixes and enhancements, so we should get out 1.0.2 ASAP. Further >> enhancements should go into 1.0.3, scheduled for late June. >> >> Juergen >> >> >> >> ------------------------------------------------------- >> This SF.Net email is sponsored by: Oracle 10g >> Get certified on the hottest thing ever to hit the market... Oracle >> 10g. >> Take an Oracle 10g class now, and we'll give you the exam FREE. >> http://ads.osdn.com/?ad_id149&alloc_id(tm)66&op=CCk >> _______________________________________________ >> Springframework-developer mailing list >> Spr...@li... >> = https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market... Oracle=20 > 10g. > Take an Oracle 10g class now, and we'll give you the exam FREE. > http://ads.osdn.com/?ad_id149&alloc_id=9966&op=3Dick > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market... Oracle=20 > 10g. > Take an Oracle 10g class now, and we'll give you the exam FREE. > http://ads.osdn.com/?ad_id149&alloc_id=9966&op=CCk > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer |
|
From: Darren D. <da...@da...> - 2004-05-25 23:40:54
|
=2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Wednesday 26 May 2004 00:27, Darren Davison wrote: > AbstractXsltView (line 143) shown below is throwing a > TransformerConfigurationException. The stylesheet is correctly loaded > and appears valid whether loaded from a servlet context resource or a > classpath resource (the 2 I tried). hmm.. it seems that removing any <xsl:output> tags in the stylesheets themselves= =20 makes the problem disappear. That strikes me as a bit odd though: has=20 something changed recently in XSL world? I can't find any info on this.. Cheers, =2D --=20 Darren Davison Public Key: http://www.davison.uk.net/pages/key.htm =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFAs9l7KLMLAN01aw0RAgFCAJ97NbqA547fyx6rCQLiSXkCUFWreQCghOiD Tle6ycCFcmn5hNf2ZLZznX0=3D =3D4YWT =2D----END PGP SIGNATURE----- |
|
From: Darren D. <da...@da...> - 2004-05-25 23:27:42
|
=2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Saturday 22 May 2004 15:10, j=FCrgen h=F6ller [werk3AT] wrote: > I plan to create the actual release Sunday night. So for all you weekend > workhorses out there, there's still a chance to test and review the > current CVS head :-) As mentioned in an earlier note on Sunday, I still find that XSLT views are= =20 failing. AbstractXsltView (line 143) shown below is throwing a=20 TransformerConfigurationException. The stylesheet is correctly loaded and= =20 appears valid whether loaded from a servlet context resource or a classpath= =20 resource (the 2 I tried). this.templates =3D=20 this.transformerFactory.newTemplates(getStylesheetSource(this.stylesheetLoc= ation)); Is anyone able to verify this on their machine before I log it in JIRA? Cheers, =2D --=20 Darren Davison Public Key: http://www.davison.uk.net/pages/key.htm =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFAs9ZpKLMLAN01aw0RAiZRAJwKiT/JtjvtoVeC9beML9d3T/aJhACfQejm Q7YXwyPF5rIg/wPhNhcXO4s=3D =3D0fA9 =2D----END PGP SIGNATURE----- |
|
From: Colin S. <col...@ex...> - 2004-05-25 12:16:56
|
Ok, that's reasonable. I didn't know we had any sort of relationship with the Clover people other than using it under the open-source license. I do think Clover is a good product as well... Rod Johnson wrote: >Colin > >The Clover guys have been _very_ helpful to us and I think it's a good >product. I don't think we should switch to another product just because it's >open source and Clover is commercial. We're using it with their blessing for >the entire dev team. > >Instrumenting code on the fly does sound interesting. > >Rgds >Rod > >----- Original Message ----- >From: "Colin Sampaleanu" <col...@ex...> >To: <spr...@li...> >Sent: Tuesday, May 25, 2004 12:52 AM >Subject: [Springframework-developer] Emma code coverage tool > > > > >>I think we're all pretty busy now, so now's not a great time, but we >>should maybe examine at some point the idea of switching to Emma >> http://emma.sourceforge.net/ >>for test code coverage analysis. It looks pretty decent; not quite on >>the level of Clover, but no license restrictions, and it actually does >>some things that Clover doesn't (as far as I can tell) like being able >>to instrument code on the fly (along with the normal >>pre-instrumentation) to do analysis without a pre-instrument phase. >> >>I'll probably be using this on any future coding I do... >> >>Colin >> >> |
|
From: Bronwen C. <bro...@ya...> - 2004-05-25 11:20:15
|
Hi again and thanx, I seem to have sorted it out, basically checked out =
of
cvs ran clean and release, and it worked :-) thanx and sorry to have
bothered you, not sure quite what the problem one except that somewhere =
I
must have been pointing to an old version?? I'll never know :-)
-----Original Message-----
From: spr...@li...
[mailto:spr...@li...] On Behalf =
Of
Bronwen Cassidy
Sent: 25 May 2004 10:47
To: spr...@li...
Subject: RE: [Springframework-developer] re:
java.lang.IncompatibleClassChangeError
Hi
I'm lost :-( sorry to trouble you I have changed all the jars, deleted =
the
classes directory, rebuilt the project same result. I am using intelliJ
idea, all the jars I use are in one directory, I have checked idea's =
path
settings and they are all pointing to the same jars in the directory to
where I am expecting them to point to, I have nothing in my jdk/lib/ext
These are the jars I am using:
aopalliance.jar // from build 1.0.2
commons-beanutils.jar // from build 1.0.2
commons-collections.jar // from build 1.0.2
commons-fileupload.jar // from build 1.0.2
commons-lang.jar // from build 1.0.2
commons-logging.jar // from build 1.0.2
dom4j.jar // from build 1.0.2
dom.jar
jakarta-oro-2.0.7.jar // from build 1.0.2
jakarta-regexp-1.3.jar // ran tests with and without to check same =
result
jaxen.jar // not from spring
jaxp-api.jar // not from spring
jstl.jar // not from spring
log4j-1.2.8.jar
sax.jar
saxpath.jar
spring.jar // 1.0.2 version
standard.jar
xalan.jar
xercesImpl.jar
-----Original Message-----
From: spr...@li...
[mailto:spr...@li...] On Behalf =
Of
j=FCrgen h=F6ller [werk3AT]
Sent: 25 May 2004 09:40
To: spr...@li...
Subject: Re: [Springframework-developer] re:
java.lang.IncompatibleClassChangeError
Have you got old spring jars in your class path? That sort of error can =
just
happen when you've built against classes that are not the same during
runtime.
=20
DO_NOT_PROXY and co in AbstractAutoProxyCreator have changed from =
"protected
final" to "protected static final" (an oversight that's been corrected). =
But
as long as everything is built against the current version, that =
shouldn't
matter.
=20
That just made me aware that we actually require rebuilding your apps
against new Spring jars. That's not a big problem, I guess, but it means
that new Spring jars are in general not a drop-in replacement for =
runtime
environments.
=20
In other words, current Spring releases are source compatible but not
necessarily binary compatible. So to be on the safe side, rebuild your =
app
against the Spring jars that you intend to use, and everything should =
work.
=20
Juergen
=20
________________________________
Von: spr...@li... im Auftrag =
von
Bronwen Cassidy
Gesendet: Di 25.05.2004 11:07
An: spr...@li...
Betreff: [Springframework-developer] re:
java.lang.IncompatibleClassChangeError
Hi Just tried the CVS version for spring (pre 1.0.2) I have been using
1.0.1, when running my AOP tests I get the following stack trace, the =
same
happens in weblogic:
=20
java.lang.IncompatibleClassChangeError
at
org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreat=
or.
getInterceptorsAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java:66=
)
at
org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.post=
Pro
cessAfterInitialization(AbstractAutoProxyCreator.java:209)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFact=
ory
.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFa=
cto
ry.java:150)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFact=
ory
.createBean(AbstractAutowireCapableBeanFactory.java:234)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFact=
ory
.createBean(AbstractAutowireCapableBeanFactory.java:172)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Abs=
tra
ctBeanFactory.java:159)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preI=
nst
antiateSingletons(DefaultListableBeanFactory.java:178)
at
org.springframework.context.support.AbstractApplicationContext.refresh(Ab=
str
actApplicationContext.java:269)
at
org.springframework.context.support.ClassPathXmlApplicationContext.<init>=
(Cl
assPathXmlApplicationContext.java:58)
=20
this is when upgrading spring.jar and aopalliance.jar. I cannot figure =
out
what has gone wrong, if I replace spring.jar with the 1.0.1 version,
everything runs with no problems, help :-)
=20
This happens in AbstractAdvisorAutoproxyCreator here:
=20
List advices =3D findEligibleAdvisors(bean.getClass());
f (advices.isEmpty()) {
return DO_NOT_PROXY;
}=20
=20
The return DO_NOT_PROXY ends up with the error, the debugger goes no
further??
=20
Thanx in advance
Bronwen
-------------------------------------------------------
This SF.Net email is sponsored by: Oracle 10g
Get certified on the hottest thing ever to hit the market... Oracle 10g. =
Take an Oracle 10g class now, and we'll give you the exam FREE.
http://ads.osdn.com/?ad_id149&alloc_id=8166&op=3Dick
_______________________________________________
Springframework-developer mailing list
Spr...@li...
https://lists.sourceforge.net/lists/listinfo/springframework-developer
-------------------------------------------------------
This SF.Net email is sponsored by: Oracle 10g
Get certified on the hottest thing ever to hit the market... Oracle 10g. =
Take an Oracle 10g class now, and we'll give you the exam FREE.
http://ads.osdn.com/?ad_id149&alloc_id=8166&op=3Dick
_______________________________________________
Springframework-developer mailing list
Spr...@li...
https://lists.sourceforge.net/lists/listinfo/springframework-developer
|
|
From: Bronwen C. <bro...@ya...> - 2004-05-25 10:46:25
|
Hi
I'm lost :-( sorry to trouble you I have changed all the jars, deleted =
the
classes directory, rebuilt the project same result. I am using intelliJ
idea, all the jars I use are in one directory, I have checked idea's =
path
settings and they are all pointing to the same jars in the directory to
where I am expecting them to point to, I have nothing in my jdk/lib/ext
These are the jars I am using:
aopalliance.jar // from build 1.0.2
commons-beanutils.jar // from build 1.0.2
commons-collections.jar // from build 1.0.2
commons-fileupload.jar // from build 1.0.2
commons-lang.jar // from build 1.0.2
commons-logging.jar // from build 1.0.2
dom4j.jar // from build 1.0.2
dom.jar
jakarta-oro-2.0.7.jar // from build 1.0.2
jakarta-regexp-1.3.jar // ran tests with and without to check same =
result
jaxen.jar // not from spring
jaxp-api.jar // not from spring
jstl.jar // not from spring
log4j-1.2.8.jar
sax.jar
saxpath.jar
spring.jar // 1.0.2 version
standard.jar
xalan.jar
xercesImpl.jar
-----Original Message-----
From: spr...@li...
[mailto:spr...@li...] On Behalf =
Of
j=FCrgen h=F6ller [werk3AT]
Sent: 25 May 2004 09:40
To: spr...@li...
Subject: Re: [Springframework-developer] re:
java.lang.IncompatibleClassChangeError
Have you got old spring jars in your class path? That sort of error can =
just
happen when you've built against classes that are not the same during
runtime.
=20
DO_NOT_PROXY and co in AbstractAutoProxyCreator have changed from =
"protected
final" to "protected static final" (an oversight that's been corrected). =
But
as long as everything is built against the current version, that =
shouldn't
matter.
=20
That just made me aware that we actually require rebuilding your apps
against new Spring jars. That's not a big problem, I guess, but it means
that new Spring jars are in general not a drop-in replacement for =
runtime
environments.
=20
In other words, current Spring releases are source compatible but not
necessarily binary compatible. So to be on the safe side, rebuild your =
app
against the Spring jars that you intend to use, and everything should =
work.
=20
Juergen
=20
________________________________
Von: spr...@li... im Auftrag =
von
Bronwen Cassidy
Gesendet: Di 25.05.2004 11:07
An: spr...@li...
Betreff: [Springframework-developer] re:
java.lang.IncompatibleClassChangeError
Hi Just tried the CVS version for spring (pre 1.0.2) I have been using
1.0.1, when running my AOP tests I get the following stack trace, the =
same
happens in weblogic:
=20
java.lang.IncompatibleClassChangeError
at
org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreat=
or.
getInterceptorsAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java:66=
)
at
org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.post=
Pro
cessAfterInitialization(AbstractAutoProxyCreator.java:209)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFact=
ory
.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFa=
cto
ry.java:150)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFact=
ory
.createBean(AbstractAutowireCapableBeanFactory.java:234)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFact=
ory
.createBean(AbstractAutowireCapableBeanFactory.java:172)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Abs=
tra
ctBeanFactory.java:159)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preI=
nst
antiateSingletons(DefaultListableBeanFactory.java:178)
at
org.springframework.context.support.AbstractApplicationContext.refresh(Ab=
str
actApplicationContext.java:269)
at
org.springframework.context.support.ClassPathXmlApplicationContext.<init>=
(Cl
assPathXmlApplicationContext.java:58)
=20
this is when upgrading spring.jar and aopalliance.jar. I cannot figure =
out
what has gone wrong, if I replace spring.jar with the 1.0.1 version,
everything runs with no problems, help :-)
=20
This happens in AbstractAdvisorAutoproxyCreator here:
=20
List advices =3D findEligibleAdvisors(bean.getClass());
f (advices.isEmpty()) {
return DO_NOT_PROXY;
}=20
=20
The return DO_NOT_PROXY ends up with the error, the debugger goes no
further??
=20
Thanx in advance
Bronwen
-------------------------------------------------------
This SF.Net email is sponsored by: Oracle 10g
Get certified on the hottest thing ever to hit the market... Oracle 10g. =
Take an Oracle 10g class now, and we'll give you the exam FREE.
http://ads.osdn.com/?ad_id149&alloc_id=8166&op=3Dick
_______________________________________________
Springframework-developer mailing list
Spr...@li...
https://lists.sourceforge.net/lists/listinfo/springframework-developer
|
|
From: <jue...@we...> - 2004-05-25 09:41:02
|
Have you got old spring jars in your class path? That sort of error can =
just happen when you've built against classes that are not the same =
during runtime.
=20
DO_NOT_PROXY and co in AbstractAutoProxyCreator have changed from =
"protected final" to "protected static final" (an oversight that's been =
corrected). But as long as everything is built against the current =
version, that shouldn't matter.
=20
That just made me aware that we actually require rebuilding your apps =
against new Spring jars. That's not a big problem, I guess, but it means =
that new Spring jars are in general not a drop-in replacement for =
runtime environments.
=20
In other words, current Spring releases are source compatible but not =
necessarily binary compatible. So to be on the safe side, rebuild your =
app against the Spring jars that you intend to use, and everything =
should work.
=20
Juergen
=20
________________________________
Von: spr...@li... im Auftrag =
von Bronwen Cassidy
Gesendet: Di 25.05.2004 11:07
An: spr...@li...
Betreff: [Springframework-developer] re: =
java.lang.IncompatibleClassChangeError
Hi Just tried the CVS version for spring (pre 1.0.2) I have been using =
1.0.1, when running my AOP tests I get the following stack trace, the =
same happens in weblogic:
=20
java.lang.IncompatibleClassChangeError
at =
org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreat=
or.getInterceptorsAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java=
:66)
at =
org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.post=
ProcessAfterInitialization(AbstractAutoProxyCreator.java:209)
at =
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFact=
ory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBea=
nFactory.java:150)
at =
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFact=
ory.createBean(AbstractAutowireCapableBeanFactory.java:234)
at =
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFact=
ory.createBean(AbstractAutowireCapableBeanFactory.java:172)
at =
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Abs=
tractBeanFactory.java:159)
at =
org.springframework.beans.factory.support.DefaultListableBeanFactory.preI=
nstantiateSingletons(DefaultListableBeanFactory.java:178)
at =
org.springframework.context.support.AbstractApplicationContext.refresh(Ab=
stractApplicationContext.java:269)
at =
org.springframework.context.support.ClassPathXmlApplicationContext.<init>=
(ClassPathXmlApplicationContext.java:58)
=20
this is when upgrading spring.jar and aopalliance.jar. I cannot figure =
out what has gone wrong, if I replace spring.jar with the 1.0.1 version, =
everything runs with no problems, help :-)
=20
This happens in AbstractAdvisorAutoproxyCreator here:
=20
List advices =3D findEligibleAdvisors(bean.getClass());
f (advices.isEmpty()) {
return DO_NOT_PROXY;
}=20
=20
The return DO_NOT_PROXY ends up with the error, the debugger goes no =
further??
=20
Thanx in advance
Bronwen
|
|
From: Bronwen C. <bro...@ya...> - 2004-05-25 09:07:15
|
Hi Just tried the CVS version for spring (pre 1.0.2) I have been using
1.0.1, when running my AOP tests I get the following stack trace, the same
happens in weblogic:
java.lang.IncompatibleClassChangeError
at
org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.
getInterceptorsAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java:66)
at
org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postPro
cessAfterInitialization(AbstractAutoProxyCreator.java:209)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory
.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFacto
ry.java:150)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory
.createBean(AbstractAutowireCapableBeanFactory.java:234)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory
.createBean(AbstractAutowireCapableBeanFactory.java:172)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Abstra
ctBeanFactory.java:159)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInst
antiateSingletons(DefaultListableBeanFactory.java:178)
at
org.springframework.context.support.AbstractApplicationContext.refresh(Abstr
actApplicationContext.java:269)
at
org.springframework.context.support.ClassPathXmlApplicationContext.<init>(Cl
assPathXmlApplicationContext.java:58)
this is when upgrading spring.jar and aopalliance.jar. I cannot figure out
what has gone wrong, if I replace spring.jar with the 1.0.1 version,
everything runs with no problems, help :-)
This happens in AbstractAdvisorAutoproxyCreator here:
List advices = findEligibleAdvisors(bean.getClass());
f (advices.isEmpty()) {
return DO_NOT_PROXY;
}
The return DO_NOT_PROXY ends up with the error, the debugger goes no
further??
Thanx in advance
Bronwen
|
|
From: Rod J. <rod...@in...> - 2004-05-25 07:31:41
|
> >- Constants that define a full object. We have a number of those, for example ClassFilters.TRUE and AdvisedSupport.EMPTY_TARGET_SOURCE. I've tried for quite a while, but I haven't been able to figure out a way to define such constants such that they will be garbage collected. Juergen Good detective work! As you say, I don't think there's any real issue now, especially when you consider other libraries. Surely the amount of leakage in hot deployment scenarios with the constants is going to be tiny... And Hibernate, CGLIB et al will account for way more issues. Is it correct to assume that problem scenarios in development are now unlikely? Maintaining canonical instances is good style IMHO. However, if you do have a list of those you detected, please send it to me. (I expect they're mainly in my code.) Some of them could be changed fairly easily: for example, a null pointcut could have the same effect as Pointcut.TRUE. I'd like to take a look when I have time (2-3 weeks) and see if it's appropriate to change some or all of them. HOWEVER, such a change would be effectively a public API change in some cases. I don't imagine too many people use the canonical pointcut and ClassFilter instances (because it's not really necessary in those cases), but they _are_ public. EMPTY_TARGET_SOURCE doesn't really have such a problem. That can be changed easily, and I've thought of doing it once or twice. It can just be promoted to a package-level class, and a new instance could be created for each AdvisedSupport, as the class itself is trivial. Rgds Rod |
|
From: Rod J. <rod...@in...> - 2004-05-25 07:31:34
|
Colin The Clover guys have been _very_ helpful to us and I think it's a good product. I don't think we should switch to another product just because it's open source and Clover is commercial. We're using it with their blessing for the entire dev team. Instrumenting code on the fly does sound interesting. Rgds Rod ----- Original Message ----- From: "Colin Sampaleanu" <col...@ex...> To: <spr...@li...> Sent: Tuesday, May 25, 2004 12:52 AM Subject: [Springframework-developer] Emma code coverage tool > I think we're all pretty busy now, so now's not a great time, but we > should maybe examine at some point the idea of switching to Emma > http://emma.sourceforge.net/ > for test code coverage analysis. It looks pretty decent; not quite on > the level of Clover, but no license restrictions, and it actually does > some things that Clover doesn't (as far as I can tell) like being able > to instrument code on the fly (along with the normal > pre-instrumentation) to do analysis without a pre-instrument phase. > > I'll probably be using this on any future coding I do... > > Colin > > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market... Oracle 10g. > Take an Oracle 10g class now, and we'll give you the exam FREE. > http://ads.osdn.com/?ad_id=3149&alloc_id=8166&op=click > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer |
|
From: Matt R. <li...@ra...> - 2004-05-25 07:03:11
|
I tried CVS Head in 2 Spring apps and all tests pass. Matt > -----Original Message----- > From: spr...@li...=20 > [mailto:spr...@li...] > On Behalf Of Colin Sampaleanu > Sent: Monday, May 24, 2004 7:49 PM > To: spr...@li... > Subject: Re: [Springframework-developer] Cleanup of context=20 > resources on webapp reload >=20 >=20 > Just gave CVS Head a go with my main app (was using source=20 > about a week=20 > old, previously). All seems ok for basic container operations,=20 > transactions, and Hibernate. Unit tests all run fine on the couple of=20 > machines I build on... >=20 >=20 > j=FCrgen h=F6ller [werk3AT] wrote: >=20 > >I've just spent about 10 hours profiling Spring, using the Image=20 > >Database and Petclinic samples. (BTW, I've used an=20 > evaluation version of JProfiler from ej-technologies - nice product!) > >=20 > >Although I still don't completely understand the garbage collection=20 > >behavior, I've figured out the following issues. Each of=20 > them simply prevents the respective classes from getting=20 > garbage collected on destruction of the class loader (e.g. on=20 > Tomcat web app shutdown). > >=20 > >- A classic singleton with a class variable holding the object. I've=20 > >reworked GlobalAdvisorAdapterRegistry and=20 > SQLErrorCodesFactory to hold the respective singleton as a=20 > WeakReference. > >=20 > >- A static cache. I've reworked CachedIntrospectionResults to use a=20 > >WeakHashMap with WeakReferences as values. > >=20 > >- A ThreadLocal with a default other than null. I've reworked=20 > >TransactionSynchronizationManager to use null as default for=20 > the resource map, setting a HashMap there on demand, removing=20 > the entire HashMap when unbinding the last resource. > >=20 > >- Constants that define a full object. We have a number of=20 > those, for=20 > >example ClassFilters.TRUE and=20 > AdvisedSupport.EMPTY_TARGET_SOURCE. I've tried for quite a=20 > while, but I haven't been able to figure out a way to define=20 > such constants such that they will be garbage collected. > >=20 > >The latter programming style is not uncommon, so I really don't=20 > >understand why it causes trouble with garbage collection.=20 > Hibernate uses a similar style for its FlushMode, for example. > >=20 > >In general, other frameworks like CGLIB, Hibernate, Velocity=20 > have huge=20 > >resource leaks on web app shutdown, while just the constants=20 > issue remains with Spring now. As long as those huge=20 > third-party leaks are not addressed, I'm not worried at all=20 > by the single remaining Spring issue. > >=20 > >As I initially said, we shouldn't exaggerate the problem, as it=20 > >basically just affects hot reloading of web apps - mainly a=20 > development feature anyway. We need to make that clear to=20 > users too, to avoid comments a la "Spring is not usable for=20 > real apps because it leaks on hot redeployment". > >=20 > >Please, everybody, give the current CVS head a sanity check=20 > tomorrow.=20 > >There shouldn't be any issues: the test suite passes, the=20 > sample apps run properly. Still, I'd feel more comfortable if=20 > we make sure that no subtle side effects have been introduced. > >=20 > >For this reason, I will delay release 1.0.2 till tomorrow night. > >=20 > >Juergen > >=20 > > > >________________________________ > > > >Von: spr...@li...=20 > im Auftrag=20 > >von j=FCrgen h=F6ller [werk3AT] > >Gesendet: Sa 22.05.2004 15:52 > >An: spr...@li... > >Betreff: Re: [Springframework-developer] Cleanup of context=20 > resources on webapp reload > > > > > > > >So basically, all static caches cause resource leaks when=20 > restarting a=20 > >Tomcat web app? I wonder why this happens... The class loader should=20 > >completely dissolve all classes that it has loaded in its lifetime,=20 > >including static caches. Or have I misunderstood something=20 > here? Anyone=20 > >having in-detail experience with handling such a scenario? > > > >Juergen > > > > > >________________________________ > > > >Von: spr...@li...=20 > im Auftrag=20 > >von Dmitriy Kopylenko > >Gesendet: Di 04.05.2004 18:02 > >An: spr...@li... > >Betreff: Re: [Springframework-developer] Cleanup of context=20 > resources on webapp reload > > > > > > > >Well, > > > >for instance SQLErrorCodesFactory is a singleton(GoF, not=20 > Spring) which=20 > >caches SQLErrorCodes internally in the Map with strong references.=20 > >Again, I don't know if trying to use WeakHashMap there would do the=20 > >trick... > > > >Dmitriy > > > >Tim Kettering wrote: > > > > =20 > > > >>I looked at it some more this morning, and basically what I did was=20 > >>start up tomcat w/ the webapp in the profiler, then after=20 > it was done=20 > >>starting up I used tomcat's manager to stop the context. =20 > This should > >>destroy all resources related to the context. Here is a list of > >>spring related stuff that still were in memory after the=20 > context was=20 > >>closed. Other stuff was cleaned up just fine. > >> > >>org.springframework.beans.CachedIntrospectionResults > >>org.springframework.jdbc.support.SQLCodes > >>org.springframework.core.Constants > >>org.springframework.aop.framework.AdvisedSupport$1 > >>org.springframework.aop.framework.adapter.BeforeAdviceAdapter > >>org.springframework.aop.framework.adapter.AfterReturningAdvi > ceAdapter > >>org.springframework.jdbc.support.SQLErrorCodesFactory > >>org.springframework.transaction.support.TransactionSynchroni > zationMana > >>ge > >>r$1 > >>org.springframework.transaction.interceptor.RollbackRuleAttribute > >>org.springframework.aop.framework.adapter.ThrosAdviceAdapter > >>org.springframework.aop.Pointcut$1 > >>org.springframework.aop.framework.adapter.GlobalAdvisorAdapt > erRegistry > >> > >>On May 3, 2004, at 3:28 PM, Dmitriy Kopylenko wrote: > >> > >> =20 > >> > >>>I'm just wondering, would the use of WeakHashMap in=20 > >>>CachedIntrospectionResults help? > >>> > >>>Dmitriy. > >>> > >>>Tim Kettering wrote: > >>> > >>> =20 > >>> > >>>>I posted this to the users list last week and did not receive any=20 > >>>>reply on it, so I'm posting it again here on the=20 > developer list, in > >>>>hopes i could get an reply from someone here. I'm trying to > >>>>determine if its something I should be doing myself, or if hte=20 > >>>>spring context should be cleaning up those resources by=20 > itself on=20 > >>>>the .close() call. Further profiling shows that there are=20 > >>>>duplicate instances of SQLError and hibernate proxy classes=20 > >>>>hanging around afterwards too. Other objects do get cleaned up=20 > >>>>properly. > >>>>-------- > >>>>Hi everyone, > >>>>We're (meaning me) looking into some resource leaks that are > >>>>occuring when our webapp context gets reloaded. I found that > >>>>context.close() needs to be called on the destroy() method of > >>>>plugin we're using, and it works for a good majority of=20 > the objects > >>>>we were seeing leaked, but there are some objects that=20 > I'm unable > >>>>to make go away. Object in question is the: > >>>>org.springframework.beans.CachedIntrospectionResults > >>>>Whenever I reload the context - the profiler I'm using=20 > shows that I=20 > >>>>have essentially a duplicate group of those objects (same=20 > instance=20 > >>>>count) as the original, and successive reloads will continue to=20 > >>>>duplicate this. > >>>>The profiler also shows the final reference to those=20 > objects like this: > >>>>100% - 1008 bytes - 63 alloc.=20 > >>>>org.springframework.context.support.ClassPathXmlApplicatio > nContext.<in > >>>>it > > >>>>So basically I guess what I'm asking is for ideas or=20 > suggestions on > >>>>how I could get those to clean up. This bean doesnt=20 > show up in the > >>>>Spring javadocs. And looking in CVS says its a package=20 > level bean, > >>>>not for application use, so I'm thinking that closing the context > >>>>should (in theory) clean this up? Thanks in advance. > >>>>-tim > >>>>------------------------------------------------------- > >>>>This SF.Net email is sponsored by: Oracle 10g > >>>>Get certified on the hottest thing ever to hit the=20 > market... Oracle > >>>>10g. Take an Oracle 10g class now, and we'll give you the=20 > exam FREE. > >>>>http://ads.osdn.com/?ad_id=3D3149&alloc_id=3D8166&op=3Dclick > >>>> =20 > >>>> >=20 >=20 >=20 >=20 > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market...=20 > Oracle 10g.=20 > Take an Oracle 10g class now, and we'll give you the exam=20 > FREE. http://ads.osdn.com/?ad_id=3D3149&alloc_id=3D8166&op=3Dclick > _______________________________________________ > Springframework-developer mailing list=20 > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer >=20 |
|
From: Colin S. <col...@ex...> - 2004-05-25 01:45:36
|
Just gave CVS Head a go with my main app (was using source about a week old, previously). All seems ok for basic container operations, transactions, and Hibernate. Unit tests all run fine on the couple of machines I build on... jürgen höller [werk3AT] wrote: >I've just spent about 10 hours profiling Spring, using the Image Database and Petclinic samples. (BTW, I've used an evaluation version of JProfiler from ej-technologies - nice product!) > >Although I still don't completely understand the garbage collection behavior, I've figured out the following issues. Each of them simply prevents the respective classes from getting garbage collected on destruction of the class loader (e.g. on Tomcat web app shutdown). > >- A classic singleton with a class variable holding the object. I've reworked GlobalAdvisorAdapterRegistry and SQLErrorCodesFactory to hold the respective singleton as a WeakReference. > >- A static cache. I've reworked CachedIntrospectionResults to use a WeakHashMap with WeakReferences as values. > >- A ThreadLocal with a default other than null. I've reworked TransactionSynchronizationManager to use null as default for the resource map, setting a HashMap there on demand, removing the entire HashMap when unbinding the last resource. > >- Constants that define a full object. We have a number of those, for example ClassFilters.TRUE and AdvisedSupport.EMPTY_TARGET_SOURCE. I've tried for quite a while, but I haven't been able to figure out a way to define such constants such that they will be garbage collected. > >The latter programming style is not uncommon, so I really don't understand why it causes trouble with garbage collection. Hibernate uses a similar style for its FlushMode, for example. > >In general, other frameworks like CGLIB, Hibernate, Velocity have huge resource leaks on web app shutdown, while just the constants issue remains with Spring now. As long as those huge third-party leaks are not addressed, I'm not worried at all by the single remaining Spring issue. > >As I initially said, we shouldn't exaggerate the problem, as it basically just affects hot reloading of web apps - mainly a development feature anyway. We need to make that clear to users too, to avoid comments a la "Spring is not usable for real apps because it leaks on hot redeployment". > >Please, everybody, give the current CVS head a sanity check tomorrow. There shouldn't be any issues: the test suite passes, the sample apps run properly. Still, I'd feel more comfortable if we make sure that no subtle side effects have been introduced. > >For this reason, I will delay release 1.0.2 till tomorrow night. > >Juergen > > >________________________________ > >Von: spr...@li... im Auftrag von jürgen höller [werk3AT] >Gesendet: Sa 22.05.2004 15:52 >An: spr...@li... >Betreff: Re: [Springframework-developer] Cleanup of context resources on webapp reload > > > >So basically, all static caches cause resource leaks when restarting a Tomcat web app? I wonder why this happens... The class loader should completely dissolve all classes that it has loaded in its lifetime, including static caches. Or have I misunderstood something here? Anyone having in-detail experience with handling such a scenario? > >Juergen > > >________________________________ > >Von: spr...@li... im Auftrag von Dmitriy Kopylenko >Gesendet: Di 04.05.2004 18:02 >An: spr...@li... >Betreff: Re: [Springframework-developer] Cleanup of context resources on webapp reload > > > >Well, > >for instance SQLErrorCodesFactory is a singleton(GoF, not Spring) which caches SQLErrorCodes internally in the Map with strong references. Again, I don't know if trying >to use WeakHashMap there would do the trick... > >Dmitriy > >Tim Kettering wrote: > > > >>I looked at it some more this morning, and basically what I did was >>start up tomcat w/ the webapp in the profiler, then after it was done >>starting up I used tomcat's manager to stop the context. This should >>destroy all resources related to the context. Here is a list of >>spring related stuff that still were in memory after the context was >>closed. Other stuff was cleaned up just fine. >> >>org.springframework.beans.CachedIntrospectionResults >>org.springframework.jdbc.support.SQLCodes >>org.springframework.core.Constants >>org.springframework.aop.framework.AdvisedSupport$1 >>org.springframework.aop.framework.adapter.BeforeAdviceAdapter >>org.springframework.aop.framework.adapter.AfterReturningAdviceAdapter >>org.springframework.jdbc.support.SQLErrorCodesFactory >>org.springframework.transaction.support.TransactionSynchronizationManage >>r$1 >>org.springframework.transaction.interceptor.RollbackRuleAttribute >>org.springframework.aop.framework.adapter.ThrosAdviceAdapter >>org.springframework.aop.Pointcut$1 >>org.springframework.aop.framework.adapter.GlobalAdvisorAdapterRegistry >> >>On May 3, 2004, at 3:28 PM, Dmitriy Kopylenko wrote: >> >> >> >>>I'm just wondering, would the use of WeakHashMap in >>>CachedIntrospectionResults help? >>> >>>Dmitriy. >>> >>>Tim Kettering wrote: >>> >>> >>> >>>>I posted this to the users list last week and did not receive any >>>>reply on it, so I'm posting it again here on the developer list, in >>>>hopes i could get an reply from someone here. I'm trying to >>>>determine if its something I should be doing myself, or if hte >>>>spring context should be cleaning up those resources by itself on >>>>the .close() call. Further profiling shows that there are >>>>duplicate instances of SQLError and hibernate proxy classes hanging >>>>around afterwards too. Other objects do get cleaned up properly. >>>>-------- >>>>Hi everyone, >>>>We're (meaning me) looking into some resource leaks that are >>>>occuring when our webapp context gets reloaded. I found that >>>>context.close() needs to be called on the destroy() method of >>>>plugin we're using, and it works for a good majority of the objects >>>>we were seeing leaked, but there are some objects that I'm unable >>>>to make go away. Object in question is the: >>>>org.springframework.beans.CachedIntrospectionResults >>>>Whenever I reload the context - the profiler I'm using shows that I >>>>have essentially a duplicate group of those objects (same instance >>>>count) as the original, and successive reloads will continue to >>>>duplicate this. >>>>The profiler also shows the final reference to those objects like this: >>>>100% - 1008 bytes - 63 alloc. >>>>org.springframework.context.support.ClassPathXmlApplicationContext.<in >>>>it > >>>>So basically I guess what I'm asking is for ideas or suggestions on >>>>how I could get those to clean up. This bean doesnt show up in the >>>>Spring javadocs. And looking in CVS says its a package level bean, >>>>not for application use, so I'm thinking that closing the context >>>>should (in theory) clean this up? Thanks in advance. >>>>-tim >>>>------------------------------------------------------- >>>>This SF.Net email is sponsored by: Oracle 10g >>>>Get certified on the hottest thing ever to hit the market... Oracle >>>>10g. Take an Oracle 10g class now, and we'll give you the exam FREE. >>>>http://ads.osdn.com/?ad_id=3149&alloc_id=8166&op=click >>>> >>>> |
|
From: Nadeem B. <na...@ea...> - 2004-05-25 00:07:14
|
On =E6=9C=88, 2004-05-24 at 19:52 -0400, Colin Sampaleanu wrote: > I think we're all pretty busy now, so now's not a great time, but we=20 > should maybe examine at some point the idea of switching to Emma > http://emma.sourceforge.net/ > for test code coverage analysis. It looks pretty decent; not quite on=20 > the level of Clover, but no license restrictions, and it actually does=20 > some things that Clover doesn't (as far as I can tell) like being able=20 > to instrument code on the fly (along with the normal=20 > pre-instrumentation) to do analysis without a pre-instrument phase. >=20 > I'll probably be using this on any future coding I do... >=20 Another open source coverage tool is jcoverage http://www.jcoverage.org/ - Nadeem > Colin >=20 >=20 >=20 >=20 > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market... Oracle 10g.=20 > Take an Oracle 10g class now, and we'll give you the exam FREE. > http://ads.osdn.com/?ad_id=3D3149&alloc_id=3D8166&op=3Dclick > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer |
|
From: Colin S. <col...@ex...> - 2004-05-24 23:48:54
|
I think we're all pretty busy now, so now's not a great time, but we should maybe examine at some point the idea of switching to Emma http://emma.sourceforge.net/ for test code coverage analysis. It looks pretty decent; not quite on the level of Clover, but no license restrictions, and it actually does some things that Clover doesn't (as far as I can tell) like being able to instrument code on the fly (along with the normal pre-instrumentation) to do analysis without a pre-instrument phase. I'll probably be using this on any future coding I do... Colin |
|
From: <jue...@we...> - 2004-05-24 18:50:06
|
Don't worry, I knew that you had just been halfway through :-) Juergen -----Original Message----- From: spr...@li... [mailto:spr...@li...]On Behalf Of Seth Ladd Sent: Monday, May 24, 2004 8:30 PM To: spr...@li... Subject: Re: [Springframework-developer] Cleanup of context resources on webapp reload -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 j=FCrgen h=F6ller [werk3AT] wrote: | As you will notice in my follow-ups to the mail you quoted, I have already verified the issue, done a lot of profiling, and adapted affected Spring code as far as possible. This will make it into release 1.0.2, to be released tomorrow. For details, see my other mails. Yep, sorry about that... that's the problem with responding to weekend piles of email before reading through them all. :) Seth -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.3-nr1 (Windows XP) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFAsj8KKZsFSwtW+wIRAtOnAJ0YbYZfFnzIZCJueRNQaq1IWjujCgCffCOf EBsfqB2nxqI5WBngrGbPux4=3D =3D5XmN -----END PGP SIGNATURE----- ------------------------------------------------------- This SF.Net email is sponsored by: Oracle 10g Get certified on the hottest thing ever to hit the market... Oracle 10g. = Take an Oracle 10g class now, and we'll give you the exam FREE. http://ads.osdn.com/?ad_id=3D3149&alloc_id=3D8166&op=3Dclick _______________________________________________ Springframework-developer mailing list Spr...@li... https://lists.sourceforge.net/lists/listinfo/springframework-developer |
|
From: Keith D. <kd...@cs...> - 2004-05-24 18:45:07
|
I agree the commons-validator adapter should not be part of the emerging declarative rules subproject. It really is a small, specialized adapter = for those who already have an investment in commons-validator (generally = those migrating from Struts.) And with the adapter being so small, it might just be worth including. = Or possibly we want a generic "extensions" or "contrib" module for it. Our declarative rules stuff will bring more power to the table (e.g = complex, nested bean property expressions), and an easier extensibility model for defining new rules (as well as fully automated results reporting), but = yes it is still under development. =20 As far as the code, it is good but we still need unit test coverage. Keith -----Original Message----- From: spr...@li... [mailto:spr...@li...] On Behalf = Of Seth Ladd Sent: Monday, May 24, 2004 2:03 PM To: spr...@li... Subject: Re: [Springframework-developer] Preparing for 1.0.2 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 j=FCrgen h=F6ller [werk3AT] wrote: | Matt, | | We still haven't decided on how to proceed with the Commons Validator stuff; for the time being, it remains in the sandbox. If you like, please create an issue in our JIRA for it! | | As far as I see, it's just 8 classes, including a specific JSP custom tag; so I could imagine that we include it as part of the Spring distribution. I'm not sure if it should be part of Keith's emerging "spring-rules" subproject; that's rather gonna be a separate rules-based validation engine with its own plug into Spring's validation. And 8 integration classes aren't a convincing candidate for an own subproject either. | | You have used those Commons Validator integration classes pretty intensely, haven't you? Do you already consider them comprehensive enough for a release? Do you see any room for improvement there? Do you know of any existing alternative validation libraries that people could also want to have plugged into Spring? (To me, Commons Validator seems to be the only candidate for direct support in Spring at this point of time.) Just adding in my experience: I've been using the commons-validator code for a few weeks now and it's working great. It was really nice to simply move all my struts formbeans over to spring with hardly a change. Seth -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.3-nr1 (Windows XP) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFAsjjmKZsFSwtW+wIRAismAJ9RZfdMppkBInsrF3YlLm2OsYqfNQCfU7Yv xOJ3KjQIaksHKFy5whMUno0=3D =3DTQaj -----END PGP SIGNATURE----- ------------------------------------------------------- This SF.Net email is sponsored by: Oracle 10g Get certified on the hottest thing ever to hit the market... Oracle 10g. = Take an Oracle 10g class now, and we'll give you the exam FREE. http://ads.osdn.com/?ad_id=3D3149&alloc_id=3D8166&op=3Dclick _______________________________________________ Springframework-developer mailing list Spr...@li... https://lists.sourceforge.net/lists/listinfo/springframework-developer |
|
From: Seth L. <se...@eh...> - 2004-05-24 18:27:41
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 jürgen höller [werk3AT] wrote: | As you will notice in my follow-ups to the mail you quoted, I have already verified the issue, done a lot of profiling, and adapted affected Spring code as far as possible. This will make it into release 1.0.2, to be released tomorrow. For details, see my other mails. Yep, sorry about that... that's the problem with responding to weekend piles of email before reading through them all. :) Seth -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.3-nr1 (Windows XP) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFAsj8KKZsFSwtW+wIRAtOnAJ0YbYZfFnzIZCJueRNQaq1IWjujCgCffCOf EBsfqB2nxqI5WBngrGbPux4= =5XmN -----END PGP SIGNATURE----- |
|
From: Tim K. <tim...@vi...> - 2004-05-24 18:20:19
|
I'd love to check it out, but I'm jammed up w/ other stuff until end of =20= this week. Being that we're just restarting Tomcat on every deploy, =20 this problem isn't a high priority for us at the moment - the OOMs only =20= occur when reloading the context in Tomcat. But I will check it out =20 with the 1.0.2 release as soon as possible and let you know of my =20 findings. Thanks again for looking into it. -tim On May 24, 2004, at 1:28 PM, j=9Frgen h=9Aller [werk3AT] wrote: > Tim, > > As I'm about to release Spring 1.0.2 tomorrow, it would be great if =20= > you could give the current CVS HEAD a try promptly. I'm pretty sure =20= > that it alleviates the situation as much as possible, but a =20 > verification always helps :-) > > Juergen > > > -----Original Message----- > From: spr...@li... > [mailto:spr...@li...]On = Behalf > Of Tim Kettering > Sent: Monday, May 24, 2004 4:47 PM > To: spr...@li... > Subject: Re: [Springframework-developer] Cleanup of context resources =20= > on > webapp reload > > > Jurgen, > > Thanks for looking into this issue. When I originally reported on it, > and didnt hear much discussion on it, I had started to think that i = was > the only person experiencing the memory leak and that I was coding > something wrong. > > Your experiences w/ JProfiler are very similar to what I was seeing > when I was running JProfiler against our code, although you've > obviously delved deeper into the exact reasons for those leaks. I = will > give the latest build of spring a try on our code and hopefully it > should help alleviate the situation some. > > I also wanted to add a comment in respect to what Guillaume said below > that we've consistently seen OOM errors coming from Tomcat after X > amount of reloads done by the test server. And this can happen over > the span of several days, so I do not believe that those resources are > going to be GC'ed at all, unless the definition of "took a while" = means > a week or so. :) Resin may be doing something different however. > > -tim > > > On May 24, 2004, at 8:48 AM, Guillaume Poirier wrote: > >> Well, I find it really weird, because I've tested such behavior = before >> on >> Resin 2.1.10, and while it took a while before the resources were >> garbage >> collected, they were always eventually collected. And if I added a >> System.gc() when the ServletContext was loaded, all my singletons = were >> being >> collected right away. During all your tests, did you notice higher >> memory >> consumption or did you actually get a OutOfMemoryError ? May be it's >> the >> profiler that keeps a reference on some resource(s) for some reasons? >> >> But if it is really a ClassLoader issue, shouldn't you be able to >> simulate >> the situation outside a Servlet Container? I've run the attached >> test, and >> while I create a memory leak quickly if I keep a reference on the >> ClassLoader, I am not able to produce one without holding a ref on = it. >> >> Or is my test flawed? >> >> Guillaume >> >> ----- Original Message ----- >> From: "j=9Frgen h=9Aller [werk3AT]" <jue...@we...> >> To: <spr...@li...> >> Sent: Monday, May 24, 2004 4:41 AM >> Subject: Re: [Springframework-developer] Cleanup of context resources >> on >> webapp reload >> >> >> Just finished tests on Resin 2.1.11 - exactly same behavior as with >> Tomcat. >> This *is* a general class loader respectively garbage collection =20 >> issue, >> rather than a server-specific leak. >> >> Consequently, with the changes I've committed yesterday, there is the >> same >> significant benefit as with Tomcat. The only remaining issue are the >> "full >> object" constants like ClassFilter.TRUE. >> >> Juergen >> >> >> ________________________________ >> >> Von: spr...@li... im Auftrag >> von >> j=9Frgen h=9Aller [werk3AT] >> Gesendet: Mo 24.05.2004 09:20 >> An: spr...@li... >> Betreff: Re: [Springframework-developer] Cleanup of context resources >> on >> webapp reload >> >> >> >> FYI, I've tested both Tomcat 5.0.18 and 4.1.27 - same behavior with >> both. >> >> BTW, a couple of related posts from the Resin mailing list: >> >> http://www.caucho.com/support/resin-interest/0404/0117.html >> http://www.caucho.com/support/resin-interest/0111/0164.html >> <http://www.caucho.com/support/resin-interest/0111/0164.html> >> >> Juergen >> >> >> ________________________________ >> >> Von: spr...@li... im Auftrag >> von >> j=9Frgen h=9Aller [werk3AT] >> Gesendet: Mo 24.05.2004 08:42 >> An: spr...@li... >> Betreff: Re: [Springframework-developer] Cleanup of context resources >> on >> webapp reload >> >> >> >> I've told JProfiler to explicitly run garbage collection - a number = of >> times, actually - before I've had a look at the heap. So I'm sure = that >> those >> remaining objects were not garbage-collected, and probably would have >> stayed >> around in the VM forever... >> >> I'm aware that it seems odd, but this issue just seems to affect >> specific >> static fields: BeanWrapperImpl's defaultEditors did not cause a leak, >> but >> CachedIntrospectionResults' classCache did. Normal constants or = static >> logger fields didn't, but "full object" constants like >> ClassFilters.TRUE >> did. >> >> CachedIntrospectionResults' classCache uses the Class as key; the >> value, a >> CachedIntrospectionResult object, also refers to the key Class. >> Consequently, I had to use a WeakHashMap *with WeakReferences as >> values* to >> see proper garbage collection. Note that this static cache contains >> instances of its containing class as values. >> >> I've run all my tests x times to make sure that I could trust my = eyes. >> I've >> even undone the WeakReference changes again, and voila, there were = the >> leaks >> again. I'd be happy to learn more about how the garbage collector =20 >> works >> here... All I can state at this point of time is that the changes did >> cause >> an obvious difference in terms of resource leaks. >> >> Juergen >> >> >> ________________________________ >> >> Von: spr...@li... im Auftrag >> von >> Guillaume Poirier >> Gesendet: Mo 24.05.2004 05:17 >> An: spr...@li... >> Betreff: Re: [Springframework-developer] Cleanup of context resources >> on >> webapp reload >> >> >> >> The "resource leak" caused by a singleton when a webapp's classloader >> is >> thrown away is only temorary, the unused classes and the classloader >> will be >> eventually garbage collected and the resources will be freed. The =20= >> only >> thing that could prevent that is if there was a something in the >> server's >> classloader that still had a reference on an object or a class of the >> child >> classloader. >> >> Unless there's a bug in Tomcat or in the application code, I really >> can't >> see how the classes won't be eventually garbage collected when the = JVM >> needs >> memory. And anyway, if there was indeed a leak because >> SQLErrorCodesFactory >> is a singleton, why wouldn't there be one for each static fields such >> as >> constants? >> >> Are you sure that JProfiler does not disable garbage collecting in >> order to >> make its profiling? I know that in many of the JVMPI method calls = are >> done >> with garbage collecting off. I suspect the above to be the cause of >> the >> "resource leak", rather than any singleton that Spring might be = using. >> >> Guillaume >> >> ----- Original Message ----- >> From: "j=9Frgen h=9Aller [werk3AT]" <jue...@we...> >> To: <spr...@li...> >> Sent: Sunday, May 23, 2004 4:45 PM >> Subject: Re: [Springframework-developer] Cleanup of context resources >> on >> webapp reload >> >> >> I've just spent about 10 hours profiling Spring, using the Image >> Database >> and Petclinic samples. (BTW, I've used an evaluation version of >> JProfiler >> from ej-technologies - nice product!) >> >> Although I still don't completely understand the garbage collection >> behavior, I've figured out the following issues. Each of them simply >> prevents the respective classes from getting garbage collected on >> destruction of the class loader (e.g. on Tomcat web app shutdown). >> >> - A classic singleton with a class variable holding the object. I've >> reworked GlobalAdvisorAdapterRegistry and SQLErrorCodesFactory to = hold >> the >> respective singleton as a WeakReference. >> >> - A static cache. I've reworked CachedIntrospectionResults to use a >> WeakHashMap with WeakReferences as values. >> >> - A ThreadLocal with a default other than null. I've reworked >> TransactionSynchronizationManager to use null as default for the >> resource >> map, setting a HashMap there on demand, removing the entire HashMap >> when >> unbinding the last resource. >> >> - Constants that define a full object. We have a number of those, for >> example ClassFilters.TRUE and AdvisedSupport.EMPTY_TARGET_SOURCE. = I've >> tried >> for quite a while, but I haven't been able to figure out a way to >> define >> such constants such that they will be garbage collected. >> >> The latter programming style is not uncommon, so I really don't >> understand >> why it causes trouble with garbage collection. Hibernate uses a =20 >> similar >> style for its FlushMode, for example. >> >> In general, other frameworks like CGLIB, Hibernate, Velocity have = huge >> resource leaks on web app shutdown, while just the constants issue >> remains >> with Spring now. As long as those huge third-party leaks are not >> addressed, >> I'm not worried at all by the single remaining Spring issue. >> >> As I initially said, we shouldn't exaggerate the problem, as it >> basically >> just affects hot reloading of web apps - mainly a development feature >> anyway. We need to make that clear to users too, to avoid comments a =20= >> la >> "Spring is not usable for real apps because it leaks on hot >> redeployment". >> >> Please, everybody, give the current CVS head a sanity check tomorrow. >> There >> shouldn't be any issues: the test suite passes, the sample apps run >> properly. Still, I'd feel more comfortable if we make sure that no >> subtle >> side effects have been introduced. >> >> For this reason, I will delay release 1.0.2 till tomorrow night. >> >> Juergen >> >> >> ________________________________ >> >> Von: spr...@li... im Auftrag >> von >> j=9Frgen h=9Aller [werk3AT] >> Gesendet: Sa 22.05.2004 15:52 >> An: spr...@li... >> Betreff: Re: [Springframework-developer] Cleanup of context resources >> on >> webapp reload >> >> >> >> So basically, all static caches cause resource leaks when restarting = a >> Tomcat web app? I wonder why this happens... The class loader should >> completely dissolve all classes that it has loaded in its lifetime, >> including static caches. Or have I misunderstood something here? =20 >> Anyone >> having in-detail experience with handling such a scenario? >> >> Juergen >> >> >> ________________________________ >> >> Von: spr...@li... im Auftrag >> von >> Dmitriy Kopylenko >> Gesendet: Di 04.05.2004 18:02 >> An: spr...@li... >> Betreff: Re: [Springframework-developer] Cleanup of context resources >> on >> webapp reload >> >> >> >> Well, >> >> for instance SQLErrorCodesFactory is a singleton(GoF, not Spring) =20 >> which >> caches SQLErrorCodes internally in the Map with strong references. >> Again, I >> don't know if trying >> to use WeakHashMap there would do the trick... >> >> Dmitriy >> >> Tim Kettering wrote: >> >>> >>> I looked at it some more this morning, and basically what I did was >>> start up tomcat w/ the webapp in the profiler, then after it was = done >>> starting up I used tomcat's manager to stop the context. This = should >>> destroy all resources related to the context. Here is a list of >>> spring related stuff that still were in memory after the context was >>> closed. Other stuff was cleaned up just fine. >>> >>> org.springframework.beans.CachedIntrospectionResults >>> org.springframework.jdbc.support.SQLCodes >>> org.springframework.core.Constants >>> org.springframework.aop.framework.AdvisedSupport$1 >>> org.springframework.aop.framework.adapter.BeforeAdviceAdapter >>> = org.springframework.aop.framework.adapter.AfterReturningAdviceAdapter >>> org.springframework.jdbc.support.SQLErrorCodesFactory >>> = org.springframework.transaction.support.TransactionSynchronizationMan=20 >>> a >>> ge >>> r$1 >>> org.springframework.transaction.interceptor.RollbackRuleAttribute >>> org.springframework.aop.framework.adapter.ThrosAdviceAdapter >>> org.springframework.aop.Pointcut$1 >>> = org.springframework.aop.framework.adapter.GlobalAdvisorAdapterRegistr=20 >>> y >>> >>> On May 3, 2004, at 3:28 PM, Dmitriy Kopylenko wrote: >>> >>>> I'm just wondering, would the use of WeakHashMap in >>>> CachedIntrospectionResults help? >>>> >>>> Dmitriy. >>>> >>>> Tim Kettering wrote: >>>> >>>>> I posted this to the users list last week and did not receive any >>>>> reply on it, so I'm posting it again here on the developer list, =20= >>>>> in >>>>> hopes i could get an reply from someone here. I'm trying to >>>>> determine if its something I should be doing myself, or if hte >>>>> spring context should be cleaning up those resources by itself on >>>>> the .close() call. Further profiling shows that there are >>>>> duplicate instances of SQLError and hibernate proxy classes >>>>> hanging >>>>> around afterwards too. Other objects do get cleaned up = properly. >>>>> -------- >>>>> Hi everyone, >>>>> We're (meaning me) looking into some resource leaks that are >>>>> occuring when our webapp context gets reloaded. I found that >>>>> context.close() needs to be called on the destroy() method of >>>>> plugin we're using, and it works for a good majority of the >>>>> objects >>>>> we were seeing leaked, but there are some objects that I'm = unable >>>>> to make go away. Object in question is the: >>>>> org.springframework.beans.CachedIntrospectionResults >>>>> Whenever I reload the context - the profiler I'm using shows that = I >>>>> have essentially a duplicate group of those objects (same instance >>>>> count) as the original, and successive reloads will continue to >>>>> duplicate this. >>>>> The profiler also shows the final reference to those objects like >>>>> this: >>>>> 100% - 1008 bytes - 63 alloc. >>>>> = org.springframework.context.support.ClassPathXmlApplicationContext.=20 >>>>> < >>>>> in >>>>> it > >>>>> So basically I guess what I'm asking is for ideas or suggestions = on >>>>> how I could get those to clean up. This bean doesnt show up in =20= >>>>> the >>>>> Spring javadocs. And looking in CVS says its a package level =20 >>>>> bean, >>>>> not for application use, so I'm thinking that closing the context >>>>> should (in theory) clean this up? Thanks in advance. >>>>> -tim >>>>> ------------------------------------------------------- >>>>> This SF.Net email is sponsored by: Oracle 10g >>>>> Get certified on the hottest thing ever to hit the market... = Oracle >>>>> 10g. Take an Oracle 10g class now, and we'll give you the exam =20 >>>>> FREE. >>>>> http://ads.osdn.com/?ad_id=3D3149&alloc_id=3D8166&op=3Dclick >>>>> _______________________________________________ >>>>> Springframework-developer mailing list >>>>> Spr...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/springframework- >>>>> developer >>>> >>>> >>>> >>>> >>>> ------------------------------------------------------- >>>> This SF.Net email is sponsored by: Oracle 10g >>>> Get certified on the hottest thing ever to hit the market... Oracle >>>> 10g. Take an Oracle 10g class now, and we'll give you the exam = FREE. >>>> http://ads.osdn.com/?ad_id=3D3149&alloc_id=3D8166&op=3Dclick >>>> _______________________________________________ >>>> Springframework-developer mailing list >>>> Spr...@li... >>>> https://lists.sourceforge.net/lists/listinfo/springframework- >>>> developer >>>> >>> >>> >>> >>> ------------------------------------------------------- >>> This SF.Net email is sponsored by: Oracle 10g >>> Get certified on the hottest thing ever to hit the market... Oracle >>> 10g. >>> Take an Oracle 10g class now, and we'll give you the exam FREE. >>> http://ads.osdn.com/?ad_id=3D3149&alloc_id=3D8166&op=3Dclick >>> _______________________________________________ >>> Springframework-developer mailing list >>> Spr...@li... >>> https://lists.sourceforge.net/lists/listinfo/springframework-=20 >>> developer >> >> >> >> ------------------------------------------------------- >> This SF.Net email is sponsored by: Oracle 10g >> Get certified on the hottest thing ever to hit the market... Oracle >> 10g. >> Take an Oracle 10g class now, and we'll give you the exam FREE. >> http://ads.osdn.com/?ad_id=3D3149&alloc_id=3D8166&op=3Dclick >> _______________________________________________ >> Springframework-developer mailing list >> Spr...@li... >> = https://lists.sourceforge.net/lists/listinfo/springframework-developer >> >> >> >> >> ------------------------------------------------------- >> This SF.Net email is sponsored by: Oracle 10g >> Get certified on the hottest thing ever to hit the market... Oracle >> 10g. >> Take an Oracle 10g class now, and we'll give you the exam FREE. >> http://ads.osdn.com/?ad_id149&alloc_id=FA66&op=3Dick >> _______________________________________________ >> Springframework-developer mailing list >> Spr...@li... >> = https://lists.sourceforge.net/lists/listinfo/springframework-developer >> >> >> >> >> ------------------------------------------------------- >> This SF.Net email is sponsored by: Oracle 10g >> Get certified on the hottest thing ever to hit the market... Oracle >> 10g. >> Take an Oracle 10g class now, and we'll give you the exam FREE. >> http://ads.osdn.com/?ad_id149&alloc_id=FA66&op=3Dick >> _______________________________________________ >> Springframework-developer mailing list >> Spr...@li... >> = https://lists.sourceforge.net/lists/listinfo/springframework-developer >> >> >> >> >> ------------------------------------------------------- >> This SF.Net email is sponsored by: Oracle 10g >> Get certified on the hottest thing ever to hit the market... Oracle >> 10g. >> Take an Oracle 10g class now, and we'll give you the exam FREE. >> http://ads.osdn.com/?ad_id=3D3149&alloc_id=3D8166&op=3Dclick >> _______________________________________________ >> Springframework-developer mailing list >> Spr...@li... >> = https://lists.sourceforge.net/lists/listinfo/springframework-developer >> >> >> >> >> ------------------------------------------------------- >> This SF.Net email is sponsored by: Oracle 10g >> Get certified on the hottest thing ever to hit the market... Oracle >> 10g. >> Take an Oracle 10g class now, and we'll give you the exam FREE. >> http://ads.osdn.com/?ad_id149&alloc_id=FA66&op=3Dick >> _______________________________________________ >> Springframework-developer mailing list >> Spr...@li... >> = https://lists.sourceforge.net/lists/listinfo/springframework-developer >> >> >> >> >> ------------------------------------------------------- >> This SF.Net email is sponsored by: Oracle 10g >> Get certified on the hottest thing ever to hit the market... Oracle >> 10g. >> Take an Oracle 10g class now, and we'll give you the exam FREE. >> http://ads.osdn.com/?ad_id149&alloc_id=FA66&op=3Dick >> _______________________________________________ >> Springframework-developer mailing list >> Spr...@li... >> = https://lists.sourceforge.net/lists/listinfo/springframework-developer >> >> >> >> >> ------------------------------------------------------- >> This SF.Net email is sponsored by: Oracle 10g >> Get certified on the hottest thing ever to hit the market... Oracle >> 10g. >> Take an Oracle 10g class now, and we'll give you the exam FREE. >> http://ads.osdn.com/?ad_id149&alloc_id=FA66&op=3Dick >> _______________________________________________ >> Springframework-developer mailing list >> Spr...@li... >> = https://lists.sourceforge.net/lists/listinfo/springframework-developer >> <classloader.tar.gz> > > > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market... Oracle =20= > 10g. > Take an Oracle 10g class now, and we'll give you the exam FREE. > http://ads.osdn.com/?ad_id149&alloc_id=AA66&op=3Dick > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market... Oracle =20= > 10g. > Take an Oracle 10g class now, and we'll give you the exam FREE. > http://ads.osdn.com/?ad_id149&alloc_id=AA66&op=3Dclick > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > |
|
From: <jue...@we...> - 2004-05-24 18:16:24
|
As you will notice in my follow-ups to the mail you quoted, I have = already verified the issue, done a lot of profiling, and adapted = affected Spring code as far as possible. This will make it into release = 1.0.2, to be released tomorrow. For details, see my other mails. Juergen -----Original Message----- From: spr...@li... [mailto:spr...@li...]On Behalf Of Seth Ladd Sent: Monday, May 24, 2004 7:59 PM To: spr...@li... Subject: Re: [Springframework-developer] Cleanup of context resources on webapp reload -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 j=FCrgen h=F6ller [werk3AT] wrote: | So basically, all static caches cause resource leaks when restarting a Tomcat web app? I wonder why this happens... The class loader should completely dissolve all classes that it has loaded in its lifetime, including static caches. Or have I misunderstood something here? Anyone having in-detail experience with handling such a scenario? | That has been my experience. I've noticed the static init blocks from BeanWrapperImpl never leaving scope after a webapp uninstall. Again, an easy way to verify this is to just redeploy the spring-minimal.war over and over. This will generate a OOM. Seth -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.3-nr1 (Windows XP) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFAsjfxKZsFSwtW+wIRAiRTAJ9CBVRbheW6McGOLKbunWEyXeESZwCfU4sO tzdNXKEXcoYjFUuLxkjX/Ig=3D =3Dzu5p -----END PGP SIGNATURE----- ------------------------------------------------------- This SF.Net email is sponsored by: Oracle 10g Get certified on the hottest thing ever to hit the market... Oracle 10g. = Take an Oracle 10g class now, and we'll give you the exam FREE. http://ads.osdn.com/?ad_id=3D3149&alloc_id=3D8166&op=3Dclick _______________________________________________ Springframework-developer mailing list Spr...@li... https://lists.sourceforge.net/lists/listinfo/springframework-developer |
|
From: Seth L. <se...@eh...> - 2004-05-24 18:01:29
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 jürgen höller [werk3AT] wrote: | Matt, | | We still haven't decided on how to proceed with the Commons Validator stuff; for the time being, it remains in the sandbox. If you like, please create an issue in our JIRA for it! | | As far as I see, it's just 8 classes, including a specific JSP custom tag; so I could imagine that we include it as part of the Spring distribution. I'm not sure if it should be part of Keith's emerging "spring-rules" subproject; that's rather gonna be a separate rules-based validation engine with its own plug into Spring's validation. And 8 integration classes aren't a convincing candidate for an own subproject either. | | You have used those Commons Validator integration classes pretty intensely, haven't you? Do you already consider them comprehensive enough for a release? Do you see any room for improvement there? Do you know of any existing alternative validation libraries that people could also want to have plugged into Spring? (To me, Commons Validator seems to be the only candidate for direct support in Spring at this point of time.) Just adding in my experience: I've been using the commons-validator code for a few weeks now and it's working great. It was really nice to simply move all my struts formbeans over to spring with hardly a change. Seth -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.3-nr1 (Windows XP) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFAsjjmKZsFSwtW+wIRAismAJ9RZfdMppkBInsrF3YlLm2OsYqfNQCfU7Yv xOJ3KjQIaksHKFy5whMUno0= =TQaj -----END PGP SIGNATURE----- |
|
From: Seth L. <se...@eh...> - 2004-05-24 17:57:29
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 jürgen höller [werk3AT] wrote: | So basically, all static caches cause resource leaks when restarting a Tomcat web app? I wonder why this happens... The class loader should completely dissolve all classes that it has loaded in its lifetime, including static caches. Or have I misunderstood something here? Anyone having in-detail experience with handling such a scenario? | That has been my experience. I've noticed the static init blocks from BeanWrapperImpl never leaving scope after a webapp uninstall. Again, an easy way to verify this is to just redeploy the spring-minimal.war over and over. This will generate a OOM. Seth -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.3-nr1 (Windows XP) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFAsjfxKZsFSwtW+wIRAiRTAJ9CBVRbheW6McGOLKbunWEyXeESZwCfU4sO tzdNXKEXcoYjFUuLxkjX/Ig= =zu5p -----END PGP SIGNATURE----- |
|
From: <jue...@we...> - 2004-05-24 17:29:16
|
Tim, As I'm about to release Spring 1.0.2 tomorrow, it would be great if you = could give the current CVS HEAD a try promptly. I'm pretty sure that it = alleviates the situation as much as possible, but a verification always = helps :-) Juergen -----Original Message----- From: spr...@li... [mailto:spr...@li...]On Behalf Of Tim Kettering Sent: Monday, May 24, 2004 4:47 PM To: spr...@li... Subject: Re: [Springframework-developer] Cleanup of context resources on webapp reload Jurgen, Thanks for looking into this issue. When I originally reported on it, =20 and didnt hear much discussion on it, I had started to think that i was = the only person experiencing the memory leak and that I was coding =20 something wrong. Your experiences w/ JProfiler are very similar to what I was seeing =20 when I was running JProfiler against our code, although you've =20 obviously delved deeper into the exact reasons for those leaks. I will = give the latest build of spring a try on our code and hopefully it =20 should help alleviate the situation some. I also wanted to add a comment in respect to what Guillaume said below =20 that we've consistently seen OOM errors coming from Tomcat after X =20 amount of reloads done by the test server. And this can happen over =20 the span of several days, so I do not believe that those resources are =20 going to be GC'ed at all, unless the definition of "took a while" means = a week or so. :) Resin may be doing something different however. -tim On May 24, 2004, at 8:48 AM, Guillaume Poirier wrote: > Well, I find it really weird, because I've tested such behavior before = =20 > on > Resin 2.1.10, and while it took a while before the resources were =20 > garbage > collected, they were always eventually collected. And if I added a > System.gc() when the ServletContext was loaded, all my singletons were = =20 > being > collected right away. During all your tests, did you notice higher =20 > memory > consumption or did you actually get a OutOfMemoryError ? May be it's = > the > profiler that keeps a reference on some resource(s) for some reasons? > > But if it is really a ClassLoader issue, shouldn't you be able to =20 > simulate > the situation outside a Servlet Container? I've run the attached =20 > test, and > while I create a memory leak quickly if I keep a reference on the > ClassLoader, I am not able to produce one without holding a ref on it. > > Or is my test flawed? > > Guillaume > > ----- Original Message ----- > From: "j=FCrgen h=F6ller [werk3AT]" <jue...@we...> > To: <spr...@li...> > Sent: Monday, May 24, 2004 4:41 AM > Subject: Re: [Springframework-developer] Cleanup of context resources = > on > webapp reload > > > Just finished tests on Resin 2.1.11 - exactly same behavior as with =20 > Tomcat. > This *is* a general class loader respectively garbage collection = issue, > rather than a server-specific leak. > > Consequently, with the changes I've committed yesterday, there is the = > same > significant benefit as with Tomcat. The only remaining issue are the =20 > "full > object" constants like ClassFilter.TRUE. > > Juergen > > > ________________________________ > > Von: spr...@li... im Auftrag = > von > j=FCrgen h=F6ller [werk3AT] > Gesendet: Mo 24.05.2004 09:20 > An: spr...@li... > Betreff: Re: [Springframework-developer] Cleanup of context resources = > on > webapp reload > > > > FYI, I've tested both Tomcat 5.0.18 and 4.1.27 - same behavior with =20 > both. > > BTW, a couple of related posts from the Resin mailing list: > > http://www.caucho.com/support/resin-interest/0404/0117.html > http://www.caucho.com/support/resin-interest/0111/0164.html > <http://www.caucho.com/support/resin-interest/0111/0164.html> > > Juergen > > > ________________________________ > > Von: spr...@li... im Auftrag = > von > j=FCrgen h=F6ller [werk3AT] > Gesendet: Mo 24.05.2004 08:42 > An: spr...@li... > Betreff: Re: [Springframework-developer] Cleanup of context resources = > on > webapp reload > > > > I've told JProfiler to explicitly run garbage collection - a number of > times, actually - before I've had a look at the heap. So I'm sure that = =20 > those > remaining objects were not garbage-collected, and probably would have = > stayed > around in the VM forever... > > I'm aware that it seems odd, but this issue just seems to affect =20 > specific > static fields: BeanWrapperImpl's defaultEditors did not cause a leak, = > but > CachedIntrospectionResults' classCache did. Normal constants or static > logger fields didn't, but "full object" constants like =20 > ClassFilters.TRUE > did. > > CachedIntrospectionResults' classCache uses the Class as key; the =20 > value, a > CachedIntrospectionResult object, also refers to the key Class. > Consequently, I had to use a WeakHashMap *with WeakReferences as =20 > values* to > see proper garbage collection. Note that this static cache contains > instances of its containing class as values. > > I've run all my tests x times to make sure that I could trust my eyes. = =20 > I've > even undone the WeakReference changes again, and voila, there were the = =20 > leaks > again. I'd be happy to learn more about how the garbage collector = works > here... All I can state at this point of time is that the changes did = > cause > an obvious difference in terms of resource leaks. > > Juergen > > > ________________________________ > > Von: spr...@li... im Auftrag = > von > Guillaume Poirier > Gesendet: Mo 24.05.2004 05:17 > An: spr...@li... > Betreff: Re: [Springframework-developer] Cleanup of context resources = > on > webapp reload > > > > The "resource leak" caused by a singleton when a webapp's classloader = > is > thrown away is only temorary, the unused classes and the classloader =20 > will be > eventually garbage collected and the resources will be freed. The = only > thing that could prevent that is if there was a something in the =20 > server's > classloader that still had a reference on an object or a class of the = > child > classloader. > > Unless there's a bug in Tomcat or in the application code, I really =20 > can't > see how the classes won't be eventually garbage collected when the JVM = =20 > needs > memory. And anyway, if there was indeed a leak because =20 > SQLErrorCodesFactory > is a singleton, why wouldn't there be one for each static fields such = > as > constants? > > Are you sure that JProfiler does not disable garbage collecting in =20 > order to > make its profiling? I know that in many of the JVMPI method calls are = =20 > done > with garbage collecting off. I suspect the above to be the cause of =20 > the > "resource leak", rather than any singleton that Spring might be using. > > Guillaume > > ----- Original Message ----- > From: "j=FCrgen h=F6ller [werk3AT]" <jue...@we...> > To: <spr...@li...> > Sent: Sunday, May 23, 2004 4:45 PM > Subject: Re: [Springframework-developer] Cleanup of context resources = > on > webapp reload > > > I've just spent about 10 hours profiling Spring, using the Image =20 > Database > and Petclinic samples. (BTW, I've used an evaluation version of =20 > JProfiler > from ej-technologies - nice product!) > > Although I still don't completely understand the garbage collection > behavior, I've figured out the following issues. Each of them simply > prevents the respective classes from getting garbage collected on > destruction of the class loader (e.g. on Tomcat web app shutdown). > > - A classic singleton with a class variable holding the object. I've > reworked GlobalAdvisorAdapterRegistry and SQLErrorCodesFactory to hold = =20 > the > respective singleton as a WeakReference. > > - A static cache. I've reworked CachedIntrospectionResults to use a > WeakHashMap with WeakReferences as values. > > - A ThreadLocal with a default other than null. I've reworked > TransactionSynchronizationManager to use null as default for the =20 > resource > map, setting a HashMap there on demand, removing the entire HashMap =20 > when > unbinding the last resource. > > - Constants that define a full object. We have a number of those, for > example ClassFilters.TRUE and AdvisedSupport.EMPTY_TARGET_SOURCE. I've = =20 > tried > for quite a while, but I haven't been able to figure out a way to =20 > define > such constants such that they will be garbage collected. > > The latter programming style is not uncommon, so I really don't =20 > understand > why it causes trouble with garbage collection. Hibernate uses a = similar > style for its FlushMode, for example. > > In general, other frameworks like CGLIB, Hibernate, Velocity have huge > resource leaks on web app shutdown, while just the constants issue =20 > remains > with Spring now. As long as those huge third-party leaks are not =20 > addressed, > I'm not worried at all by the single remaining Spring issue. > > As I initially said, we shouldn't exaggerate the problem, as it =20 > basically > just affects hot reloading of web apps - mainly a development feature > anyway. We need to make that clear to users too, to avoid comments a = la > "Spring is not usable for real apps because it leaks on hot =20 > redeployment". > > Please, everybody, give the current CVS head a sanity check tomorrow. = > There > shouldn't be any issues: the test suite passes, the sample apps run > properly. Still, I'd feel more comfortable if we make sure that no =20 > subtle > side effects have been introduced. > > For this reason, I will delay release 1.0.2 till tomorrow night. > > Juergen > > > ________________________________ > > Von: spr...@li... im Auftrag = > von > j=FCrgen h=F6ller [werk3AT] > Gesendet: Sa 22.05.2004 15:52 > An: spr...@li... > Betreff: Re: [Springframework-developer] Cleanup of context resources = > on > webapp reload > > > > So basically, all static caches cause resource leaks when restarting a > Tomcat web app? I wonder why this happens... The class loader should > completely dissolve all classes that it has loaded in its lifetime, > including static caches. Or have I misunderstood something here? = Anyone > having in-detail experience with handling such a scenario? > > Juergen > > > ________________________________ > > Von: spr...@li... im Auftrag = > von > Dmitriy Kopylenko > Gesendet: Di 04.05.2004 18:02 > An: spr...@li... > Betreff: Re: [Springframework-developer] Cleanup of context resources = > on > webapp reload > > > > Well, > > for instance SQLErrorCodesFactory is a singleton(GoF, not Spring) = which > caches SQLErrorCodes internally in the Map with strong references. =20 > Again, I > don't know if trying > to use WeakHashMap there would do the trick... > > Dmitriy > > Tim Kettering wrote: > >> >> I looked at it some more this morning, and basically what I did was >> start up tomcat w/ the webapp in the profiler, then after it was done >> starting up I used tomcat's manager to stop the context. This should >> destroy all resources related to the context. Here is a list of >> spring related stuff that still were in memory after the context was >> closed. Other stuff was cleaned up just fine. >> >> org.springframework.beans.CachedIntrospectionResults >> org.springframework.jdbc.support.SQLCodes >> org.springframework.core.Constants >> org.springframework.aop.framework.AdvisedSupport$1 >> org.springframework.aop.framework.adapter.BeforeAdviceAdapter >> org.springframework.aop.framework.adapter.AfterReturningAdviceAdapter >> org.springframework.jdbc.support.SQLErrorCodesFactory >> = org.springframework.transaction.support.TransactionSynchronizationMana=20 >> ge >> r$1 >> org.springframework.transaction.interceptor.RollbackRuleAttribute >> org.springframework.aop.framework.adapter.ThrosAdviceAdapter >> org.springframework.aop.Pointcut$1 >> = org.springframework.aop.framework.adapter.GlobalAdvisorAdapterRegistry >> >> On May 3, 2004, at 3:28 PM, Dmitriy Kopylenko wrote: >> >>> I'm just wondering, would the use of WeakHashMap in >>> CachedIntrospectionResults help? >>> >>> Dmitriy. >>> >>> Tim Kettering wrote: >>> >>>> I posted this to the users list last week and did not receive any >>>> reply on it, so I'm posting it again here on the developer list, = in >>>> hopes i could get an reply from someone here. I'm trying to >>>> determine if its something I should be doing myself, or if hte >>>> spring context should be cleaning up those resources by itself on >>>> the .close() call. Further profiling shows that there are >>>> duplicate instances of SQLError and hibernate proxy classes =20 >>>> hanging >>>> around afterwards too. Other objects do get cleaned up properly. >>>> -------- >>>> Hi everyone, >>>> We're (meaning me) looking into some resource leaks that are >>>> occuring when our webapp context gets reloaded. I found that >>>> context.close() needs to be called on the destroy() method of >>>> plugin we're using, and it works for a good majority of the =20 >>>> objects >>>> we were seeing leaked, but there are some objects that I'm unable >>>> to make go away. Object in question is the: >>>> org.springframework.beans.CachedIntrospectionResults >>>> Whenever I reload the context - the profiler I'm using shows that I >>>> have essentially a duplicate group of those objects (same instance >>>> count) as the original, and successive reloads will continue to >>>> duplicate this. >>>> The profiler also shows the final reference to those objects like = >>>> this: >>>> 100% - 1008 bytes - 63 alloc. >>>> = org.springframework.context.support.ClassPathXmlApplicationContext.<=20 >>>> in >>>> it > >>>> So basically I guess what I'm asking is for ideas or suggestions on >>>> how I could get those to clean up. This bean doesnt show up in = the >>>> Spring javadocs. And looking in CVS says its a package level = bean, >>>> not for application use, so I'm thinking that closing the context >>>> should (in theory) clean this up? Thanks in advance. >>>> -tim >>>> ------------------------------------------------------- >>>> This SF.Net email is sponsored by: Oracle 10g >>>> Get certified on the hottest thing ever to hit the market... Oracle >>>> 10g. Take an Oracle 10g class now, and we'll give you the exam = FREE. >>>> http://ads.osdn.com/?ad_id=3D3149&alloc_id=3D8166&op=3Dclick >>>> _______________________________________________ >>>> Springframework-developer mailing list >>>> Spr...@li... >>>> https://lists.sourceforge.net/lists/listinfo/springframework-=20 >>>> developer >>> >>> >>> >>> >>> ------------------------------------------------------- >>> This SF.Net email is sponsored by: Oracle 10g >>> Get certified on the hottest thing ever to hit the market... Oracle >>> 10g. Take an Oracle 10g class now, and we'll give you the exam FREE. >>> http://ads.osdn.com/?ad_id=3D3149&alloc_id=3D8166&op=3Dclick >>> _______________________________________________ >>> Springframework-developer mailing list >>> Spr...@li... >>> https://lists.sourceforge.net/lists/listinfo/springframework-=20 >>> developer >>> >> >> >> >> ------------------------------------------------------- >> This SF.Net email is sponsored by: Oracle 10g >> Get certified on the hottest thing ever to hit the market... Oracle =20 >> 10g. >> Take an Oracle 10g class now, and we'll give you the exam FREE. >> http://ads.osdn.com/?ad_id=3D3149&alloc_id=3D8166&op=3Dclick >> _______________________________________________ >> Springframework-developer mailing list >> Spr...@li... >> = https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market... Oracle =20 > 10g. > Take an Oracle 10g class now, and we'll give you the exam FREE. > http://ads.osdn.com/?ad_id=3D3149&alloc_id=3D8166&op=3Dclick > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market... Oracle =20 > 10g. > Take an Oracle 10g class now, and we'll give you the exam FREE. > http://ads.osdn.com/?ad_id149&alloc_id=9966&op=3Dick > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market... Oracle =20 > 10g. > Take an Oracle 10g class now, and we'll give you the exam FREE. > http://ads.osdn.com/?ad_id149&alloc_id=9966&op=3Dick > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market... Oracle =20 > 10g. > Take an Oracle 10g class now, and we'll give you the exam FREE. > http://ads.osdn.com/?ad_id=3D3149&alloc_id=3D8166&op=3Dclick > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market... Oracle =20 > 10g. > Take an Oracle 10g class now, and we'll give you the exam FREE. > http://ads.osdn.com/?ad_id149&alloc_id=9966&op=3Dick > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market... Oracle =20 > 10g. > Take an Oracle 10g class now, and we'll give you the exam FREE. > http://ads.osdn.com/?ad_id149&alloc_id=9966&op=3Dick > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market... Oracle =20 > 10g. > Take an Oracle 10g class now, and we'll give you the exam FREE. > http://ads.osdn.com/?ad_id149&alloc_id=9966&op=3Dick > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > <classloader.tar.gz> ------------------------------------------------------- This SF.Net email is sponsored by: Oracle 10g Get certified on the hottest thing ever to hit the market... Oracle 10g. = Take an Oracle 10g class now, and we'll give you the exam FREE. http://ads.osdn.com/?ad_id149&alloc_id=8166&op=3Dick _______________________________________________ Springframework-developer mailing list Spr...@li... https://lists.sourceforge.net/lists/listinfo/springframework-developer |
|
From: Tim K. <tim...@vi...> - 2004-05-24 14:47:24
|
Jurgen, Thanks for looking into this issue. When I originally reported on it, =20= and didnt hear much discussion on it, I had started to think that i was =20= the only person experiencing the memory leak and that I was coding =20 something wrong. Your experiences w/ JProfiler are very similar to what I was seeing =20 when I was running JProfiler against our code, although you've =20 obviously delved deeper into the exact reasons for those leaks. I will =20= give the latest build of spring a try on our code and hopefully it =20 should help alleviate the situation some. I also wanted to add a comment in respect to what Guillaume said below =20= that we've consistently seen OOM errors coming from Tomcat after X =20 amount of reloads done by the test server. And this can happen over =20 the span of several days, so I do not believe that those resources are =20= going to be GC'ed at all, unless the definition of "took a while" means =20= a week or so. :) Resin may be doing something different however. -tim On May 24, 2004, at 8:48 AM, Guillaume Poirier wrote: > Well, I find it really weird, because I've tested such behavior before = =20 > on > Resin 2.1.10, and while it took a while before the resources were =20 > garbage > collected, they were always eventually collected. And if I added a > System.gc() when the ServletContext was loaded, all my singletons were = =20 > being > collected right away. During all your tests, did you notice higher =20= > memory > consumption or did you actually get a OutOfMemoryError ? May be it's =20= > the > profiler that keeps a reference on some resource(s) for some reasons? > > But if it is really a ClassLoader issue, shouldn't you be able to =20 > simulate > the situation outside a Servlet Container? I've run the attached =20 > test, and > while I create a memory leak quickly if I keep a reference on the > ClassLoader, I am not able to produce one without holding a ref on it. > > Or is my test flawed? > > Guillaume > > ----- Original Message ----- > From: "j=FCrgen h=F6ller [werk3AT]" <jue...@we...> > To: <spr...@li...> > Sent: Monday, May 24, 2004 4:41 AM > Subject: Re: [Springframework-developer] Cleanup of context resources =20= > on > webapp reload > > > Just finished tests on Resin 2.1.11 - exactly same behavior as with =20= > Tomcat. > This *is* a general class loader respectively garbage collection = issue, > rather than a server-specific leak. > > Consequently, with the changes I've committed yesterday, there is the =20= > same > significant benefit as with Tomcat. The only remaining issue are the =20= > "full > object" constants like ClassFilter.TRUE. > > Juergen > > > ________________________________ > > Von: spr...@li... im Auftrag =20= > von > j=FCrgen h=F6ller [werk3AT] > Gesendet: Mo 24.05.2004 09:20 > An: spr...@li... > Betreff: Re: [Springframework-developer] Cleanup of context resources =20= > on > webapp reload > > > > FYI, I've tested both Tomcat 5.0.18 and 4.1.27 - same behavior with =20= > both. > > BTW, a couple of related posts from the Resin mailing list: > > http://www.caucho.com/support/resin-interest/0404/0117.html > http://www.caucho.com/support/resin-interest/0111/0164.html > <http://www.caucho.com/support/resin-interest/0111/0164.html> > > Juergen > > > ________________________________ > > Von: spr...@li... im Auftrag =20= > von > j=FCrgen h=F6ller [werk3AT] > Gesendet: Mo 24.05.2004 08:42 > An: spr...@li... > Betreff: Re: [Springframework-developer] Cleanup of context resources =20= > on > webapp reload > > > > I've told JProfiler to explicitly run garbage collection - a number of > times, actually - before I've had a look at the heap. So I'm sure that = =20 > those > remaining objects were not garbage-collected, and probably would have =20= > stayed > around in the VM forever... > > I'm aware that it seems odd, but this issue just seems to affect =20 > specific > static fields: BeanWrapperImpl's defaultEditors did not cause a leak, =20= > but > CachedIntrospectionResults' classCache did. Normal constants or static > logger fields didn't, but "full object" constants like =20 > ClassFilters.TRUE > did. > > CachedIntrospectionResults' classCache uses the Class as key; the =20 > value, a > CachedIntrospectionResult object, also refers to the key Class. > Consequently, I had to use a WeakHashMap *with WeakReferences as =20 > values* to > see proper garbage collection. Note that this static cache contains > instances of its containing class as values. > > I've run all my tests x times to make sure that I could trust my eyes. = =20 > I've > even undone the WeakReference changes again, and voila, there were the = =20 > leaks > again. I'd be happy to learn more about how the garbage collector = works > here... All I can state at this point of time is that the changes did =20= > cause > an obvious difference in terms of resource leaks. > > Juergen > > > ________________________________ > > Von: spr...@li... im Auftrag =20= > von > Guillaume Poirier > Gesendet: Mo 24.05.2004 05:17 > An: spr...@li... > Betreff: Re: [Springframework-developer] Cleanup of context resources =20= > on > webapp reload > > > > The "resource leak" caused by a singleton when a webapp's classloader =20= > is > thrown away is only temorary, the unused classes and the classloader =20= > will be > eventually garbage collected and the resources will be freed. The = only > thing that could prevent that is if there was a something in the =20 > server's > classloader that still had a reference on an object or a class of the =20= > child > classloader. > > Unless there's a bug in Tomcat or in the application code, I really =20= > can't > see how the classes won't be eventually garbage collected when the JVM = =20 > needs > memory. And anyway, if there was indeed a leak because =20 > SQLErrorCodesFactory > is a singleton, why wouldn't there be one for each static fields such =20= > as > constants? > > Are you sure that JProfiler does not disable garbage collecting in =20 > order to > make its profiling? I know that in many of the JVMPI method calls are = =20 > done > with garbage collecting off. I suspect the above to be the cause of =20= > the > "resource leak", rather than any singleton that Spring might be using. > > Guillaume > > ----- Original Message ----- > From: "j=FCrgen h=F6ller [werk3AT]" <jue...@we...> > To: <spr...@li...> > Sent: Sunday, May 23, 2004 4:45 PM > Subject: Re: [Springframework-developer] Cleanup of context resources =20= > on > webapp reload > > > I've just spent about 10 hours profiling Spring, using the Image =20 > Database > and Petclinic samples. (BTW, I've used an evaluation version of =20 > JProfiler > from ej-technologies - nice product!) > > Although I still don't completely understand the garbage collection > behavior, I've figured out the following issues. Each of them simply > prevents the respective classes from getting garbage collected on > destruction of the class loader (e.g. on Tomcat web app shutdown). > > - A classic singleton with a class variable holding the object. I've > reworked GlobalAdvisorAdapterRegistry and SQLErrorCodesFactory to hold = =20 > the > respective singleton as a WeakReference. > > - A static cache. I've reworked CachedIntrospectionResults to use a > WeakHashMap with WeakReferences as values. > > - A ThreadLocal with a default other than null. I've reworked > TransactionSynchronizationManager to use null as default for the =20 > resource > map, setting a HashMap there on demand, removing the entire HashMap =20= > when > unbinding the last resource. > > - Constants that define a full object. We have a number of those, for > example ClassFilters.TRUE and AdvisedSupport.EMPTY_TARGET_SOURCE. I've = =20 > tried > for quite a while, but I haven't been able to figure out a way to =20 > define > such constants such that they will be garbage collected. > > The latter programming style is not uncommon, so I really don't =20 > understand > why it causes trouble with garbage collection. Hibernate uses a = similar > style for its FlushMode, for example. > > In general, other frameworks like CGLIB, Hibernate, Velocity have huge > resource leaks on web app shutdown, while just the constants issue =20 > remains > with Spring now. As long as those huge third-party leaks are not =20 > addressed, > I'm not worried at all by the single remaining Spring issue. > > As I initially said, we shouldn't exaggerate the problem, as it =20 > basically > just affects hot reloading of web apps - mainly a development feature > anyway. We need to make that clear to users too, to avoid comments a = la > "Spring is not usable for real apps because it leaks on hot =20 > redeployment". > > Please, everybody, give the current CVS head a sanity check tomorrow. =20= > There > shouldn't be any issues: the test suite passes, the sample apps run > properly. Still, I'd feel more comfortable if we make sure that no =20 > subtle > side effects have been introduced. > > For this reason, I will delay release 1.0.2 till tomorrow night. > > Juergen > > > ________________________________ > > Von: spr...@li... im Auftrag =20= > von > j=FCrgen h=F6ller [werk3AT] > Gesendet: Sa 22.05.2004 15:52 > An: spr...@li... > Betreff: Re: [Springframework-developer] Cleanup of context resources =20= > on > webapp reload > > > > So basically, all static caches cause resource leaks when restarting a > Tomcat web app? I wonder why this happens... The class loader should > completely dissolve all classes that it has loaded in its lifetime, > including static caches. Or have I misunderstood something here? = Anyone > having in-detail experience with handling such a scenario? > > Juergen > > > ________________________________ > > Von: spr...@li... im Auftrag =20= > von > Dmitriy Kopylenko > Gesendet: Di 04.05.2004 18:02 > An: spr...@li... > Betreff: Re: [Springframework-developer] Cleanup of context resources =20= > on > webapp reload > > > > Well, > > for instance SQLErrorCodesFactory is a singleton(GoF, not Spring) = which > caches SQLErrorCodes internally in the Map with strong references. =20 > Again, I > don't know if trying > to use WeakHashMap there would do the trick... > > Dmitriy > > Tim Kettering wrote: > >> >> I looked at it some more this morning, and basically what I did was >> start up tomcat w/ the webapp in the profiler, then after it was done >> starting up I used tomcat's manager to stop the context. This should >> destroy all resources related to the context. Here is a list of >> spring related stuff that still were in memory after the context was >> closed. Other stuff was cleaned up just fine. >> >> org.springframework.beans.CachedIntrospectionResults >> org.springframework.jdbc.support.SQLCodes >> org.springframework.core.Constants >> org.springframework.aop.framework.AdvisedSupport$1 >> org.springframework.aop.framework.adapter.BeforeAdviceAdapter >> org.springframework.aop.framework.adapter.AfterReturningAdviceAdapter >> org.springframework.jdbc.support.SQLErrorCodesFactory >> = org.springframework.transaction.support.TransactionSynchronizationMana=20= >> ge >> r$1 >> org.springframework.transaction.interceptor.RollbackRuleAttribute >> org.springframework.aop.framework.adapter.ThrosAdviceAdapter >> org.springframework.aop.Pointcut$1 >> = org.springframework.aop.framework.adapter.GlobalAdvisorAdapterRegistry >> >> On May 3, 2004, at 3:28 PM, Dmitriy Kopylenko wrote: >> >>> I'm just wondering, would the use of WeakHashMap in >>> CachedIntrospectionResults help? >>> >>> Dmitriy. >>> >>> Tim Kettering wrote: >>> >>>> I posted this to the users list last week and did not receive any >>>> reply on it, so I'm posting it again here on the developer list, = in >>>> hopes i could get an reply from someone here. I'm trying to >>>> determine if its something I should be doing myself, or if hte >>>> spring context should be cleaning up those resources by itself on >>>> the .close() call. Further profiling shows that there are >>>> duplicate instances of SQLError and hibernate proxy classes =20 >>>> hanging >>>> around afterwards too. Other objects do get cleaned up properly. >>>> -------- >>>> Hi everyone, >>>> We're (meaning me) looking into some resource leaks that are >>>> occuring when our webapp context gets reloaded. I found that >>>> context.close() needs to be called on the destroy() method of >>>> plugin we're using, and it works for a good majority of the =20 >>>> objects >>>> we were seeing leaked, but there are some objects that I'm unable >>>> to make go away. Object in question is the: >>>> org.springframework.beans.CachedIntrospectionResults >>>> Whenever I reload the context - the profiler I'm using shows that I >>>> have essentially a duplicate group of those objects (same instance >>>> count) as the original, and successive reloads will continue to >>>> duplicate this. >>>> The profiler also shows the final reference to those objects like =20= >>>> this: >>>> 100% - 1008 bytes - 63 alloc. >>>> = org.springframework.context.support.ClassPathXmlApplicationContext.<=20 >>>> in >>>> it > >>>> So basically I guess what I'm asking is for ideas or suggestions on >>>> how I could get those to clean up. This bean doesnt show up in = the >>>> Spring javadocs. And looking in CVS says its a package level = bean, >>>> not for application use, so I'm thinking that closing the context >>>> should (in theory) clean this up? Thanks in advance. >>>> -tim >>>> ------------------------------------------------------- >>>> This SF.Net email is sponsored by: Oracle 10g >>>> Get certified on the hottest thing ever to hit the market... Oracle >>>> 10g. Take an Oracle 10g class now, and we'll give you the exam = FREE. >>>> http://ads.osdn.com/?ad_id=3D3149&alloc_id=3D8166&op=3Dclick >>>> _______________________________________________ >>>> Springframework-developer mailing list >>>> Spr...@li... >>>> https://lists.sourceforge.net/lists/listinfo/springframework-=20 >>>> developer >>> >>> >>> >>> >>> ------------------------------------------------------- >>> This SF.Net email is sponsored by: Oracle 10g >>> Get certified on the hottest thing ever to hit the market... Oracle >>> 10g. Take an Oracle 10g class now, and we'll give you the exam FREE. >>> http://ads.osdn.com/?ad_id=3D3149&alloc_id=3D8166&op=3Dclick >>> _______________________________________________ >>> Springframework-developer mailing list >>> Spr...@li... >>> https://lists.sourceforge.net/lists/listinfo/springframework-=20 >>> developer >>> >> >> >> >> ------------------------------------------------------- >> This SF.Net email is sponsored by: Oracle 10g >> Get certified on the hottest thing ever to hit the market... Oracle =20= >> 10g. >> Take an Oracle 10g class now, and we'll give you the exam FREE. >> http://ads.osdn.com/?ad_id=3D3149&alloc_id=3D8166&op=3Dclick >> _______________________________________________ >> Springframework-developer mailing list >> Spr...@li... >> = https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market... Oracle =20= > 10g. > Take an Oracle 10g class now, and we'll give you the exam FREE. > http://ads.osdn.com/?ad_id=3D3149&alloc_id=3D8166&op=3Dclick > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market... Oracle =20= > 10g. > Take an Oracle 10g class now, and we'll give you the exam FREE. > http://ads.osdn.com/?ad_id149&alloc_id=9966&op=3Dick > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market... Oracle =20= > 10g. > Take an Oracle 10g class now, and we'll give you the exam FREE. > http://ads.osdn.com/?ad_id149&alloc_id=9966&op=3Dick > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market... Oracle =20= > 10g. > Take an Oracle 10g class now, and we'll give you the exam FREE. > http://ads.osdn.com/?ad_id=3D3149&alloc_id=3D8166&op=3Dclick > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market... Oracle =20= > 10g. > Take an Oracle 10g class now, and we'll give you the exam FREE. > http://ads.osdn.com/?ad_id149&alloc_id=9966&op=3Dick > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market... Oracle =20= > 10g. > Take an Oracle 10g class now, and we'll give you the exam FREE. > http://ads.osdn.com/?ad_id149&alloc_id=9966&op=3Dick > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market... Oracle =20= > 10g. > Take an Oracle 10g class now, and we'll give you the exam FREE. > http://ads.osdn.com/?ad_id149&alloc_id=9966&op=3Dick > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > <classloader.tar.gz>= |