<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (C) 2017 eXo Platform SAS.

    This 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 2.1 of
    the License, or (at your option) any later version.

    This software 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 software; if not, write to the Free
    Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
    02110-1301 USA, or see the FSF site: http://www.fsf.org.

-->
<infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns="urn:infinispan:config:8.2"
            xsi:schemaLocation="urn:infinispan:config:8.2 http://www.infinispan.org/schemas/infinispan-config-8.2.xsd">
  <threads>
    <thread-factory name="infinispan-factory" group-name="infinispan" thread-name-pattern="%G %i" priority="5"/>

    <!-- listener-executor -->
    <blocking-bounded-queue-thread-pool name="infinispan-listener" thread-factory="infinispan-factory" core-threads="1" max-threads="5" queue-length="0" keepalive-time="0"/>
  </threads>

  <jgroups transport="org.infinispan.remoting.transport.jgroups.JGroupsTransport">
    <stack-file name="stack" path="${exo.jcr.cluster.jgroups.config}"/>
  </jgroups>

  <cache-container name="lock-manager"  default-cache="default"  listener-executor="infinispan-listener"
                   statistics="true">
    <jmx duplicate-domains="true" domain="jcr.ispn.cache" mbean-server-lookup="org.infinispan.jmx.PlatformMBeanServerLookup"/>
    <transport cluster="${exo.cluster.partition.name}-jcr-lock" stack="stack" node-name="${exo.cluster.node.name}"  lock-timeout="240000"/>
    <replicated-cache-configuration mode="SYNC" name="default" statistics="true" remote-timeout="${exo.jcr.cluster.lock.sync.repltimeout:240000}">
      <locking isolation="READ_COMMITTED" concurrency-level="500" striping="false" write-skew="false" acquire-timeout="${exo.jcr.lock.lockacquisitiontimeout:180000}"/>
      <transaction transaction-manager-lookup="org.exoplatform.services.transaction.infinispan.JBossStandaloneJTAManagerLookup" mode="NON_XA"/>
      <state-transfer enabled="${exo.jcr.cluster.lock.statetransfer.fetchinmemorystate:false}" timeout="${exo.jcr.cluster.lock.statetransfer.timeout:240000}"/>
      <eviction strategy="NONE" />
      <expiration lifespan="-1" />
      <persistence passivation="false">
        <string-keyed-jdbc-store xmlns="urn:infinispan:config:store:jdbc:8.0" shared="true" fetch-state="true" read-only="false" purge="false" preload="true">
          <string-keyed-table drop-on-exit="${infinispan-cl-cache.jdbc.table.drop}" create-on-start="${infinispan-cl-cache.jdbc.table.create}"
                              prefix="${infinispan-cl-cache.jdbc.table.name}">
            <id-column name="${infinispan-cl-cache.jdbc.id.column}" type="${infinispan-cl-cache.jdbc.id.type}" />
            <data-column name="${infinispan-cl-cache.jdbc.data.column}" type="${infinispan-cl-cache.jdbc.data.type}" />
            <timestamp-column name="${infinispan-cl-cache.jdbc.timestamp.column}" type="${infinispan-cl-cache.jdbc.timestamp.type}" />
          </string-keyed-table>
        </string-keyed-jdbc-store>
      </persistence>
    </replicated-cache-configuration>
  </cache-container>
</infinispan>