commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Niall Pemberton <niall.pember...@gmail.com>
Subject Re: [VOTE] Release BeanUtils 1.8.1 based on RC1
Date Mon, 12 Oct 2009 21:33:14 GMT
On Sat, Oct 10, 2009 at 4:10 PM, Oliver Heger
<oliver.heger@oliver-heger.de> wrote:
> Are these issues release blockers?
>
> I'd say if the 1.8.0 release had the same issues, they are not. Otherwise
> they should probably be investigated.

I just tested with IBM JDK 1.6 using ant (m2 doesn't work for me with
that JDK) and the same test (MemoryLeakTestCase) fails in 1.8.0 as it
does in 1.8.1.

As a quick recap - we changed the Map implementations in BeanUtils
1.8.0 used in the static caches to be based on WeakHashMap because
using "class" as the key was preventing garbage collection of class
loaders in a web app environment resulting in a memory leak. This
resolves the memory leak issue in Sun's JDK implementations for JDK
1.5+ (but not for JDK 1.3 or 1.4). Unfortunately it appears not to
work for IBM JDK 1.6. Why this is I don't have any idea at the moment.

Since this isn't a regression in BeanUtils 1.8.1 (btw the memory leak
existed for all JDK implementations in BeanUtils 1.7.0) and I don't
have a fix for the IBM JDK I'm hoping that we can continue with this
release. If we find a solution that fixes it in the future, then I'd
be happy to do another release.

Niall

