Author: tolusha
Date: 2011-10-26 07:31:42 -0400 (Wed, 26 Oct 2011)
New Revision: 5092
Modified:
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/lock-manager-config.xml
Log:
EXOJCR-1590: add docs
Modified:
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/lock-manager-config.xml
===================================================================
---
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/lock-manager-config.xml 2011-10-26
11:31:25 UTC (rev 5091)
+++
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/lock-manager-config.xml 2011-10-26
11:31:42 UTC (rev 5092)
@@ -1,145 +1,186 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- This document was created with Syntext Serna Free. --><!DOCTYPE article
PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []>
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This document was created with Syntext Serna Free. -->
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<chapter id="JCR.LockManagerConfiguration">
-<?dbhtml filename="ch-lock-manager-config.html"?>
<title>LockManager configuration</title>
+ <?dbhtml filename="ch-lock-manager-config.html"?>
+
+ <title>LockManager configuration</title>
+
<section>
<title>Introduction</title>
+
<para>What LockManager does?</para>
+
<para>In general, LockManager stores Lock objects, so it can give a Lock
object or can release it, etc.</para>
+
<para>Also, LockManager is responsible for removing Locks that live too
- long. This parameter may be configured with "time-out"
property.</para>
- <para>JCR provides two basic implementations of LockManager:</para>
+ long. This parameter may be configured with "time-out"
property.</para>
+
+ <para>JCR provides two basic implementations of LockManager:</para>
+
<itemizedlist>
<listitem>
<para><classname>org.exoplatform.services.jcr.impl.core.lock.LockManagerImpl</classname>;</para>
</listitem>
+
<listitem>
<para><classname>org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl</classname>;</para>
</listitem>
</itemizedlist>
+
<para>In this article, we will mostly mention about
CacheableLockManagerImpl.</para>
+
<para>You can enable LockManager by adding lock-manager-configuration to
workspace-configuration.</para>
+
<para>For example:</para>
- <programlisting language="xml"><workspace
name="ws">
+
+ <programlisting language="xml"><workspace
name="ws">
...
- <lock-manager
class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl">
+ <lock-manager
class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl">
<properties>
- <property name="time-out" value="15m"
/>
+ <property name="time-out" value="15m" />
...
</properties>
</lock-manager>
...
</workspace></programlisting>
</section>
+
<section>
<title>LockManagerImpl</title>
+
<para>LockManagerImpl is a simple implementation of LockManager, and also
faster than CacheableLockManager. It stores Lock objects in HashMap and
may also persist Locks if LockPersister is configured. LockManagerImpl
does not support replication in any way.</para>
- <para>See more about LockManager Configuration at <link
linkend="JCR.eXoJCRconfiguration">here</link>.</para>
+
+ <para>See more about LockManager Configuration at <link
+ linkend="JCR.eXoJCRconfiguration">here</link>.</para>
</section>
+
<section>
<title>CacheableLockManagerImpl</title>
- <para>CacheableLockManagerImpl stores Lock objects in JBoss-cache, so Locks
- are replicable and affect on cluster, not only a single node. Also,
+
+ <para>CacheableLockManagerImpl stores Lock objects in JBoss-cache, so
+ Locks are replicable and affect on cluster, not only a single node. Also,
JBoss-cache has JDBCCacheLoader, so Locks will be stored to the
database.</para>
- <para>Both of the implementations support to remove Expired Locks. LockRemover
separates threads, that periodically ask LockManager to remove Locks
- that live so long. So, the timeout for LockRemover may be set
- as follows, the default value is 30m.</para>
+
+ <para>Both of the implementations support to remove Expired Locks.
+ LockRemover separates threads, that periodically ask LockManager to remove
+ Locks that live so long. So, the timeout for LockRemover may be set as
+ follows, the default value is 30m.</para>
+
<programlisting language="xml"><properties>
- <property name="time-out" value="10m"
/>
+ <property name="time-out" value="10m" />
...
</properties></programlisting>
+
<section>
<title>Configuration</title>
+
<para>Replication requirements are the same for Cache.</para>
- <para> You can see a full JCR configuration example at <link
linkend="JCR.ClusterConfig.JCRExternalConfig">here</link>.</para>
+
+ <para>You can see a full JCR configuration example at <link
+
linkend="JCR.ClusterConfig.JCRExternalConfig">here</link>.</para>
+
<para>Common tips:</para>
+
<itemizedlist>
<listitem>
- <para><parameter>clusterName</parameter>
("jbosscache-cluster-name")
+ <para><parameter>clusterName</parameter>
("jbosscache-cluster-name")
must be unique;</para>
</listitem>
+
<listitem>
<para><parameter>cache.jdbc.table.name</parameter> must be
unique
per datasource;</para>
</listitem>
+
<listitem>
<para><parameter>cache.jdbc.fqn.type</parameter> and
cache.jdbc.node.type must be configured according to used
database;</para>
</listitem>
</itemizedlist>
- <para>There are a few ways to configure CacheableLockManagerImpl, and all
- of them configure JBoss-cache and JDBCCacheLoader.</para>
- <para>See <ulink
url="http://community.jboss.org/wiki/JBossCacheJDBCCacheLoader"...
+
+ <para>There are a few ways to configure CacheableLockManagerImpl, and
+ all of them configure JBoss-cache and JDBCCacheLoader.</para>
+
+ <para>See <ulink
+
url="http://community.jboss.org/wiki/JBossCacheJDBCCacheLoader"...
</section>
+
<section>
<title>Simple JbossCache Configuration</title>
- <para>The first one is putting JbossCache configuraion file path to
+
+ <para>The first one is putting JbossCache configuraion file path to
CacheableLockManagerImpl.</para>
+
<para><note>
- <para>This configuration is not so good as you think. Because
- the repository may contain many workspaces, and each workspace must
+ <para>This configuration is not so good as you think. Because the
+ repository may contain many workspaces, and each workspace must
contain LockManager configuration, and LockManager configuration may
- contain the JbossCache config file. So, the total configuration will grow
- up. But it is useful if we want to have a single LockManager with a special
- configuration.</para>
+ contain the JbossCache config file. So, the total configuration will
+ grow up. But it is useful if we want to have a single LockManager
+ with a special configuration.</para>
</note></para>
+
<para>Configuration is as follows:</para>
- <programlisting language="xml"><lock-manager
class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl">
+
+ <programlisting language="xml"><lock-manager
class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl">
<properties>
- <property name="time-out" value="15m"
/>
- <property name="jbosscache-configuration"
value="conf/standalone/cluster/test-jbosscache-lock-config.xml"
/>
+ <property name="time-out" value="15m" />
+ <property name="jbosscache-configuration"
value="conf/standalone/cluster/test-jbosscache-lock-config.xml" />
</properties>
</lock-manager></programlisting>
+
<para><filename>test-jbosscache-lock-config.xml</filename></para>
-
- <programlisting language="xml"><?xml
version="1.0" encoding="UTF-8"?>
-<jbosscache
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:jboss:jbosscache-core:config:3.2">
- <locking useLockStriping="false"
concurrencyLevel="50000"
lockParentForChildInsertRemove="false"
lockAcquisitionTimeout="20000" />
+ <programlisting language="xml"><?xml version="1.0"
encoding="UTF-8"?>
+<jbosscache
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:jboss:jbosscache-core:config:3.2">
- <clustering mode="replication"
clusterName="JBoss-Cache-Lock-Cluster_Name">
- <stateRetrieval timeout="20000"
fetchInMemoryState="false" nonBlocking="true"
/>
+ <locking useLockStriping="false" concurrencyLevel="50000"
lockParentForChildInsertRemove="false" lockAcquisitionTimeout="20000"
/>
+
+ <clustering mode="replication"
clusterName="JBoss-Cache-Lock-Cluster_Name">
+ <stateRetrieval timeout="20000" fetchInMemoryState="false"
nonBlocking="true" />
<jgroupsConfig>
- <TCP bind_addr="127.0.0.1"
start_port="9800" 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"
use_concurrent_stack="true" thread_pool.enabled="true"
thread_pool.min_threads="1"
thread_pool.max_threads="25"
- thread_pool.keep_alive_time="5000"
thread_pool.queue_enabled="false"
thread_pool.queue_max_size="100"
thread_pool.rejection_policy="run"
- oob_thread_pool.enabled="true"
oob_thread_pool.min_threads="1"
oob_thread_pool.max_threads="8"
oob_thread_pool.keep_alive_time="5000"
- oob_thread_pool.queue_enabled="false"
oob_thread_pool.queue_max_size="100"
oob_thread_pool.rejection_policy="run" />
- <MPING timeout="2000"
num_initial_members="2" mcast_port="34540"
bind_addr="127.0.0.1" mcast_addr="224.0.0.1"
/>
+ <TCP bind_addr="127.0.0.1" start_port="9800"
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" use_concurrent_stack="true"
thread_pool.enabled="true" thread_pool.min_threads="1"
thread_pool.max_threads="25"
+ thread_pool.keep_alive_time="5000"
thread_pool.queue_enabled="false" thread_pool.queue_max_size="100"
thread_pool.rejection_policy="run"
+ oob_thread_pool.enabled="true" oob_thread_pool.min_threads="1"
oob_thread_pool.max_threads="8"
oob_thread_pool.keep_alive_time="5000"
+ oob_thread_pool.queue_enabled="false"
oob_thread_pool.queue_max_size="100"
oob_thread_pool.rejection_policy="run" />
+ <MPING timeout="2000" num_initial_members="2"
mcast_port="34540" bind_addr="127.0.0.1"
mcast_addr="224.0.0.1" />
- <MERGE2 max_interval="30000"
min_interval="10000" />
+ <MERGE2 max_interval="30000" min_interval="10000"
/>
<FD_SOCK />
- <FD max_tries="5" shun="true"
timeout="10000" />
- <VERIFY_SUSPECT timeout="1500" />
- <pbcast.NAKACK discard_delivered_msgs="true"
gc_lag="0" retransmit_timeout="300,600,1200,2400,4800"
use_mcast_xmit="false" />
- <UNICAST timeout="300,600,1200,2400,3600" />
- <pbcast.STABLE desired_avg_gossip="50000"
max_bytes="400000" stability_delay="1000" />
- <pbcast.GMS join_timeout="5000"
print_local_addr="true" shun="false"
view_ack_collection_timeout="5000"
view_bundling="true" />
- <FRAG2 frag_size="60000" />
+ <FD max_tries="5" shun="true" timeout="10000"
/>
+ <VERIFY_SUSPECT timeout="1500" />
+ <pbcast.NAKACK discard_delivered_msgs="true" gc_lag="0"
retransmit_timeout="300,600,1200,2400,4800" use_mcast_xmit="false"
/>
+ <UNICAST timeout="300,600,1200,2400,3600" />
+ <pbcast.STABLE desired_avg_gossip="50000"
max_bytes="400000" stability_delay="1000" />
+ <pbcast.GMS join_timeout="5000" print_local_addr="true"
shun="false" view_ack_collection_timeout="5000"
view_bundling="true" />
+ <FRAG2 frag_size="60000" />
<pbcast.STREAMING_STATE_TRANSFER />
- <pbcast.FLUSH timeout="0" />
+ <pbcast.FLUSH timeout="0" />
</jgroupsConfig
<sync />
</clustering>
- <loaders passivation="false"
shared="true">
+ <loaders passivation="false" shared="true">
<preload>
- <node fqn="/" />
+ <node fqn="/" />
</preload>
- <loader class="org.jboss.cache.loader.JDBCCacheLoader"
async="false" fetchPersistentState="false"
ignoreModifications="false"
purgeOnStartup="false">
+ <loader class="org.jboss.cache.loader.JDBCCacheLoader"
async="false" fetchPersistentState="false"
ignoreModifications="false" purgeOnStartup="false">
<properties>
cache.jdbc.table.name=jcrlocks_ws
cache.jdbc.table.create=true
@@ -158,53 +199,63 @@
</jbosscache>
</programlisting>
+
<para>Configuration requirements:</para>
+
<itemizedlist>
<listitem>
- <para><clustering mode="replication"
- clusterName="JBoss-Cache-Lock-Cluster_Name"> - the
cluster name must
- be unique;</para>
+ <para><clustering mode="replication"
+ clusterName="JBoss-Cache-Lock-Cluster_Name"> - the cluster
name
+ must be unique;</para>
</listitem>
+
<listitem>
<para><parameter>cache.jdbc.table.name</parameter> must be
unique
per datasource;</para>
</listitem>
+
<listitem>
<para><parameter>cache.jdbc.node.type</parameter> and
<parameter>cache.jdbc.fqn.type</parameter> must be configured
- according to using the database. See <link
endterm="datatypes.title" linkend="datatypes"/> .</para>
+ according to using the database. See <link
endterm="datatypes.title"
+ linkend="datatypes"></link> .</para>
</listitem>
</itemizedlist>
</section>
+
<section>
<title>Template JBossCache Configuration</title>
- <para>The second one is using the template JBoss-cache configuration for all
- LockManagers.</para>
+
+ <para>The second one is using the template JBoss-cache configuration for
+ all LockManagers.</para>
+
<para><citetitle>Lock template
configuration</citetitle></para>
+
<para><filename>test-jbosscache-lock.xml</filename></para>
- <programlisting language="xml"><?xml
version="1.0" encoding="UTF-8"?>
-<jbosscache
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:jboss:jbosscache-core:config:3.1">
- <locking useLockStriping="false"
concurrencyLevel="50000"
lockParentForChildInsertRemove="false"
- lockAcquisitionTimeout="20000" />
+ <programlisting language="xml"><?xml version="1.0"
encoding="UTF-8"?>
+<jbosscache
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:jboss:jbosscache-core:config:3.1">
- <clustering mode="replication"
clusterName="${jbosscache-cluster-name}">
- <stateRetrieval timeout="20000"
fetchInMemoryState="false" />
- <jgroupsConfig multiplexerStack="jcr.stack" />
+ <locking useLockStriping="false" concurrencyLevel="50000"
lockParentForChildInsertRemove="false"
+ lockAcquisitionTimeout="20000" />
+
+ <clustering mode="replication"
clusterName="${jbosscache-cluster-name}">
+ <stateRetrieval timeout="20000"
fetchInMemoryState="false" />
+ <jgroupsConfig multiplexerStack="jcr.stack" />
<sync />
</clustering>
- <loaders passivation="false"
shared="true">
+ <loaders passivation="false" shared="true">
<!-- All the data of the JCR locks needs to be loaded at startup -->
<preload>
- <node fqn="/" />
+ <node fqn="/" />
</preload>
<!--
For another cache-loader class you should use another template with
cache-loader specific parameters
->
- <loader class="org.jboss.cache.loader.JDBCCacheLoader"
async=q"false" fetchPersistentState="false"
- ignoreModifications="false"
purgeOnStartup="false">
+ <loader class="org.jboss.cache.loader.JDBCCacheLoader"
async=q"false" fetchPersistentState="false"
+ ignoreModifications="false" purgeOnStartup="false">
<properties>
cache.jdbc.table.name=${jbosscache-cl-cache.jdbc.table.name}
cache.jdbc.table.create=${jbosscache-cl-cache.jdbc.table.create}
@@ -220,72 +271,79 @@
</loader>
</loaders>
</jbosscache></programlisting>
+
<para>As you see, all configurable parameters are filled by templates
and will be replaced by LockManagers configuration parameters:</para>
- <programlisting language="xml"><lock-manager
class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl">
+
+ <programlisting language="xml"><lock-manager
class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl">
<properties>
- <property name="time-out" value="15m"
/>
- <property name="jbosscache-configuration"
value="test-jbosscache-lock.xml" />
- <property name="jgroups-configuration"
value="udp-mux.xml" />
- <property name="jgroups-multiplexer-stack"
value="true" />
- <property name="jbosscache-cluster-name"
value="JCR-cluster-locks-ws" />
- <property name="jbosscache-cl-cache.jdbc.table.name"
value="jcrlocks_ws" />
- <property name="jbosscache-cl-cache.jdbc.table.create"
value="true" />
- <property name="jbosscache-cl-cache.jdbc.table.drop"
value="false" />
- <property name="jbosscache-cl-cache.jdbc.table.primarykey"
value="jcrlocks_ws_pk" />
- <property name="jbosscache-cl-cache.jdbc.fqn.column"
value="fqn" />
- <property name="jbosscache-cl-cache.jdbc.fqn.type"
value="AUTO"/>
- <property name="jbosscache-cl-cache.jdbc.node.column"
value="node" />
- <property name="jbosscache-cl-cache.jdbc.node.type"
value="AUTO"/>
- <property name="jbosscache-cl-cache.jdbc.parent.column"
value="parent" />
- <property name="jbosscache-cl-cache.jdbc.datasource"
value="jdbcjcr" />
+ <property name="time-out" value="15m" />
+ <property name="jbosscache-configuration"
value="test-jbosscache-lock.xml" />
+ <property name="jgroups-configuration"
value="udp-mux.xml" />
+ <property name="jgroups-multiplexer-stack" value="true"
/>
+ <property name="jbosscache-cluster-name"
value="JCR-cluster-locks-ws" />
+ <property name="jbosscache-cl-cache.jdbc.table.name"
value="jcrlocks_ws" />
+ <property name="jbosscache-cl-cache.jdbc.table.create"
value="true" />
+ <property name="jbosscache-cl-cache.jdbc.table.drop"
value="false" />
+ <property name="jbosscache-cl-cache.jdbc.table.primarykey"
value="jcrlocks_ws_pk" />
+ <property name="jbosscache-cl-cache.jdbc.fqn.column"
value="fqn" />
+ <property name="jbosscache-cl-cache.jdbc.fqn.type"
value="AUTO"/>
+ <property name="jbosscache-cl-cache.jdbc.node.column"
value="node" />
+ <property name="jbosscache-cl-cache.jdbc.node.type"
value="AUTO"/>
+ <property name="jbosscache-cl-cache.jdbc.parent.column"
value="parent" />
+ <property name="jbosscache-cl-cache.jdbc.datasource"
value="jdbcjcr" />
</properties>
</lock-manager></programlisting>
+
<para>Configuration requirements:<itemizedlist>
<listitem>
<para><parameter>jbosscache-cl-cache.jdbc.fqn.column</parameter>
and <parameter>jbosscache-cl-cache.jdbc.node.type</parameter> is
- the same as cache.jdbc.fqn.type and cache.jdbc.node.type in
+ the same as cache.jdbc.fqn.type and cache.jdbc.node.type in
JBoss-Cache configuration. You can set those data types according
- to database type (See <link endterm="datatypes.title"
linkend="datatypes"/>) or set it as AUTO (or do not set at
+ to database type (See <link endterm="datatypes.title"
+ linkend="datatypes"></link>) or set it as AUTO (or do not
set at
all) and data type will be detected automatically.</para>
</listitem>
+
<listitem>
- <para>As you see, jgroups-configuration is moved to separate the
configuration
- file - udp-mux.xml. In this case, the udp-mux.xml file is a common JGroup
- configuration for all components (QueryHandler, Cache, LockManager), but
- we can still create our own configuration.</para>
+ <para>As you see, jgroups-configuration is moved to separate the
+ configuration file - udp-mux.xml. In this case, the udp-mux.xml
+ file is a common JGroup configuration for all components
+ (QueryHandler, Cache, LockManager), but we can still create our
+ own configuration.</para>
</listitem>
</itemizedlist></para>
+
<para><filename>our-udp-mux.xml</filename></para>
-
+
<programlisting language="xml"><protocol_stacks>
- <stack name="jcr.stack">
+ <stack name="jcr.stack">
<config>
- <UDP mcast_addr="228.10.10.10"
mcast_port="45588" tos="8"
ucast_recv_buf_size="20000000"
- ucast_send_buf_size="640000"
mcast_recv_buf_size="25000000"
mcast_send_buf_size="640000" loopback="false"
- discard_incompatible_packets="true"
max_bundle_size="64000" max_bundle_timeout="30"
- use_incoming_packet_handler="true"
ip_ttl="2" enable_bundling="true"
enable_diagnostics="true"
- thread_naming_pattern="cl"
use_concurrent_stack="true" thread_pool.enabled="true"
thread_pool.min_threads="2"
- thread_pool.max_threads="8"
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="1"
oob_thread_pool.max_threads="8"
oob_thread_pool.keep_alive_time="5000"
- oob_thread_pool.queue_enabled="false"
oob_thread_pool.queue_max_size="100"
oob_thread_pool.rejection_policy="Run" />
+ <UDP mcast_addr="228.10.10.10" mcast_port="45588"
tos="8" ucast_recv_buf_size="20000000"
+ ucast_send_buf_size="640000"
mcast_recv_buf_size="25000000" mcast_send_buf_size="640000"
loopback="false"
+ discard_incompatible_packets="true"
max_bundle_size="64000" max_bundle_timeout="30"
+ use_incoming_packet_handler="true" ip_ttl="2"
enable_bundling="true" enable_diagnostics="true"
+ thread_naming_pattern="cl" use_concurrent_stack="true"
thread_pool.enabled="true" thread_pool.min_threads="2"
+ thread_pool.max_threads="8"
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="1"
oob_thread_pool.max_threads="8"
oob_thread_pool.keep_alive_time="5000"
+ oob_thread_pool.queue_enabled="false"
oob_thread_pool.queue_max_size="100"
oob_thread_pool.rejection_policy="Run" />
- <PING timeout="2000"
num_initial_members="3" />
- <MERGE2 max_interval="30000"
min_interval="10000" />
+ <PING timeout="2000" num_initial_members="3"
/>
+ <MERGE2 max_interval="30000" min_interval="10000"
/>
<FD_SOCK />
- <FD timeout="10000" max_tries="5"
shun="true" />
- <VERIFY_SUSPECT timeout="1500" />
+ <FD timeout="10000" max_tries="5"
shun="true" />
+ <VERIFY_SUSPECT timeout="1500" />
<BARRIER />
- <pbcast.NAKACK use_stats_for_retransmission="false"
exponential_backoff="150" use_mcast_xmit="true"
- gc_lag="0"
retransmit_timeout="50,300,600,1200"
discard_delivered_msgs="true" />
- <UNICAST timeout="300,600,1200" />
- <pbcast.STABLE stability_delay="1000"
desired_avg_gossip="50000" max_bytes="1000000"
/>
- <VIEW_SYNC avg_send_interval="60000" />
- <pbcast.GMS print_local_addr="true"
join_timeout="3000" shun="false"
view_bundling="true" />
- <FC max_credits="500000"
min_threshold="0.20" />
- <FRAG2 frag_size="60000" />
+ <pbcast.NAKACK use_stats_for_retransmission="false"
exponential_backoff="150" use_mcast_xmit="true"
+ gc_lag="0" retransmit_timeout="50,300,600,1200"
discard_delivered_msgs="true" />
+ <UNICAST timeout="300,600,1200" />
+ <pbcast.STABLE stability_delay="1000"
desired_avg_gossip="50000" max_bytes="1000000" />
+ <VIEW_SYNC avg_send_interval="60000" />
+ <pbcast.GMS print_local_addr="true"
join_timeout="3000" shun="false" view_bundling="true"
/>
+ <FC max_credits="500000" min_threshold="0.20"
/>
+ <FRAG2 frag_size="60000" />
<!--pbcast.STREAMING_STATE_TRANSFER /-->
<pbcast.STATE_TRANSFER />
<!-- pbcast.FLUSH /-->
@@ -293,67 +351,164 @@
</stack>
</protocol_stacks> </programlisting>
</section>
+
<section id="datatypes">
<title id="datatypes.title">Data Types in Different
Databases</title>
+
<table>
<title>FQN type and node type in different databases</title>
+
<tgroup cols="3">
<thead>
<row>
<entry>DataBase name</entry>
+
<entry>Node data type</entry>
+
<entry>FQN data type</entry>
</row>
</thead>
+
<tbody>
<row>
<entry>default</entry>
+
<entry>BLOB</entry>
+
<entry>VARCHAR(512)</entry>
</row>
+
<row>
<entry>HSSQL</entry>
+
<entry>OBJECT</entry>
+
<entry>VARCHAR(512)</entry>
</row>
+
<row>
<entry>MySQL</entry>
+
<entry>LONGBLOB</entry>
+
<entry>VARCHAR(512)</entry>
</row>
+
<row>
<entry>ORACLE</entry>
+
<entry>BLOB</entry>
+
<entry>VARCHAR2(512)</entry>
</row>
+
<row>
<entry>PostgreSQL</entry>
+
<entry>bytea</entry>
+
<entry>VARCHAR(512)</entry>
</row>
+
<row>
<entry>MSSQL</entry>
+
<entry>VARBINARY(MAX)</entry>
+
<entry>VARCHAR(512)</entry>
</row>
+
<row>
<entry>DB2</entry>
+
<entry>BLOB</entry>
+
<entry>VARCHAR(512)</entry>
</row>
+
<row>
<entry>Sybase</entry>
+
<entry>IMAGE</entry>
+
<entry>VARCHAR(512)</entry>
</row>
+
<row>
<entry>Ingres</entry>
+
<entry>long byte</entry>
+
<entry>VARCHAR(512)</entry>
</row>
</tbody>
</tgroup>
</table>
</section>
+
+ <section>
+ <title>Lock migration from 1.12.x</title>
+
+ <para>There are 3 choices:</para>
+
+ <para>I. When new Shareable Cache feature is not going to be used and
+ all locks should be kept after migration.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Ensure that the same lock tables used in
configuration;</para>
+ </listitem>
+
+ <listitem>
+ <para>Start the server;</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>II. When new Shareable Cache feature is not going to be used and
+ all locks should be removed after migration.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Ensure that the same lock tables used in
configuration;</para>
+ </listitem>
+
+ <listitem>
+ <para>Start the sever WITH system property
+ -Dorg.exoplatform.jcr.locks.force.remove=true;</para>
+ </listitem>
+
+ <listitem>
+ <para>Stop the server;</para>
+ </listitem>
+
+ <listitem>
+ <para>Start the server (WITHOUT system property
+ -Dorg.exoplatform.jcr.locks.force.remove);</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>III. When new Shareable Cache feature will be used (in this case
+ all locks are removed after migration).</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Start the sever WITH system property
+ -Dorg.exoplatform.jcr.locks.force.remove=true;</para>
+ </listitem>
+
+ <listitem>
+ <para>Stop the server;</para>
+ </listitem>
+
+ <listitem>
+ <para>Start the server (WITHOUT system property
+ -Dorg.exoplatform.jcr.locks.force.remove);</para>
+ </listitem>
+
+ <listitem>
+ <para>(Not mandatory) manually remove old tables for lock;</para>
+ </listitem>
+ </itemizedlist>
+ </section>
</section>
</chapter>