[
https://issues.jboss.org/browse/JGRP-1827?page=com.atlassian.jira.plugin....
]
Jim Thomas commented on JGRP-1827:
----------------------------------
I think the fork config parameter is requiring an absolute path. On Android I need to only
use relative paths or else I have to go through a lot more pain.
When I use this: <FORK config="fork-stacks.xml"/>
I get this exception:
04-16 08:51:28.584: W/System.err(18318): java.io.FileNotFoundException: /fork-stacks.xml:
open failed: ENOENT (No such file or directory)
However when I do this: <FORK />
I get this Exception:
04-16 08:55:03.344: W/System.err(18554): java.io.FileNotFoundException: JGRP000003: file
"udp.xml" not found
And then if I rename fork-stacks.xml to udp.xml I get:
04-16 08:56:52.954: W/System.err(18662): java.io.IOException: JGRP000004: parsing failure;
the XML document is not correct: the configuration does not start with a <config>
element: fork-stacks
And then if I change my fork-stacks.xml (now udp.xml) to be wrapped by config and FORK :
<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" >
<FORK>
<fork-stacks xmlns="fork-stacks">
<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-stacks>
</FORK>
</config>
Then everything works, but we are back to where we started. At least now I understand why
I was getting the original behavior and why the inline fork stack worked as long as I
named my stack file udp.xml.
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