<?xml version="1.0" encoding="UTF-8"?>
<!--
 This file is part of the Meeds project (https://meeds.io/).

 Copyright (C) 2020 - 2025 Meeds Association contact@meeds.io

 This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU Lesser General Public
 License as published by the Free Software Foundation; either
 version 3 of the License, or (at your option) any later version.
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 Lesser General Public License for more details.

 You should have received a copy of the GNU Lesser General Public License
 along with this program; if not, write to the Free Software Foundation,
 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-->
<config>
  <TCP
      singleton_name="gatein-tcp"
      bind_addr="${jgroups.tcp.address:127.0.0.1}"
      start_port="${gatein.jgroups.tcp.port:7700}"
      tcp_nodelay="true"
      loopback="true"
      recv_buf_size="20000000"
      send_buf_size="640000"
      discard_incompatible_packets="true"
      max_bundle_size="64000"
      max_bundle_timeout="30"
      use_incoming_packet_handler="true"
      enable_bundling="false"
      use_send_queues="false"
      sock_conn_timeout="300"
      skip_suspected_members="true"
      timer.num_threads="12"
      enable_diagnostics="${jboss.jgroups.enable_diagnostics:true}"
      diagnostics_addr="${jboss.jgroups.diagnostics_addr:224.0.75.75}"
      diagnostics_port="${jboss.jgroups.diagnostics_port:7500}"

      thread_pool.enabled="true"
      thread_pool.min_threads="20"
      thread_pool.max_threads="200"
      thread_pool.keep_alive_time="5000"
      thread_pool.queue_enabled="true"
      thread_pool.queue_max_size="1000"
      thread_pool.rejection_policy="discard"

      oob_thread_pool.enabled="true"
      oob_thread_pool.min_threads="20"
      oob_thread_pool.max_threads="200"
      oob_thread_pool.keep_alive_time="1000"
      oob_thread_pool.queue_enabled="false"
      oob_thread_pool.rejection_policy="discard"/>
  <!-- Alternative 1: multicast-based automatic discovery. -->
  <MPING
      bind_addr="${jgroups.bind_addr:127.0.0.1}" break_on_coord_rsp="true"
      num_initial_members="3"
      mcast_addr="${gatein.mping.mcast_addr:235.15.15.15}"
      mcast_port="${gatein.tcp.mping_mcast_port:46700}"
      ip_ttl="${jgroups.udp.ip_ttl:2}"/>
  <!-- Alternative 2: non multicast-based replacement for MPING. Requires a static configuration
      of *all* possible cluster members.
 <TCPPING timeout="3000"
          initial_hosts="${gatein.jgroups.tcp.tcpping.initial_hosts:localhost[7700],localhost[7701]}"
          port_range="1"
          num_initial_members="3"/>
  -->
  <MERGE2 max_interval="100000" min_interval="20000"/>
  <FD_SOCK start_port="${gatein.jgroups.tcp.fd_sock_port:58600}"/>
  <FD timeout="6000" max_tries="5"/>
  <VERIFY_SUSPECT timeout="1500"/>
  <BARRIER/>
  <pbcast.NAKACK use_mcast_xmit="false" gc_lag="0"
                 retransmit_timeout="300,600,1200,2400,4800"
                 discard_delivered_msgs="true"/>
  <UNICAST timeout="300,600,1200,2400,3600"/>
  <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000"
                 max_bytes="400000"/>
  <VIEW_SYNC avg_send_interval="10000"/>
  <pbcast.GMS print_local_addr="true" join_timeout="3000"
              view_bundling="true"
              view_ack_collection_timeout="5000"
              resume_task_timeout="7500"/>
  <FC max_credits="2000000" min_threshold="0.10"
      ignore_synchronous_response="true"/>
  <FRAG2 frag_size="60000"/>
  <!-- pbcast.STREAMING_STATE_TRANSFER/ -->
  <pbcast.STATE_TRANSFER/>
  <pbcast.FLUSH timeout="0" start_flush_timeout="10000"/>
</config>

