Infinispan:响应包含多于1个不相等的元素

时间:2013-05-29 11:49:27

标签: caching jboss infinispan cpu-cache

我使用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>

<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>

1 个答案:

答案 0 :(得分:1)

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