[
https://issues.apache.org/jira/browse/IGNITE-12783?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17066732#comment-17066732
]
Ignite TC Bot commented on IGNITE-12783:
----------------------------------------
{panel:title=Branch: [pull/7564/head] Base: [master] : No blockers
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
[TeamCity *--> Run :: All*
Results|https://ci.ignite.apache.org/viewLog.html?buildId=5154108&buildTypeId=IgniteTests24Java8_RunAll]
> Partition state validation warnings erroneously logged when cache groups are
> used
> ---------------------------------------------------------------------------------
>
> Key: IGNITE-12783
> URL: https://issues.apache.org/jira/browse/IGNITE-12783
> Project: Ignite
> Issue Type: Bug
> Affects Versions: 2.8
> Reporter: Vyacheslav Koptilin
> Assignee: Vyacheslav Koptilin
> Priority: Minor
> Fix For: 2.9
>
> Time Spent: 10m
> Remaining Estimate: 0h
>
> It seems that IGNITE-12206 does not cover all possible cases. For instance,
> the following cache configurations are still validated and therefore it may
> be the reason for erroneously warning.
> {code:java}
> String grpName = "test-group";
> CacheConfiguration<Object, Object> cfg1 = new CacheConfiguration<>("cache-1")
> .setBackups(1)
> .setGroupName(grpName);
> CacheConfiguration<Object, Object> cfg2 = new CacheConfiguration<>("cache-2")
> .setBackups(1)
> .setExpiryPolicyFactory(AccessedExpiryPolicy.factoryOf(new
> Duration(TimeUnit.SECONDS, 1)))
> .setGroupName(grpName);
> {code}
> The following code takes into account only the first cache configuration for
> a particular cache group:
> {code:java|title=GridDhtPartitionsExchangeFuture#validatePartitionsState()}
> CacheGroupContext grpCtx = cctx.cache().cacheGroup(grpDesc.groupId());
> ...
> // Do not validate read or write through caches or caches with disabled
> rebalance
> // or ExpiryPolicy is set or validation is disabled.
> boolean eternalExpiryPolicy = grpCtx != null &&
> (grpCtx.config().getExpiryPolicyFactory() == null
> || grpCtx.config().getExpiryPolicyFactory().create() instanceof
> EternalExpiryPolicy);
>
> if (grpCtx == null
> ...
> || !eternalExpiryPolicy
> return null; // It means that validation should not be triggered.
> {code}
> The obvious way to fix the issue is to check all the configurations included
> in the cache group as follows:
> {code:java|title=GridDhtPartitionsExchangeFuture#validatePartitionsState()}
> CacheGroupContext grpCtx = cctx.cache().cacheGroup(grpDesc.groupId());
> ...
> boolean customExpiryPolicy = Optional.ofNullable(grpCtx)
> .map((v) -> v.caches())
> .orElseGet(() -> Collections.emptyList())
> .stream()
> .anyMatch(ctx -> ctx.expiry() != null && !(ctx.expiry() instanceof
> EternalExpiryPolicy));
> if (grpCtx == null
> ...
> || customExpityPolicy
> return null; // It means that validation should not be triggered.
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)