beehive-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rich Feit (JIRA)" <...@beehive.apache.org>
Subject [jira] Commented: (BEEHIVE-1028) Controls in pageflows do not appear to be receiving lifecycle events in the proper order
Date Fri, 16 Dec 2005 01:08:46 GMT
    [ http://issues.apache.org/jira/browse/BEEHIVE-1028?page=comments#action_12360547 ] 

Rich Feit commented on BEEHIVE-1028:
------------------------------------

Chad, I'm attaching a Controls-only webapp that proves one of three things:

    1) This is fundamentally a problem with Controls.
    2) At least one piece of the problem is within Controls.
    3) The NetUI framework is using Controls incorrectly, since it uses Controls in the way
that this repro app uses Controls.

Hopefully you or someone else can tell me whether it's 1/2, or 3.  :)

Basically, the issue involves using the *same instance* of a Control from two separate threads.
 To reproduce the problem:

    - Deploy the attached app to Tomcat.
    - Hit http://localhost:8080/jira1028Simplified/one.jsp.
    - Make sure your Tomcat console is visible.
    - Click the "go" link in the browser (to eliminate variables, please use Firefox, not
IE or Mozilla).
    - When you see "Click again!" on the console, click the "go" link again.

You'll see the following output (the numbers are thread-IDs).  Notice that there's only one
call to each of onAcquire/onRelease (on the first thread), even though dummyControlMethod
gets called from both threads.

    34 onAcquire
    34 begin dummyControlMethod
    34 end dummyControlMethod
    35 begin dummyControlMethod
    34 onRelease
    35 end dummyControlMethod

> Controls in pageflows do not appear to be receiving lifecycle events in the proper order
> ----------------------------------------------------------------------------------------
>
>          Key: BEEHIVE-1028
>          URL: http://issues.apache.org/jira/browse/BEEHIVE-1028
>      Project: Beehive
>         Type: Bug
>   Components: NetUI
>     Versions: V1, 1.1
>     Reporter: Chad Schoettger
>     Assignee: Chad Schoettger
>  Attachments: beehive1028.zip
>
> So I have a small webapp which basically consists of a pageflow and a jdbc control. 
The single jsp in the web app invokes an action in the page flow as:
>  	 	<tr><td><img src="doRenderChart.do?versionName=9.2Beta&projectName=Workshop&componentName=W-IDE&JFWidth=500&JFHeight=300"
border="0"/></td></tr>
> It does this 10 or 11 times to build a table which contains images generated by the action
using the jdbc control to retrieve data from a database.  Typically (although not always)
at least one of the images will not be generated due to an SQL Error throw by the jdbc control.
 The error is that the SQLConnection has been closed.
