You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@polygene.apache.org by "Niclas Hedhman (JIRA)" <ji...@apache.org> on 2018/05/03 00:36:00 UTC
[jira] [Resolved] (POLYGENE-308) Possible corrupted composite
method invocation
[ https://issues.apache.org/jira/browse/POLYGENE-308?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Niclas Hedhman resolved POLYGENE-308.
-------------------------------------
Resolution: Fixed
Fix Version/s: 3.1.0
AtomicInstancePool is indeed not thread-safe, and it is a rather confusing interaction between the "first" in each of the methods, and that consumers are modifying the retrieved instances, which may happen prior the compareAndSet() operation a couple of lines later or maybe something else because it is really tricky to debug.
Now, instead of trying to make it thread-safe, I have simply removed the class and replaced the only use with a ConcurrentLinkedQueue (of JDK) instead, which I assume is approximately as fast as AtomicReference, but is thread-safe thanks to Doug Lea.
> Possible corrupted composite method invocation
> ----------------------------------------------
>
> Key: POLYGENE-308
> URL: https://issues.apache.org/jira/browse/POLYGENE-308
> Project: Polygene
> Issue Type: Bug
> Affects Versions: 2.0, 2.1, 3.0.0, 2.1.1
> Environment: macOs 10.13.4
> jdk 1.8.0_141
> Reporter: Tibor Mlynarik
> Assignee: Niclas Hedhman
> Priority: Major
> Fix For: 3.1.0
>
>
> AtomicInstancePool seems to have multi thread issue.
> Here is test that throws NPE after some time:
> https://gist.github.com/tbml/5c11317fb06a7cfc0617b203fcf75cf5
>
>
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)