[
https://issues.apache.org/jira/browse/IGNITE-3809?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15469168#comment-15469168
]
Roman Shtykh commented on IGNITE-3809:
--------------------------------------
[~sboikov] Good simplification indeed. I reworked the code and change
`getAndIncrement` to `incrementAndGet` to return `next`.
Also I removed unit tests I added before -- I think they are not needed any
more, since `incrementAndGet()` takes care of max value.
> ArrayIndexOutOfBoundsException in GridUnsafeLru
> -----------------------------------------------
>
> Key: IGNITE-3809
> URL: https://issues.apache.org/jira/browse/IGNITE-3809
> Project: Ignite
> Issue Type: Bug
> Components: cache
> Affects Versions: 1.7
> Reporter: Valentin Kulichenko
> Assignee: Roman Shtykh
> Fix For: 1.8
>
>
> {{GridUnsafeLru.offer(..)}} method uses atomic integer as a counter. In case
> of integer overflow this method will throw {{ArrayIndexOutOfBoundsException}}.
> We should use {{abs}} to avoid this. For example, like this:
> {code}
> return lrus[U.safeAbs(addIdx.getAndIncrement()) % cnt].offer(part, addr,
> hash);
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)