Search code examples
javacluster-computingconcurrenthashmapjgroups

How to give timeout for state transfer in jgroup replicated hashmap?


How can i specify state transfer time out in Jgroup clustering?

public static ReplicatedHashMap<Integer, BaseSeatLayout> _baseSeatLayoutCache;
JChannel baseRouteCache = new JChannel(props);
baseRouteCache.connect("Master-Cluster");
client.startBaseRouteCache(baseRouteCache);
_baseSeatLayoutCache = new ReplicatedHashMap<>(channel);
_baseSeatLayoutCache.addNotifier(this);
_baseSeatLayoutCache.start(10000);
loadData()// This will load around 2 millions entry  

Same code i am running on slave machine(or machine 2) without loadData(), But when i run that code i am getting exception for state timeout exception as 10000ms has passed and only some partial data are getting replicated. How can i change the timeout for initial state transfer?

I am using tcp protocol, my tcp.xml is as follow,

<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.xsd">
    <TCP bind_port="7800"
         recv_buf_size="${tcp.recv_buf_size:130k}"
         send_buf_size="${tcp.send_buf_size:130k}"
         max_bundle_size="64K"
         sock_conn_timeout="300"

         thread_pool.min_threads="0"
         thread_pool.max_threads="20"
         thread_pool.keep_alive_time="30000"/>

    <TCPPING async_discovery="true"
             initial_hosts="${jgroups.tcpping.initial_hosts:10.120.19.145[7800],localhost[7801]}"
             port_range="2" />
    <MERGE3  min_interval="10000"
             max_interval="30000"/>
    <FD_SOCK/>
    <FD timeout="3000" max_tries="3" />
    <VERIFY_SUSPECT timeout="1500"  />
    <BARRIER />
    <pbcast.NAKACK2 use_mcast_xmit="false"
                   discard_delivered_msgs="true"/>
    <UNICAST3 />
    <pbcast.STABLE desired_avg_gossip="50000"
                   max_bytes="4M"/>
    <pbcast.GMS print_local_addr="true" join_timeout="2000"
                view_bundling="true"/>
    <MFC max_credits="2M"
         min_threshold="0.4"/>
    <FRAG2 frag_size="60K"  />

    <pbcast.STATE_TRANSFER/>
</config> 

Solution

  • _baseSeatLayoutCache.start(10000)

    The 10000 ms is the timeout; increase it or set to 0 to wait until the complete state has been transferred.