代码之家  ›  专栏  ›  技术社区  ›  Marnee

Infinispan本地缓存错误:无法调用方法public voidorg.infinispan.globalstate网站.impl.GlobalConfigurationManagerImpl。开始()

  •  0
  • Marnee  · 技术社区  · 4 年前

    我已经将Spring boot服务从5.2.20.Final升级到Infinispan 9.4.16.Final。该服务有两个XML文件。我用转换脚本来转换它们。两者都有 local-cache 条目和其他类型的缓存。一个空的 transport 元素。

    当我们部署和运行这些服务时,通常会在启动时看到以下警告:

    org.infinispan.manager.EmbeddedCacheManagerStartupException: org.infinispan.commons.CacheException: Unable to invoke method public void org.infinispan.globalstate.impl.GlobalConfigurationManagerImpl.start() on object of type GlobalConfigurationManagerImpl

    以上是我们看到的第一个警告/错误。没有堆栈跟踪。当我们只使用本地缓存时,为什么要调用GlobalConfigurationManagerImpl?

    The cache has been stopped and invocations are not allowed! 错误。我们看到的最后一个错误如下。服务启动失败。

    Caused by: org.infinispan.commons.CacheException: Initial state transfer timed out for cache org.infinispan.CONFIG on <server_name>

    ~~ 更多信息 ~~~

    以下是两个XML配置文件之一:

    <infinispan
       xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation = "urn:infinispan:config:9.4 http://www.infinispan.org/schemas/infinispan-config-9.4.xsd"
       xmlns = "urn:infinispan:config:9.4">
    
        <threads/>
        <cache-container name = "TestCenterServiceCache">
    <!-- The conversion tool added this empty "transport" element. It was not present in our old config file -->
            <transport/>
            <jmx domain = "org.infinispan.TestCenterServiceCache"/>
            <local-cache name = "authorizedLocations">
                <expiration lifespan = "3600000"/>
            </local-cache>
    
            <!--caching for 24 hours: 3,600,000 milliseconds/hr x 24 hours -->
            <local-cache name = "proximitySearchConfiguration">
                <expiration lifespan = "86400000"/>
            </local-cache>
        </cache-container>
    </infinispan>
    

    以上是通过应用程序上下文.xml. 第一次警告( GlobalConfigurationManagerImpl.start() )正在引用这些bean。

    <bean id="infinispanCacheManager"
              class="org.infinispan.spring.embedded.support.InfinispanEmbeddedCacheManagerFactoryBean"
              p:configurationFileLocation="classpath:testCenterServices-cache-config.xml" />
    
        <bean id="cacheManager"
              class="org.infinispan.spring.embedded.provider.SpringEmbeddedCacheManager">
            <constructor-arg ref="infinispanCacheManager" />
        </bean>
    

    下面是第二个XML配置文件:

    <?xml version="1.0" ?>
    <infinispan
       xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation = "urn:infinispan:config:9.4 http://www.infinispan.org/schemas/infinispan-config-9.4.xsd"
       xmlns = "urn:infinispan:config:9.4">
    
        <threads />
        <cache-container name="AtlasServicesCacheManager">
            <local-cache name="allLocaleCache" />
            <local-cache name="localeCacheByID" />
    
            <local-cache name="countryByCode" />
            <local-cache name="allActiveCountries" />
            <local-cache name="allCountries" />
    
            <local-cache name="allStatesForCountryCode" />
            <local-cache name="allActiveStatesForCountryCode" />
            <local-cache name="stateForCountryCodeStateCode" />
        </cache-container>
    </infinispan>
    

    以上是通过java代码实例化的。

        @Bean(name="atlasServicesCacheManager")
        public CacheManager makeCacheManager() throws IOException {
            return new SpringEmbeddedCacheManager(new DefaultCacheManager("atlas-cache-config.xml"));
        }
    

    Unable to use any JGroups configuration mechanisms provided in properties {}. Using default JGroups configuration! .

    服务实例正在Windows Server 2012 R2 Standard(Windows 8)上运行。

    0 回复  |  直到 4 年前
        1
  •  1
  •   Marnee    4 年前

    要修复此问题,请移除空的 <transport /> 用于本地缓存的元素。

    添加空元素似乎是 config-converter . 空的 transport 元素就位后,似乎Infinispan被部分配置为集群同步。有关潜在问题的详细信息,请参阅bug report: https://issues.redhat.com/browse/ISPN-11854 .