You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Ignite TC Bot (Jira)" <ji...@apache.org> on 2021/06/23 05:20:00 UTC

[jira] [Commented] (IGNITE-14893) Bug in GridCacheWriteBehindStore Flusher thread lookup

    [ https://issues.apache.org/jira/browse/IGNITE-14893?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17367870#comment-17367870 ] 

Ignite TC Bot commented on IGNITE-14893:
----------------------------------------

{panel:title=Branch: [pull/9177/head] Base: [master] : No blockers found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
{panel:title=Branch: [pull/9177/head] Base: [master] : New Tests (2)|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}
{color:#00008b}Basic 1{color} [[tests 2|https://ci.ignite.apache.org/viewLog.html?buildId=6056209]]
* {color:#013220}IgniteBasicTestSuite: IgniteUtilsSelfTest.testHashToIndexDistributionAdvanced - PASSED{color}
* {color:#013220}IgniteBasicTestSuite: IgniteUtilsSelfTest.testHashToIndexDistribution - PASSED{color}

{panel}
[TeamCity *--&gt; Run :: All* Results|https://ci.ignite.apache.org/viewLog.html?buildId=6056270&amp;buildTypeId=IgniteTests24Java8_RunAll]

> Bug in GridCacheWriteBehindStore Flusher thread lookup
> ------------------------------------------------------
>
>                 Key: IGNITE-14893
>                 URL: https://issues.apache.org/jira/browse/IGNITE-14893
>             Project: Ignite
>          Issue Type: Bug
>          Components: cache
>    Affects Versions: 2.8, 2.7.5, 2.7.6, 2.9, 2.8.1, 2.10, 2.9.1
>            Reporter: Mike W
>            Assignee: Ilya Korol
>            Priority: Major
>          Time Spent: 50m
>  Remaining Estimate: 0h
>
> There's a bug in GridCacheWriteBehindStore in the flusher method.
> [https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/store/GridCacheWriteBehindStore.java#L674]
> The logic states there that if flush thread count is not a power of 2, then perform this math, which is not guaranteed to return a positive number.
> {code:java}
> idx = ((h = key.hashCode()) ^ (h >>> 16)) % flushThreadCnt
> {code}
> For example, if you pass this string as a key, it returns a negative number:
> *accb2e8ea33e4a89b4189463cacc3c4e*
> and then throws an array out of bounds exception when looking up the thread.
> https://lists.apache.org/list.html?dev@ignite.apache.org



--
This message was sent by Atlassian Jira
(v8.3.4#803005)