This looks very similar to a problem we encountered with
disable-caching=true and running parallel queries (such as when a
resulting HTML page contained multiple embedded asset requests, or AJAX
type requests).

Basically, if two queries run in parallel and disable-caching is true,
then when the first one completes all caches will be cleared.  If the
second query is still running and dependent on caches, it will blow up.
I found some spots in the Component enhancement pipeline that, if they
found something cached at the beginning of the request, would throw like
this later after the cache had been cleared.

Our problem was Annotation related, but it was a @Parameter annotation
that was blowing up for us.  I actually tracked down the specific cache
that was causing the problem, but that was a few months ago and I can't
remember the specifics.  We've stopped using the disable-cache mode, so
I haven't seen this in a while, but if I find some time later I can redo
the investigation...shouldn't take more than 30 minutes.

jeff

-----Original Message-----
From: Chris Chiappone [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, January 31, 2006 11:26 AM
To: Tapestry users
Subject: Re: BindingException Issues more prominent with annotations

I'm still trying to figure this out.  Could this problem be associated
when disable-caching=true?

On 1/29/06, Chris Chiappone <[EMAIL PROTECTED]> wrote:
> New JIRA created:
>
> https://issues.apache.org/jira/browse/TAPESTRY-848
>
> On 1/29/06, Howard Lewis Ship <[EMAIL PROTECTED]> wrote:
> > I don't have a test for this case, so it would certainly be a bug.
> > Based on how the code is organized, I can't see how this could
happen
> > (confusion between the page and component annotations).  Each
> > "enhancement" of a class (page or component) gets its own instance
of
> > EnhancementOperationImpl, which is where these checks originate.
> >
> > ComponentConstructorFactoryImpl.getComponentConstructor() is
> > synchronized, I believe. I just can't see how page and component
class
> > enhancement could interfere with each other, but that's the nature
of
> > bugs.
> >
> > Have you created a JIRA issue (or re-opened the old one)?
> >
> > On 1/28/06, Chris Chiappone <[EMAIL PROTECTED]> wrote:
> > > I'm still curious if someone can confirm this.  Is it true that
you
> > > cannot use the same named property in a page and a component?
That
> > > doing this could cause the binding exceptions that I have been
> > > getting??
> > >
> > > On 1/27/06, Chris Chiappone <[EMAIL PROTECTED]> wrote:
> > > > It looks like I can reproduce this issue easily.  For instance
say I
> > > > have a page that contains:
> > > >
> > > > @InjectState("visit")
> > > > public abstract Visit getVisitObj();
> > > >
> > > > And have the exact same getter (annotation or not) in my
component:
> > > >
> > > > public abstract Visit getVisitObj();
> > > >
> > > > The binding exception seems to occur.
> > > >
> > > > Does this seem like correct behavior for tapestry?  I do this
quite
> > > > often in my components because at times the page may not have
the
> > > > visit or some other object that the page has, but other times it
may.
> > > >
> > > > Thoughts and help greatly appreciated
> > > >
> > > >
> > > >
> > > > On 1/27/06, Chris Chiappone <[EMAIL PROTECTED]> wrote:
> > > > > At first I thought I could work around these issues but they
seem to
> > > > > be popping up more and more throughout my application.  Its
really
> > > > > becoming an issue for me.
> > > > >
> > > > > Ever since I have moved from .page and .jwc files to
annotations I get
> > > > > these exceptions more often.
> > > > >
> > > > > I don't believe I am doing anything wrong with these
annotations.  As
> > > > > you can see by the following one I have just declared a
DelegateBean
> > > > > in my class.  Using
> > > > >
> > > > > @Bean(SimpleValidationDeleage)
> > > > > public abstract SimpleValidationDelegate getDelegate();
> > > > >
> > > > > That same Delegate is used on mulitple pages and in
components.  From
> > > > > what I understand this should be acceptable.
> > > > >
> > > > > This issue also has sprung up on my declaring the same
Persistent
> > > > > property on different pages or components using the @Persist
> > > > > annotation.
> > > > >
> > > > > I didn't run into these problems before I used annotations.
I'd also
> > > > > hate to have to go back to .page and .jwc files since there
are so
> > > > > many files that I've changed.
> > > > >
> > > > > Here is an one of the exceptions:
> > > > >
> > > > > Exception invoking listener method searchLinkListener of
component
> > > > > SearchResults/border.search: Error: An error occured
processing
> > > > > annotation @org.apache.tapestry.annotations.Bean(value=class
> > > > > view.util.SimpleValidationDelegate, lifecycle=REQUEST,
initializer=)
> > > > > of public abstract view.util.SimpleValidationDelegate
> > > > > view.components.BasicSearch.getDelegate(): Bean delegate has
already
> > > > > been declared (at Annotation
> > > > > @org.apache.tapestry.annotations.Bean(value=class
> > > > > view.util.SimpleValidationDelegate, lifecycle=REQUEST,
initializer=)
> > > > > of public abstract view.util.SimpleValidationDelegate
> > > > > view.components.BasicSearch.getDelegate()).
> > > > > binding:
[EMAIL PROTECTED]
> > > > > parameter listener, component=SearchResults/border.search,
> > > > > methodName=searchLinkListener,
> > > > > location=context:/WEB-INF/BasicSearch.html, line 16]
> > > > > component:
[EMAIL PROTECTED]/border.search]
> > > > > location: context:/WEB-INF/BasicSearch.html, line 16
> > > > > 11 <br>
> > > > > 12 <input jwcid="companyField"
> > > > > 13 autocomplete="off" size="20" id="txt1" /> <br>
> > > > > 14 <input jwcid="@Submit" name="Submit" label="message:submit"
/></form>
> > > > > 15
> > > > > 16 <a jwcid="@DirectLink"
listener="listener:searchLinkListener">
> > > > > 17 &raquo;&nbsp;<span key="advanced">Advanced</span>
> > > > > 18 </a>
> > > > > 19 </div>
> > > > > 20 </td>
> > > > > 21 </tr>
> > > > >
> > > > >
> > > > > org.apache.hivemind.ApplicationRuntimeException
> > > > > Error: An error occured processing annotation
> > > > > @org.apache.tapestry.annotations.Bean(value=class
> > > > > util.SimpleValidationDelegate, lifecycle=REQUEST,
initializer=) of
> > > > > public abstract view.util.SimpleValidationDelegate
> > > > > view.components.BasicSearch.getDelegate(): Bean delegate has
already
> > > > > been declared (at Annotation
> > > > > @org.apache.tapestry.annotations.Bean(value=class
> > > > > view.util.SimpleValidationDelegate, lifecycle=REQUEST,
initializer=)
> > > > > of public abstract view.util.SimpleValidationDelegate
> > > > > view.components.BasicSearch.getDelegate()).
> > > > > location: Annotation
@org.apache.tapestry.annotations.Bean(value=class
> > > > > view.util.SimpleValidationDelegate, lifecycle=REQUEST,
initializer=)
> > > > > of public abstract view.util.SimpleValidationDelegate
> > > > > view.components.BasicSearch.getDelegate()
> > > > >
> > > > > org.apache.hivemind.ApplicationRuntimeException
> > > > > Bean delegate has already been declared (at Annotation
> > > > > @org.apache.tapestry.annotations.Bean(value=class
> > > > > view.util.SimpleValidationDelegate, lifecycle=REQUEST,
initializer=)
> > > > > of public abstract view.util.SimpleValidationDelegate
> > > > > view.components.BasicSearch.getDelegate()).
> > > > > location: Annotation
@org.apache.tapestry.annotations.Bean(value=class
> > > > > view.util.SimpleValidationDelegate, lifecycle=REQUEST,
initializer=)
> > > > > of public abstract view.util.SimpleValidationDelegate
> > > > > view.components.BasicSearch.getDelegate()
> > > > > Stack Trace:
> > > > >
org.apache.tapestry.spec.ComponentSpecification.addBeanSpecification(Com
ponentSpecification.java:410)
> > > > >
org.apache.tapestry.annotations.BeanAnnotationWorker.performEnhancement(
BeanAnnotationWorker.java:64)
> > > > >
org.apache.tapestry.annotations.AnnotationEnhancementWorker.performMetho
dEnhancement(AnnotationEnhancementWorker.java:142)
> > > > >
org.apache.tapestry.annotations.AnnotationEnhancementWorker.performMetho
dEnhancement(AnnotationEnhancementWorker.java:110)
> > > > >
org.apache.tapestry.annotations.AnnotationEnhancementWorker.performEnhan
cement(AnnotationEnhancementWorker.java:70)
> > > > >
$EnhancementWorker_1090cd8cc4b.performEnhancement($EnhancementWorker_109
0cd8cc4b.java)
> > > > >
$EnhancementWorker_1090cd8cc4d.performEnhancement($EnhancementWorker_109
0cd8cc4d.java)
> > > > >
$EnhancementWorker_1090cd8cc2d.performEnhancement($EnhancementWorker_109
0cd8cc2d.java)
> > > > >
org.apache.tapestry.services.impl.ComponentConstructorFactoryImpl.getCom
ponentConstructor(ComponentConstructorFactoryImpl.java:97)
> > > > >
$ComponentConstructorFactory_1090cd8cc1a.getComponentConstructor($Compon
entConstructorFactory_1090cd8cc1a.java)
> > > > >
org.apache.tapestry.pageload.PageLoader.instantiateComponent(PageLoader.
java:531)
> > > > >
org.apache.tapestry.pageload.PageLoader.createImplicitComponent(PageLoad
er.java:481)
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > ~chris
> > > > >
> > > >
> > > >
> > > > --
> > > > ~chris
> > > >
> > >
> > >
> > > --
> > > ~chris
> > >
> > >
---------------------------------------------------------------------
> > > To unsubscribe, e-mail:
[EMAIL PROTECTED]
> > > For additional commands, e-mail:
[EMAIL PROTECTED]
> > >
> > >
> >
> >
> > --
> > Howard M. Lewis Ship
> > Independent J2EE / Open-Source Java Consultant
> > Creator, Jakarta Tapestry
> > Creator, Jakarta HiveMind
> >
> > Professional Tapestry training, mentoring, support
> > and project work.  http://howardlewisship.com
> >
> >
---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail:
[EMAIL PROTECTED]
> >
> >
>
>
> --
> ~chris
>


--
~chris

---------------------------------------------------------------------
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]

Reply via email to