[jboss-jira] [JBoss JIRA] Updated: (JGRP-1369) MuxRpcDispatcher may encapsulate infinitely RequestOption's filter with NoMuxHandlerRspFilter
Bela Ban (JIRA)
jira-events at lists.jboss.org
Tue Sep 27 07:03:26 EDT 2011
[ https://issues.jboss.org/browse/JGRP-1369?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Bela Ban updated JGRP-1369:
---------------------------
Fix Version/s: 3.0
Forum Reference: http://sourceforge.net/mailarchive/forum.php?thread_name=4E80A39A.2090908%40yahoo.com&forum_name=javagroups-users (was: http://sourceforge.net/mailarchive/forum.php?thread_name=4E80A39A.2090908%40yahoo.com&forum_name=javagroups-users)
> MuxRpcDispatcher may encapsulate infinitely RequestOption's filter with NoMuxHandlerRspFilter
> ---------------------------------------------------------------------------------------------
>
> Key: JGRP-1369
> URL: https://issues.jboss.org/browse/JGRP-1369
> Project: JGroups
> Issue Type: Bug
> Affects Versions: 2.12.1
> Reporter: Benoit Leblanc
> Assignee: Bela Ban
> Fix For: 3.0
>
> Attachments: RequestOptTest.java
>
>
> MuxRpcDispatcher alters RequestOption's filter by encapsulating it with a NoMuxHandlerRspFilter. Passing the same instance of RequestOptions to rpc calls leads to :
> java.lang.StackOverflowError
> at org.jgroups.blocks.mux.NoMuxHandlerRspFilter.isAcceptable(NoMuxHandlerRspFilter.java:24)
> at org.jgroups.blocks.mux.NoMuxHandlerRspFilter.isAcceptable(NoMuxHandlerRspFilter.java:24)
> .....
> .....
> Solutions :
> 1/ "Clone" RequestOption at each call like fix used in https://issues.jboss.org/browse/JGRP-1271. The drawback with this solution, is the performance concern : useless object creation if a RequestOption is reused.
> 2/ Don't encapsulate RequestOption if a NoMuxHandlerRspFilter is already setted. Modification concerns two classes :
> * NoMuxHandlerRspFilter
> private NoMuxHandlerRspFilter(RspFilter filter) {
> this.filter = filter;
> }
>
> public static RspFilter createInstance(RspFilter filter) {
> if (filter instanceof NoMuxHandlerRspFilter) {
> return filter;
> }
> return new NoMuxHandlerRspFilter(filter) ;
> }
> * MuxRpcDispatcher
> protected GroupRequest cast(Collection<Address> dests, Message msg, RequestOptions options, boolean blockForResults) {
> RspFilter filter = options.getRspFilter();
> return super.cast(dests, msg, options.setRspFilter(NoMuxHandlerRspFilter.createInstance(filter)), blockForResults);
> }
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list