[weld-issues] [JBoss JIRA] Reopened: (WELD-865) Weld allows for concurrent call to conversation
George Sapountzis (JIRA)
jira-events at lists.jboss.org
Tue Mar 8 08:07:55 EST 2011
[ https://issues.jboss.org/browse/WELD-865?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
George Sapountzis reopened WELD-865:
------------------------------------
>From BusyConversationException javadoc:
Indicates that the container has rejected a request because a concurrent request is associated with the same conversation context.
The container ensures that a long-running conversation may be associated with at most one request at a time, by blocking or rejecting concurrent requests. If the container rejects a request, it must associate the request with a new transient conversation and throw an exception of type BusyConversationException from the restore view phase of the JSF lifecycle.
So I think that AbstractConversationContext.activate() should throw BusyConversationException which should caught, handled and re-thrown in WeldPhaseListener. Something like:
try
{
conversationContext.activate(cid);
}
catch(BusyConversationException bce)
{
conversationContext.deactivate(); // XXX what else here ?
throw bce;
}
}
> Weld allows for concurrent call to conversation
> -----------------------------------------------
>
> Key: WELD-865
> URL: https://issues.jboss.org/browse/WELD-865
> Project: Weld
> Issue Type: Bug
> Components: Scopes & Contexts, Web Tier integration (JSF, JSP, EL and Servlet)
> Affects Versions: 1.1.0.Final
> Reporter: George Sapountzis
> Assignee: Ales Justin
> Fix For: 1.2.0.Beta1
>
>
> Concurrent calls to a @ConversationScoped component:
> Thread 1:
> AbstractConversationContext.activate(String cid)
> ConversationImpl.lock(long timeout) <-- returns true
> correctly proceed inside method
> Thread 2:
> AbstractConversationContext.activate(String cid)
> ConversationImpl.lock(long timeout) <-- returns false but activate() does not check result !!!
> *incorrectly* proceed inside method
> ----
> I think AbstractConversationContext.activate(String cid) should check the result of ConversationImpl.lock(long timeout) and not allow the second thread to proceed.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the weld-issues
mailing list