Ok, Looking at the status.xml file in that revision I see the
following diff, are the changes in question related to "Double
checked locking bug prevents use of multi processor environments
(efficiently)."?
--- jakarta/tapestry/branches/branch-3-0/status.xml 2006/03/14
13:43:09 385801
+++ jakarta/tapestry/branches/branch-3-0/status.xml 2006/03/14
13:47:10 385802
@@ -11,6 +11,7 @@
<person name="Tsvetelin Saykov" id="TS"/>
<person name="Neil Clayton" id="NC"/>
<person name="Paul Ferraro" id="PF"/>
+ <person name="Jesse Kuhnert" id="JK" />
<!-- Retired -->
<person name="Malcom Edgar" id="ME"/>
<!-- Add more people here -->
@@ -126,6 +127,21 @@
<changes>
<release version="3.0.4" date="unreleased">
<action type="fix" dev="GL" fixes-bug="TAPESTRY-431"> Fixed
TemplateParser throws an exception and stops parsing when duplicate
attributes are found in a tag. </action>
+ <action type="fix" dev="JK" fixes-bug="TAPESTRY-877" due-
to="Brian K. Wallace">
+ Javassist url was incorrect.
+ </action>
+ <action type="remove" dev="JK" fixes-bug="TAPESTRY-878" due-
to="Brian K. Wallace" >
+ Removed old tutorial example.
+ </action>
+ <action type="fix" dev="JK" fixes-bug="TAPESTRY-806" due-
to="Nick Westgate" >
+ Double checked locking bug prevents use of multi processor
environments (efficiently).
+ </action>
+ <action type="fix" dev="JK" fixes-bug="TAPESTRY-241" due-
to="Kurtis Williams" >
+ binding for convertor needed to be inherited-binding
+ </action>
+ <action type="fix" dev="JK" fixes-bug="TAPESTRY-193" due-
to="Brian K. Wallace" >
+ AssetService not resolving file prefixes correctly.
+ </action>
</release>
<release version="3.0.3" date="Mar 26 2005">
<action type="fix" dev="PF" fixes-bug="TAPESTRY-278"> Fixes
security flaw in asset service. </action>
On Nov 11, 2006, at 2:51 PM, andyhot wrote:
Here's the history of that file
http://svn.apache.org/viewvc/tapestry/tapestry4/branches/branch-3-0/
framework/src/org/apache/tapestry/enhance/
DefaultComponentClassEnhancer.java?view=log
and here's the diffs to the previous version
http://svn.apache.org/viewvc/tapestry/tapestry4/branches/branch-3-0/
framework/src/org/apache/tapestry/enhance/
DefaultComponentClassEnhancer.java?r1=243897&r2=385802
Jesse's change log states "Applied patches/fixed bugs" though i
couldn't find any related entry in JIRA during my brief research...
So, there seems to have been a reason for that change, perhaps
Jesse can shed more light.
Jeff Poetker wrote:
I work on a project that is using Tapestry 3. We're currently
working on version 4 of this product, and in this release we have
upgraded to version 3.0.4 of Tapestry. In every version of our
product we have done some amount of load testing as part of our
quality assurance process.
In this release, we've started seeing this sort of exception a lot
during load (and occasionally in our functional) testing.
Tapestry exception
java.lang.Throwable: Unable to define class
org.apache.tapestry.link.PageLink$Enhance_32: org/apache/tapestry/
link/PageLink$Enhance_32 (Repetitive method name/signature)
at
org.apache.tapestry.enhance.EnhancedClassLoader.defineClass
(EnhancedClassLoader.java:55)
at
org.apache.tapestry.enhance.javassist.EnhancedClass.createEnhancedSub
class(EnhancedClass.java:133)
at
org.apache.tapestry.enhance.ComponentClassFactory.createEnhancedSubcl
ass(ComponentClassFactory.java:336)
at
org.apache.tapestry.enhance.DefaultComponentClassEnhancer.constructCo
mponentClass(DefaultComponentClassEnhancer.java:139)
at
org.apache.tapestry.enhance.DefaultComponentClassEnhancer.getEnhanced
Class(DefaultComponentClassEnhancer.java:94)
at
org.apache.tapestry.pageload.PageLoader.instantiateComponent
(PageLoader.java:603)
This doesn't always seem to happen on the same page, and it isn't
always the same component that throws the exception. (Here it is
PageLink, I've also seen Any and Body throw this).
I've been scratching my head on this for a while, trying to figure
out why we hadn't seen this in previous releases... Then I
remembered we switch to 3.0.4, and I decided to look into the
differences.
I found something in the DefaultComponentClassEnhancer which has
changed, and I'd be interested in hearing if anybody believes this
could cause my problem.
Specifically the method getEnhancedClass has changed from the
following in 3.0.3
public Class getEnhancedClass(IComponentSpecification
specification, String className)
{
Class result = getCachedClass(specification);
if (result == null)
{
synchronized(this)
{
result = getCachedClass(specification);
if (result == null)
{
result = constructComponentClass(specification,
className);
storeCachedClass(specification, result);
}
}
}
return result;
}
to this in 3.0.4
public Class getEnhancedClass(IComponentSpecification
specification, String className)
{
synchronized(specification)
{
Class result = getCachedClass(specification);
if (result == null)
{
result = constructComponentClass(specification,
className);
storeCachedClass(specification, result);
}
return result;
}
}
Now, my understanding of the tapestry internals has plenty of
holes in it, so I don't know if this can be related to my problem
or not, but the circumstances are such that it feels like a likely
candidate.
To try to test this theory myself, I have created a custom
ComponentClassEnhancer implementation which basically reverts back
to the 3.0.3 synchronization style - however, I haven't had an
opportunity to get it into a load test environment yet. I should
be able to do this sometime early this week.
I'd love to hear from any developers who feel they can verify that
this is my problem, or debunk it totally. :)
Thanks much,
Jeff Poetker
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]