代码之家  ›  专栏  ›  技术社区  ›  Orwa Badran

Spring数据区域条目过期(生存时间)错误

  •  1
  • Orwa Badran  · 技术社区  · 7 年前

    我有一个 春季数据火灾 使用以下注释配置的区域:

    @TimeToLiveExpiration(timeout = "100", action = "INVALIDATE")
    @PartitionRegion(name = "blockedIPCache")
    class BlockedIpEntityType { ... }
    

    我的申请是 弹簧靴 application和我使用以下注释来配置SDG:

    @PeerCacheApplication
    @EnableGemfireCaching
    @EnableCachingDefinedRegions(clientRegionShortcut = ClientRegionShortcut.LOCAL, serverRegionShortcut = RegionShortcut.LOCAL)
    @EnableStatistics
    @EnableExpiration
    @EnableEntityDefinedRegions(basePackageClasses = {...})
    @EnableGemfireRepositories(basePackages = {...})
    class GemFireConfiguration { ... }
    

    我只想使用 春季数据火灾 存储库,一段时间后该条目将无效。

    但是,当我启动应用程序时,我会遇到这个例外。。。

    Caused by: java.lang.IllegalStateException: Cannot set idle timeout when statistics are disabled.
        at org.apache.geode.internal.cache.AbstractRegion.setCustomEntryIdleTimeout(AbstractRegion.java:1157) ~[geode-core-9.1.1.jar:?]
        at org.springframework.data.gemfire.config.annotation.ExpirationConfiguration$ExpirationPolicyMetaData.configure(ExpirationConfiguration.java:511) ~[spring-data-gemfire-2.0.6.RELEASE.jar:2.0.6.RELEASE]
        at org.springframework.data.gemfire.config.annotation.ExpirationConfiguration$1.postProcessAfterInitialization(ExpirationConfiguration.java:160) ~[spring-data-gemfire-2.0.6.RELEASE.jar:2.0.6.RELEASE]
    ...
    

    这恰好发生在Spring尝试自动关联与上面配置的区域相关的存储库时。

    那么我做错了什么?还有,有没有一种方法可以使用Java配置或注释来启用区域统计?

    注意:使用 春季数据火灾 2.0.6 ,则, 春天 5.0.5 ,则, 弹簧靴 2.0.1 在项目中使用。

    1 回复  |  直到 7 年前
        1
  •  1
  •   John Blum    7 年前

    事实证明,你没有做错任何事。不幸的是,你偶然发现了一个bug(!),我已经申请了 SGF-747 而且已经修好了。对于这个问题可能给您带来的不便,我深表歉意。

    我们正在计划 弹簧数据 洛夫莱斯M3 (里程碑3)明天发布( CET,5月17日,星期四 ).发布时间表可从 Spring Release Calendar .所有日期均为暂定日期。

    因此,您可以尝试新的 火的春天数据 (SDG) 洛夫蕾丝 带固定装置的钻头(即2.1.0 M3)。SDG 2.1.0。应该可以很好地配合 弹簧靴 2.0.1/2.释放 春天 5.0.5/6。释放 .

    但是,如果您希望为包含此修复的SDG获得GA位,那么您将不得不等待下一个 弹簧数据 服务发布 ( 凯SR8 ),或 火的春天数据 2.0.8 服务发布 .我支持移植此修复程序。

    不幸的是,没有另一个 弹簧数据 服务发布 (即。 凯SR8 )计划到大约 7月2日 第三 之后 Spring框架 5.0.7 将于 7月2日,星期一 就在之前 弹簧靴 2.0.3 将于 7月4日,星期三 ,这通常是我们计划 弹簧数据 服务发布 .另外,你要知道 弹簧靴 2.0.十、 based on 弹簧数据 ,但应与SD配合良好 洛夫蕾丝 正如我前面提到的那样。

    同时,我将尝试考虑解决方法,其中注释的便利性(例如。 @EnableEntityDefinedRegions )仍然可以使用。我将在中发布解决方法 SGF-747 .

    我看到您指定了 clientRegionShortcut 属性中的属性 @EnableCachingDefinedRegions 注释,但已将应用程序声明为 @PeerCacheApplication 。虽然这样做没有害处,但 clientRegionShortcut 属性在这种情况下是无用的。同样地 serverRegionShortcut 如果您是应用程序,则属性将没有意义 @ClientCacheApplication 相反要记住的东西。

    最后,我想让你知道SDG @EnableStatistics 注释没有您可能认为的效果。

    具体来说,可持续发展目标 @EnableStatistics annotation与启用Pivotal GemFire的统计数据“采样”有关,如前所述 here ,通过执行以下操作进行配置 this ,如SDG中所述 @启用统计信息 注释Javadoc,以及SDG中引用的 Reference Guide .

    最终需要实现的“统计支持”是 setting 该地区的 staticsEnabled attribute property 配置和创建区域时(例如,“blockedIPCache”)。

    这正是 @EnableExpiration 注释现在将间接保证 SGF-747 ,而无需 @启用统计信息 .

    无论如何,我希望这一切都是有意义的,并能有所帮助。

    当做 约翰