> Oliver
>
> Niall Pemberton schrieb:
>>
>> Hi Jörg,
>>
>> Thanks for testing, comments inline...
>>
>> Niall
>>
>> On Thu, Oct 8, 2009 at 7:16 PM, Jörg Schaible <joerg.schaible@gmx.de>
>> wrote:
>>>
>>> Hi Niall,
>>>
>>> Niall Pemberton wrote:
>>>
>>>> We have fixed a number of bugs since BeanUtils 1.8.0 was released a
>>>> year ago and I'd like to release BeanUtils 1.8.1
>>>>
>>>> [ ] +1 Yes go ahead an release based on RC1
>>>> [ ] -1 No, because...
>>>>
>>>> BeanUtils 1.8.1 RC1 is available for review here:
>>>>    http://people.apache.org/~niallp/beanutils-1.8.1-rc1/
>>>>
>>>> Details of changes since 1.8.0 are in the release notes:
>>>>
>>>>  http://people.apache.org/~niallp/beanutils-1.8.1-rc1/RELEASE-NOTES.txt
>>>>
>>>
>>> http://people.apache.org/~niallp/beanutils-1.8.1-rc1/site/changes-report.html
>>>>
>>>> I have tested this with JDK 1.3 & 1.4 using ant and JDK 1.5 & 1.6
using
>>>> maven2.
>>>>
>>>> The tag is here:
>>>>
>>>
>>> http://svn.apache.org/viewvc/commons/proper/beanutils/tags/BEANUTILS_1_8_1_RC1/
>>>>
>>>> Site:
>>>>    http://people.apache.org/~niallp/beanutils-1.8.1-rc1/site/
>>>> (note some *relative* links are broken and the 1.8.1 directories are
>>>> not yet created - these will be OK once the site is deployed)
>>>>
>>>> Clirr Report (compared to 1.8.0):
>>>>
>>>
>>> http://people.apache.org/~niallp/beanutils-1.8.1-rc1/site/clirr-report.html
>>>>
>>>> RAT Report:
>>>>
>>> http://people.apache.org/~niallp/beanutils-1.8.1-rc1/site/rat-report.html
>>>
>>> I'm building the package from the source tarball under Gentoo Linux x86
>>> with
>>> following combinations:
>>>
>>> Maven 2.2.1/Sun JDK 1.7.0.0_alpha69: fine
>>> Maven 2.2.1/Sun JDK 1.6.0.16: fine
>>> Maven 2.2.1/Sun JDK 1.5.0.20: fine
>>> Maven 2.1.0/Sun JDK 1.4.2.19: fine
>>> Ant 1.6.5/Sun JDK 1.3.1.20: issues
>>> Maven 2.2.1/IcedTea6 1.4.1: fine
>>> Maven 2.1.0/Blackdown JDK 1.4.2.03: fine
>>> Maven 2.2.1/IBM JDK 1.6.0.5: issues
>>> Maven 1.1(*)/IBM JDK 1.5.0.10: issues
>>> Maven 1.1(*)/IBM JDK 1.4.2.13: issues
>>> Maven 2.2.1/JRockit JDK 1.5.0.16: fine
>>> Maven 2.1.0/JRockit JDK 1.4.2.14: fine
>>>
>>> *) Maven 2.x fails to run with IBM JDK 1.5 and 1.4.2
>>>
>>>
>>>
>>> Issues with Sun JDK 1.3.1:
>>> ==========================
>>>
>>> Source compilable, but a lot of tests fail.
>>
>> All the tests pass for me - I was using Ant 1.7.1 and Sun's JDK
>> 1.3.1_18 on Windows XP - but I tried Ant 1.6.5 and JDK 1.3.1_20 (again
>> on WinXP) and also had no problems. Are the tests actually failing or
>> are you just seeing alot of exceptions in  the output? Because
>> BeanUtils uses reflection to intialise the "cause" when re-throwing
>> exceptions for JDK 1.4+, but for JDK 1.3 it logs the stack trace of
>> the original exception. For example:
>>
>>
>> http://commons.apache.org/beanutils/xref/org/apache/commons/beanutils/PropertyUtilsBean.html#2194
>>
>> http://commons.apache.org/beanutils/xref/org/apache/commons/beanutils/BeanUtilsBean.html#1041
>>
>>
>>> Issues with IBM JDK 1.4.2 and 1.5:
>>> ==================================
>>>
>>> 1/ strange warnings on console for one test:
>>
>> The class thats being tested logs those warnings for null values:
>>
>>
>> http://commons.apache.org/beanutils/xref/org/apache/commons/beanutils/BeanPropertyValueChangeClosure.html#170
>>
>>> ================ %< ====================
>>>   [junit] Running
>>> org.apache.commons.beanutils.BeanPropertyValueChangeClosureTestCase
>>> WARNING: Unable to execute Closure. Null value encountered in property
>>> path...org.apache.commons.beanutils.NestedNullException: Null property
>>> value for 'anotherNested.stringProperty' on bean class 'class
>>> org.apache.commons.beanutils.TestBean'
>>>   [junit] Tests run: 26, Failures: 0, Errors: 0, Time elapsed: 0.147 sec
>>>   [junit] Running
>>> org.apache.commons.beanutils.BeanPropertyValueEqualsPredicateTestCase
>>> WARNING: Problem during evaluation. Null value encountered in property
>>> path...org.apache.commons.beanutils.NestedNullException: Null property
>>> value for 'anotherNested.stringProperty' on bean class 'class
>>> org.apache.commons.beanutils.TestBean'
>>>   [junit] Tests run: 17, Failures: 0, Errors: 0, Time elapsed: 0.12 sec
>>>   [junit] Running
>>> org.apache.commons.beanutils.BeanToPropertyValueTransformerTestCase
>>> WARNING: Problem during transformation. Null value encountered in
>>> property
>>> path...org.apache.commons.beanutils.NestedNullException: Null property
>>> value for 'anotherNested.stringProperty' on bean class 'class
>>> org.apache.commons.beanutils.TestBean'
>>>   [junit] Tests run: 17, Failures: 0, Errors: 0, Time elapsed: 0.114 sec
>>> ================ %< ====================
>>>
>>> 2/ org.apache.commons.beanutils.bugs.Jira347TestCase: 1 Error
>>
>> This test was copied from MemoryLeakTestCase and the same problem
>> occurred for BeanUtils 1.8.0 when you tested with maven1 and IBM JDKs.
>> Would be nice to get these tests working (wonder if they work with IBM
>> JDK and ant, rather than maven1) but I can't seem to find anywhere to
>> download the IBM JDK for windows. So since its a problem in the test
>> rather than actual BeanUtils functionality I can only suggest that we
>> ignore this again, unless someone can come up with a fix for the test:
>>
>> http://commons.markmail.org/message/6fhsjmrugz6c746y
>>
>>> ================ %< ====================
>>> Testcase:
>>>
>>> testMappedPropertyDescriptor_AnyArgsProperty(org.apache.commons.beanutils.bugs.Jira347TestCase):
>>> Caused an ERROR
>>> org.apache.commons.beanutils.MappedPropertyTestBean
>>> java.lang.ClassNotFoundException:
>>> org.apache.commons.beanutils.MappedPropertyTestBean
>>>       at java.net.URLClassLoader.findClass(URLClassLoader.java:496)
>>>       at java.lang.ClassLoader.loadClass(ClassLoader.java:631)
>>>       at
>>> java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:1065)
>>>       at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
>>>       at
>>>
>>> org.apache.commons.beanutils.bugs.Jira347TestCase.testMappedPropertyDescriptor_AnyArgsProperty(Jira347TestCase.java:55)
>>>       at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:195)
>>>       at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:250)
>>>       at
>>> org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
>>>       at
>>> org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
>>>       at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:42)
>>>       at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:250)
>>>       at
>>> org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
>>>       at
>>>
>>> org.apache.maven.jelly.tags.werkz.MavenGoalTag.runBodyTag(MavenGoalTag.java:83)
>>>       at
>>>
>>> org.apache.maven.jelly.tags.werkz.MavenGoalTag$MavenGoalAction.performAction(MavenGoalTag.java:116)
>>>       at org.apache.maven.werkz.Goal.fire(Goal.java:691)
>>>       at org.apache.maven.werkz.Goal.attain(Goal.java:623)
>>>       at org.apache.maven.werkz.Goal.attainPrecursors(Goal.java:526)
>>>       at org.apache.maven.werkz.Goal.attain(Goal.java:621)
>>>       at org.apache.maven.werkz.Goal.attainPrecursors(Goal.java:526)
>>>       at org.apache.maven.werkz.Goal.attain(Goal.java:621)
>>>       at
>>> org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:712)
>>>       at org.apache.maven.MavenSession.attainGoals(MavenSession.java:265)
>>>       at org.apache.maven.cli.App.doMain(App.java:307)
>>>       at org.apache.maven.cli.App.main(App.java:217)
>>>       at com.werken.forehead.Forehead.run(Forehead.java:551)
>>>       at com.werken.forehead.Forehead.main(Forehead.java:581)
>>> ================ %< ====================
>>>
>>>
>>>
>>> Issues with IBM JDK 1.6:
>>> ========================
>>>
>>> 1/ org.apache.commons.beanutils.memoryleaktests.MemoryLeakTestCase
>>> ================ %< ====================
>>
>> OK so the IBM JDK 1.6 got past the setup problems and fails the actual
>> test. This is disappointing because it means the fix we put in for the
>> memory leak that works on Sun's JDK doesn't seem to work for IBM JDK
>> 1.6. I've created a bug report for this:
>>
>> https://issues.apache.org/jira/browse/BEANUTILS-366
>>
>> ...but its going to need someone to fix this or for me to get the IBM
>> JDK. Anyway those same tests fail in Sun's JDK 1.3 & JDK 1.4 - so
>> theres a check so they don't run on pre-1.5 JDKs - can't find anything
>> in the archives as to why they fail or the results of any
>> investigation. Anyway I don't believe this is something new in this
>> release and the attitude we took with the memory leak fixes is that if
>> they work in some JDKs (i.e Suns) then thats progress even if they
>> don't resolve it for all JDKs. Anyway I've logged the bug but I'm
>> hoping this won't stop this release since none of the changes made
>> since 1.8.0 go anywhere near the caching that causes/caused the memory
>> leaks.
>>
>>> Tests run: 8, Failures: 3, Errors: 0, Skipped: 0, Time elapsed: 16.575
>>> sec
>>> <<< FAILURE!
>>>
>>> testPropertyUtilsBean_descriptorsCache_memoryLeak(org.apache.commons.beanutils.memoryleaktests.MemoryLeakTestCase)
>>> Time elapsed: 2.032 sec  <<< FAILURE!
>>> junit.framework.AssertionFailedError: PropertyUtilsBean is holding a
>>> reference to the classLoader
>>>       at junit.framework.Assert.fail(Assert.java:47)
>>>       at junit.framework.Assert.assertTrue(Assert.java:20)
>>>       at junit.framework.Assert.assertNull(Assert.java:233)
>>>       at
>>>
>>> org.apache.commons.beanutils.memoryleaktests.MemoryLeakTestCase.testPropertyUtilsBean_descriptorsCache_memoryLeak(MemoryLeakTestCase.java:93)
>>>
>>>
>>> testPropertyUtilsBean_mappedDescriptorsCache_memoryLeak(org.apache.commons.beanutils.memoryleaktests.MemoryLeakTestCase)
>>> Time elapsed: 1.711 sec  <<< FAILURE!
>>> junit.framework.AssertionFailedError: PropertyUtilsBean is holding a
>>> reference to the classLoader
>>>       at junit.framework.Assert.fail(Assert.java:47)
>>>       at junit.framework.Assert.assertTrue(Assert.java:20)
>>>       at junit.framework.Assert.assertNull(Assert.java:233)
>>>       at
>>>
>>> org.apache.commons.beanutils.memoryleaktests.MemoryLeakTestCase.testPropertyUtilsBean_mappedDescriptorsCache_memoryLeak(MemoryLeakTestCase.java:148)
>>>
>>>
>>> testWrapDynaClass_dynaClasses_memoryLeak(org.apache.commons.beanutils.memoryleaktests.MemoryLeakTestCase)
>>> Time elapsed: 1.991 sec  <<< FAILURE!
>>> junit.framework.AssertionFailedError: WrapDynaClass is holding a
>>> reference
>>> to the classLoader
>>>       at junit.framework.Assert.fail(Assert.java:47)
>>>       at junit.framework.Assert.assertTrue(Assert.java:20)
>>>       at junit.framework.Assert.assertNull(Assert.java:233)
>>>       at
>>>
>>> org.apache.commons.beanutils.memoryleaktests.MemoryLeakTestCase.testWrapDynaClass_dynaClasses_memoryLeak(MemoryLeakTestCase.java:342)
>>> ================ %< ====================
>>>
>>>
>>> Minor nits:
>>> ==========
>>> xdocs/changes.xml: BEANUTILS-354 is reported twice
>>
>> Thanks I fixed this in trunk:
>>
>>> Cheers,
>>> Jörg
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
>> For additional commands, e-mail: dev-help@commons.apache.org
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Mime
View raw message