[jboss-jira] [JBoss JIRA] (JGRP-1827) Forked channel requires udp.xml file

Jim Thomas (JIRA) issues at jboss.org
Fri Apr 18 11:52:33 EDT 2014


    [ https://issues.jboss.org/browse/JGRP-1827?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12962785#comment-12962785 ] 

Jim Thomas commented on JGRP-1827:
----------------------------------

This is all the program you need:
                JChannel ch = new JChannel("main.xml");
                ForkChannel fch = new ForkChannel(ch, "main", "fork-channel");
                fch.connect("N/A");
                ch.connect("main-channel");

Using the main.xml and fork-stacks.xml you attached to this ticket this should throw an exception on the new ForkChannel saying it can't find udp.xml.  If you copy the standard distribution udp.xml to your directory then it should run to the end.  

The reason why it fails when udp.xml is not available is because ForkChannel does not call super so it is using the default constructor for JChannel which for all intents and purposes is like saying new JChannel("udp.xml").  Maybe that is OK but it scares me that ForkChannel is being built on a JChannel that is being initialized by a completely different xml file than the JChannel that ForkChannel was passed in its constructor.  The workaround is to always have a udp.xml available.  Not knowing the details of how all this works exactly, my fear is that if main.xml and udp.xml differed significantly this could lead to some odd or undesired behavior.  Even if that is not the case it seems like an unintended requirement that ForkChannel requires udp.xml to exist.
                
> Forked channel requires udp.xml file
> ------------------------------------
>
>                 Key: JGRP-1827
>                 URL: https://issues.jboss.org/browse/JGRP-1827
>             Project: JGroups
>          Issue Type: Bug
>    Affects Versions: 3.4.1
>         Environment: Android
>            Reporter: Jim Thomas
>            Assignee: Bela Ban
>            Priority: Minor
>             Fix For: 3.4.4, 3.5
>
>         Attachments: bla2.java, fork-stacks.xml, main.xml
>
>
> An exception is thrown when creating a fork channel if the stack file name is something other than udp.xml (in my case main.xml):
> final JChannel mainChannel = new JChannel("main.xml");
> final ForkChannel mbChannel = new ForkChannel(mainChannel,
>                         "main", "fork-mb");
> 4-09 17:33:38.270: W/System.err(5478): java.io.FileNotFoundException: JGRP000003: file "udp.xml" not found
> 04-09 17:33:38.270: W/System.err(5478): 	at org.jgroups.conf.ConfiguratorFactory.getXmlConfigurator(ConfiguratorFactory.java:211)
> 04-09 17:33:38.270: W/System.err(5478): 	at org.jgroups.conf.ConfiguratorFactory.getStackConfigurator(ConfiguratorFactory.java:102)
> 04-09 17:33:38.270: W/System.err(5478): 	at org.jgroups.JChannel.<init>(JChannel.java:172)
> 04-09 17:33:38.270: W/System.err(5478): 	at org.jgroups.JChannel.<init>(JChannel.java:123)
> 04-09 17:33:38.270: W/System.err(5478): 	at org.jgroups.fork.ForkChannel.<init>(ForkChannel.java:75)
> 04-09 17:33:38.270: W/System.err(5478): 	at org.jgroups.fork.ForkChannel.<init>(ForkChannel.java:118)
> 04-09 17:33:38.270: W/System.err(5478): 	at com.novawurks.jgroupstest.JGroupsTestActivity$JGroupsSetupThread.run(JGroupsTestActivity.java:119)
> If I have the stack named udp.xml then the exception is not thrown and everything works as expected.  If I make a copy of main.xml named udp.xml (so both files are present) the exception is not thrown and everything works as expected.
> Contents of main.xml / udp.xml :
> {code:xml}
> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>     xmlns="urn:org:jgroups"
>     xsi:schemaLocation="urn:org:jgroups http://www.jgroups.org/schema/JGroups-3.3.xsd" >
>     <UDP
>         enable_diagnostics="true"
>         ip_mcast="true"
>         ip_ttl="${jgroups.udp.ip_ttl:8}"
>         loopback="true"
>         max_bundle_size="1400"
>         max_bundle_timeout="5"
>         mcast_port="${jgroups.udp.mcast_port:45588}"
>         mcast_recv_buf_size="200K"
>         mcast_send_buf_size="200K"
>         oob_thread_pool.enabled="true"
>         oob_thread_pool.keep_alive_time="5000"
>         oob_thread_pool.max_threads="8"
>         oob_thread_pool.min_threads="1"
>         oob_thread_pool.queue_enabled="false"
>         oob_thread_pool.queue_max_size="100"
>         oob_thread_pool.rejection_policy="discard"
>         thread_naming_pattern="cl"
>         thread_pool.enabled="true"
>         thread_pool.keep_alive_time="5000"
>         thread_pool.max_threads="8"
>         thread_pool.min_threads="2"
>         thread_pool.queue_enabled="true"
>         thread_pool.queue_max_size="10000"
>         thread_pool.rejection_policy="discard"
>         timer.keep_alive_time="3000"
>         timer.max_threads="10"
>         timer.min_threads="4"
>         timer.queue_max_size="500"
>         timer_type="new3"
>         tos="8"
>         ucast_recv_buf_size="200K"
>         ucast_send_buf_size="200K" />
>     <PING />
>     <MERGE2
>         max_interval="30000"
>         min_interval="10000" />
>     <FD_SOCK />
>     <FD_ALL />
>     <VERIFY_SUSPECT timeout="1500" />
>     <BARRIER />
>     <pbcast.NAKACK2
>         discard_delivered_msgs="true"
>         max_msg_batch_size="500"
>         use_mcast_xmit="false"
>         xmit_interval="500"
>         xmit_table_max_compaction_time="30000"
>         xmit_table_msgs_per_row="2000"
>         xmit_table_num_rows="100" />
>     <UNICAST3
>         conn_expiry_timeout="0"
>         max_msg_batch_size="500"
>         xmit_interval="500"
>         xmit_table_max_compaction_time="60000"
>         xmit_table_msgs_per_row="2000"
>         xmit_table_num_rows="100" />
>     <pbcast.STABLE
>         desired_avg_gossip="50000"
>         max_bytes="4M"
>         stability_delay="1000" />
>     <pbcast.GMS
>         join_timeout="3000"
>         print_local_addr="true"
>         view_bundling="true" />
>     <UFC
>         max_credits="2M"
>         min_threshold="0.4" />
>     <MFC
>         max_credits="2M"
>         min_threshold="0.4" />
>     <FRAG frag_size="1000" />
>     <pbcast.STATE_TRANSFER />
>     <FORK>
>         <fork-stack id="main" >
>             <config>
>                 <CENTRAL_LOCK num_backups="2" />
>             </config>
>         </fork-stack>
>         <fork-stack id="lock" >
>             <config>
>                 <CENTRAL_LOCK num_backups="2" />
>                 <STATS />
>             </config>
>         </fork-stack>
>     </FORK>
> </config>
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jboss-jira mailing list