提问者:小点点

Spring Data GemFire Region条目过期(生存时间)错误


我有一个使用下面注释配置的Spring Data GemFire区域:

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

我的应用程序是Spring Boot应用程序,我使用以下注释来配置SDG:

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

我想要的只是使用Spring Data GemFire存储库插入一个对象,一段时间后该条目将失效。

但是,当我开始我的应用程序时,我面临这个例外…

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尝试自动连接与上面配置的Region相关的存储库时,就会发生这种情况。

那么我做错了什么?还有,有没有办法使用Java配置或注释启用区域统计?

注意:使用项目中使用的Spring Data GemFire 2.0.6、Spring 5.0.5、Spring Boot 2.0.1。


共1个答案

匿名用户

事实证明,你没有做错任何事。不幸的是,你偶然发现了一个bug(!),我已经提交了SGF-747并修复了它。我很抱歉这个问题可能给你带来的不便。

我们计划明天(欧洲中部时间5月17日,星期四)发布Spring Data Lovelace M3(里程碑3)。发布时间表可从Spring发布日历中看到。所有日期均为暂定日期。

因此,您可以尝试使用新的Spring Data for Pivotal GemFire(SDG)Lovelace bits(即2.1.0. M3)进行修复。SDG 2.1.0。应该可以很好地与Spring Boot 2.0.1/2配合使用。释放和Spring 5.0.5/6。释放。

但是,如果您希望获得包含此修复程序的SDG的GA位,那么您将不得不等待下一个Spring Data Kay Service Release(Kay SR8)或Pivotal GemFire 2.0.8 Service Release的Spring Data。我支持移植此修复程序。

不幸的是,直到7月2日或3日左右,就在7月2日星期一发布Spring Framework 5.0.7之后,就在7月4日星期三发布Spring Boot 2.0.3之前,我们通常会计划Spring Data Service版本。此外,要知道Spring Boot 2.0. x是基于Spring Data Kay的,但也应该可以很好地与SDLovelace配合使用,正如我之前提到的。

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

我看到您在@EnableCachingDefedRegion ons注释中指定了clientRegion on快捷方式属性,但已将您的应用程序声明为@PeerCacheApplication。虽然这样做没有害处,但clientRegion on快捷方式属性在这种情况下是无用的。同样,如果您的应用程序是@ClientCacheApplication,则serverRegion on快捷方式属性将没有任何意义;需要记住的事情。

最后,我想让您知道SDG@Enable统计注释并没有您可能认为的效果。

具体来说,SDG的@Enable统计注释涉及启用Pivotal GemFire的统计“采样”,如此处所述,通过这样做进行配置,如SDG@Enable统计注释Javadoc中所述,并在SDG参考指南中引用。

最终需要发生的“统计启用”是通过在配置和创建区域(例如“区块IPCache”)时设置区域的st杀人狂属性属性。

这正是@EnableEXUSH注释现在将通过SGF-747中的修复间接保证的,而无需@Enable统计

不管怎样,我希望这一切都有意义并有所帮助。

你好约翰