Ошибка истечения срока действия записи в Data Spring GemFire ​​(время жизни) - PullRequest
0 голосов
/ 16 мая 2018

У меня есть 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 пытается автоматически подключить мой репозиторий, относящийся к региону, настроенному выше.

Так что я делаю не так? И есть ли способ включить статистику региона с помощью конфигурации Java или аннотаций?

Примечание: Использование Spring Data GemFire ​​ 2.0.6 , Spring 5.0.5 , Spring Boot 2.0.1 используется в проекте.

1 Ответ

0 голосов
/ 17 мая 2018

Оказывается, ты не сделал ничего плохого.К сожалению, вы наткнулись на ошибку (!), Для которой я уже подал SGF-747 и исправил.Приносим извинения за неудобства, которые могла причинить вам эта проблема.

Мы планируем выпустить Spring Data Lovelace M3 (Milestone 3) завтра ( четверг), 5/17, CET ).Расписание релизов отображается в Spring Release Calendar .Все даты являются ориентировочными.

Таким образом, вы можете попробовать новые Spring Data для Pivotal GemFire ​​ (SDG) Lovelace бит (т.е. 2.1.0.M3) сисправить.ЦУР 2.1.0.должен нормально работать с Spring Boot 2.0.1 / 2.RELEASE и Spring 5.0.5 / 6.RELEASE .

Однако, если вы ожидаете получить биты GA для SDG, содержащие это исправление, вам придется ждать следующих данных Spring Kay Service Release ( Kay SR8 ) или данные Spring для Pivotal GemFire ​​ 2.0.8 Сервисный выпуск .Я поддерживаю портирование этого исправления.

К сожалению, нет другого Spring Data Kay Service Release (то есть Kay SR8 ) планируется до, вероятно, около 2-го июля или 3-го , сразу после Spring Framework 5.0.7 , выпущенного в понедельник2 июля и непосредственно перед Spring Boot 2.0.3 выпущен в среду, 4 июля , что обычно происходит, когда мы планируем SpringДанные Сервисные релизы .Также следует знать, что Spring Boot 2.0.x - это на основе Spring Data Kay , но должно работать толькохорошо с SD Lovelace тоже, как я упоминал ранее.

Тем временем я попытаюсь придумать обходной путь, где удобство аннотаций (например, @EnableEntityDefinedRegions) все еще можно использовать,Я опубликую это решение в SGF-747 .

. Я вижу, что вы указали атрибут clientRegionShortcut в аннотации @EnableCachingDefinedRegions, но объявили ваше приложение @PeerCacheApplication.Хотя в этом нет никакого вреда, атрибут clientRegionShortcut в этом случае бесполезен.Аналогично, атрибут serverRegionShortcut не будет иметь смысла, если вы используете приложение вместо @ClientCacheApplication;кое-что, что нужно иметь в виду.

Наконец, я хотел сообщить вам, что аннотация SDG @EnableStatistics не имеет эффекта, который вы, вероятно, думаете, что он делает.

В частности, SDG @EnableStatistics примечание касается включения "выборки" статистики Pivotal GemFire, как объяснено здесь , которое настраивается путем выполнения this , как также объяснено в аннотации SDG @EnableStatisticsJavadoc, а также ссылки в SDG Справочное руководство .

«Включение статистики», которое в конечном итоге должно произойти, заключается в установке в Регионе staticsEnabled свойство атрибута при настройке и создании региона (например, «blockIPCache»).

Это именно то, что аннотация @EnableExpiration теперь косвенно гарантирует, с исправлением в SGF-747 , без необходимости @EnableStatistics.

В любом случае, я надеюсь, что все это имеет смысл и помогает.

С уважением, Джон

...