1

我使用 Infinispan 作为 L2 缓存,并且我有两个应用程序节点。复制两个应用程序中的 L2 缓存。这两个应用程序并不相同。

我的一个应用程序使用 Web 服务填充数据库,而其他应用程序为数据库运行 GUI。

这两个应用程序都对数据库进行了广泛的读写。运行应用程序后,我看到以下错误。我不知道是什么导致了这个错误。

我想知道为什么 - 我的缓存实例没有正确复制每个更改到其他

  • L2 缓存有两个休止符

  • L2 反应不相等

ERROR org.infinispan.interceptors.InvocationContextInterceptor - ISPN000136: Execution error

2013-05-29 06:32:32 ERROR - Exception while processing event, reason: org.infinispan.loaders.CacheLoaderException: Responses contains more than 1 element and these elements are not equal, so can't decide which one to use:

[SuccessfulResponse{responseValue=TransientCacheValue{maxIdle=100000, lastUsed=1369809152081} TransientCacheValue {value=MarshalledValue{instance=, serialized=ByteArray{size=1911, array=0x0301fe0409000000..}, cachedHashCode=1816114786}@57991642}} ,

SuccessfulResponse{responseValue=TransientCacheValue{maxIdle=100000, lastUsed=1369809152116} TransientCacheValue {value=MarshalledValue{instance=, serialized=ByteArray{size=1911, array=0x0301fe0409000000..}, cachedHashCode=1816114786}@6cdaa731}} ]

我的 Infinispan 配置是

    <globalJmxStatistics enabled="true" jmxDomain="org.infinispan" allowDuplicateDomains="true"/>

    <transport

            transportClass="org.infinispan.remoting.transport.jgroups.JGroupsTransport"

            clusterName="infinispan-hibernate-cluster"

            distributedSyncTimeout="50000"

            strictPeerToPeer="false">

        <properties>

            <property name="configurationFile" value="jgroups.xml"/>

        </properties>

    </transport>

</global>



<default>

</default>



<namedCache name="my-cache-entity">

    <clustering mode="replication">

        <stateRetrieval fetchInMemoryState="false" timeout="60000"/>

        <sync replTimeout="20000"/>

    </clustering>

    <locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000"

             lockAcquisitionTimeout="15000" useLockStriping="false"/>

    <eviction maxEntries="10000" strategy="LRU"/>

    <expiration maxIdle="100000" wakeUpInterval="5000"/>

    <lazyDeserialization enabled="true"/>

    <!--<transaction useSynchronization="true"

                 transactionMode="TRANSACTIONAL" autoCommit="false"

                 lockingMode="OPTIMISTIC"/>-->

    <loaders passivation="false" shared="false" preload="false">

        <loader class="org.infinispan.loaders.cluster.ClusterCacheLoader"

                fetchPersistentState="false"

                ignoreModifications="false" purgeOnStartup="false">

            <properties>

                <property name="remoteCallTimeout" value="20000"/>

            </properties>

        </loader>

    </loaders>

</namedCache>

4

1 回答 1

1

复制的实体缓存应该配置有状态检索,正如默认的 Infinispan 配置文件中已经指出的那样,您已经这样做了。ClusterCacheLoader 应该只在特殊情况下使用(用于查询缓存)。为什么不直接使用提供的默认 Infinsipan 配置?实际上,如果您不配置配置文件,它将使用默认配置文件。

于 2013-05-30T12:10:45.430 回答