> Here is a portion of the tomcat log, I've added some debugging statements in the ControlContainerContext
class to help me see what was going on, the doRenderChart() is the page flow action being
called by the jsp.  It appears the control's begin and end events are not fired in the right
order, causing (in some instances) the control to be unititialzed before a call has been completed.
> log4j:WARN Please initialize the log4j system properly.
> BEGIN_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 34
> BEGIN_CONTEXT: THREAD ID = 34
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=null
> BEGIN_CONTEXT: THREAD ID = 35
> **** Leave: doRenderChart() ****
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-IDE
> BEGIN_CONTEXT: THREAD ID = 34
> **** Leave: doRenderChart() ****
> END_CONTEXT: THREAD ID = 34
> BEGIN_CONTEXT: THREAD ID = 35
> END_CONTEXT: THREAD ID = 34
> BEGIN_CONTEXT: THREAD ID = 34
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-Docs
> **** Leave: doRenderChart() ****
> END_CONTEXT: THREAD ID = 35
> END_CONTEXT: THREAD ID = 35
> BEGIN_CONTEXT: THREAD ID = 35
> BEGIN_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 34
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-IDECore
> BEGIN_CONTEXT: THREAD ID = 34
> **** Leave: doRenderChart() ****
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-External
> BEGIN_CONTEXT: THREAD ID = 35
> **** Leave: doRenderChart() ****
> END_CONTEXT: THREAD ID = 35
> BEGIN_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 35
> BEGIN_CONTEXT: THREAD ID = 35
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-Project
> BEGIN_CONTEXT: THREAD ID = 34
> **** Leave: doRenderChart() ****
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-Javelin
> BEGIN_CONTEXT: THREAD ID = 35
> **** Leave: doRenderChart() ****
> END_CONTEXT: THREAD ID = 35
> END_CONTEXT: THREAD ID = 35
> BEGIN_CONTEXT: THREAD ID = 35
> BEGIN_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 34
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-RuntimeControls
> BEGIN_CONTEXT: THREAD ID = 34
> **** Leave: doRenderChart() ****
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-RuntimeNetUI
> BEGIN_CONTEXT: THREAD ID = 35
> **** Leave: doRenderChart() ****
> END_CONTEXT: THREAD ID = 35
> END_CONTEXT: THREAD ID = 35
> BEGIN_CONTEXT: THREAD ID = 35
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-Upgrade
> BEGIN_CONTEXT: THREAD ID = 34
> **** Leave: doRenderChart() ****
> END_CONTEXT: THREAD ID = 34
> BEGIN_CONTEXT: THREAD ID = 35
> END_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 35
> END_CONTEXT: THREAD ID = 35
> BEGIN_CONTEXT: THREAD ID = 33
> END_CONTEXT: THREAD ID = 33
> BEGIN_CONTEXT: THREAD ID = 33
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=null
> **** Leave: doRenderChart() ****
> BEGIN_CONTEXT: THREAD ID = 33
> END_CONTEXT: THREAD ID = 33
> END_CONTEXT: THREAD ID = 33
> BEGIN_CONTEXT: THREAD ID = 33
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-Docs
> BEGIN_CONTEXT: THREAD ID = 34
> **** Leave: doRenderChart() ****
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-IDE
> BEGIN_CONTEXT: THREAD ID = 33
> **** Leave: doRenderChart() ****
> END_CONTEXT: THREAD ID = 33
> END_CONTEXT: THREAD ID = 33
> BEGIN_CONTEXT: THREAD ID = 34
> BEGIN_CONTEXT: THREAD ID = 33
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-External
> **** Leave: doRenderChart() ****
> BEGIN_CONTEXT: THREAD ID = 33
> END_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 34
> BEGIN_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 33
> END_CONTEXT: THREAD ID = 33
> BEGIN_CONTEXT: THREAD ID = 33
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-IDECore
> **** Leave: doRenderChart() ****
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-Project
> BEGIN_CONTEXT: THREAD ID = 34
> **** Leave: doRenderChart() ****
> END_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 34
> BEGIN_CONTEXT: THREAD ID = 34
> **** Enter: doRenderChart() ****
> BEGIN_CONTEXT: THREAD ID = 33
> calling version=9.2Beta project=Workshop component=W-Javelin
> **** Leave: doRenderChart() ****
> END_CONTEXT: THREAD ID = 33
> END_CONTEXT: THREAD ID = 33
> BEGIN_CONTEXT: THREAD ID = 33
> BEGIN_CONTEXT: THREAD ID = 34
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-RuntimeControls
> **** Leave: doRenderChart() ****
> END_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 34
> BEGIN_CONTEXT: THREAD ID = 34
> BEGIN_CONTEXT: THREAD ID = 33
> END_CONTEXT: THREAD ID = 33
> END_CONTEXT: THREAD ID = 33
> BEGIN_CONTEXT: THREAD ID = 33
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-RuntimeNetUI
> **** Leave: doRenderChart() ****
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-Upgrade
> BEGIN_CONTEXT: THREAD ID = 34
> **** Leave: doRenderChart() ****
> END_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 34
> BEGIN_CONTEXT: THREAD ID = 33
> END_CONTEXT: THREAD ID = 33
> END_CONTEXT: THREAD ID = 33
> BEGIN_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 34
> Listening for transport dt_shmem at address: jdbconn
> BEGIN_CONTEXT: THREAD ID = 34
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=null
> **** Leave: doRenderChart() ****
> BEGIN_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 34
> BEGIN_CONTEXT: THREAD ID = 34
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-Docs
> **** Leave: doRenderChart() ****
> BEGIN_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 34
> BEGIN_CONTEXT: THREAD ID = 35
> BEGIN_CONTEXT: THREAD ID = 34
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-External
> **** Leave: doRenderChart() ****
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-IDE
> BEGIN_CONTEXT: THREAD ID = 34
> **** Leave: doRenderChart() ****
> END_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 34
> BEGIN_CONTEXT: THREAD ID = 35
> BEGIN_CONTEXT: THREAD ID = 34
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-IDECore
> **** Leave: doRenderChart() ****
> BEGIN_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 35
> END_CONTEXT: THREAD ID = 35
> BEGIN_CONTEXT: THREAD ID = 35
> END_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 34
> **** Enter: doRenderChart() ****
> BEGIN_CONTEXT: THREAD ID = 34
> calling version=9.2Beta project=Workshop component=W-Project
> **** Leave: doRenderChart() ****
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-Javelin
> BEGIN_CONTEXT: THREAD ID = 35
> **** Leave: doRenderChart() ****
> BEGIN_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 35
> END_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 35
> BEGIN_CONTEXT: THREAD ID = 35
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-RuntimeControls
> BEGIN_CONTEXT: THREAD ID = 34
> **** Leave: doRenderChart() ****
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-RuntimeNetUI
> BEGIN_CONTEXT: THREAD ID = 35
> **** Leave: doRenderChart() ****
> END_CONTEXT: THREAD ID = 35
> BEGIN_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 35
> BEGIN_CONTEXT: THREAD ID = 35
> **** Enter: doRenderChart() ****
> calling version=9.2Beta project=Workshop component=W-Upgrade
> **** Leave: doRenderChart() ****
> BEGIN_CONTEXT: THREAD ID = 35
> END_CONTEXT: THREAD ID = 35
> END_CONTEXT: THREAD ID = 35
> END_CONTEXT: THREAD ID = 34
> END_CONTEXT: THREAD ID = 34

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message