ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vladimir Ozerov (JIRA)" <j...@apache.org>
Subject [jira] [Created] (IGNITE-6736) Java 9: rework GridCacheMapEntry synchronization logic to avoid Unsafe.monitor* methods
Date Tue, 24 Oct 2017 13:58:01 GMT
Vladimir Ozerov created IGNITE-6736:
---------------------------------------

             Summary: Java 9: rework GridCacheMapEntry synchronization logic to avoid Unsafe.monitor*
methods
                 Key: IGNITE-6736
                 URL: https://issues.apache.org/jira/browse/IGNITE-6736
             Project: Ignite
          Issue Type: Task
      Security Level: Public (Viewable by anyone)
            Reporter: Vladimir Ozerov
             Fix For: 2.4


{{GridCacheMapEntry}} class rely on {{synchronized}} on itself heavily. In {{ATOMIC}} caches
we lock multiple entries at once using {{Unsafe.monitorEnter/Exit}} methods. Unfortunately
these methods were removed in Java 9. Recursion is not an option, as it would cause stack
overflow for {{putAll}} operations with multiple entries.

Possible fixes:
1) Rework {{synchronized}} to {{ReentrantLock}}. Easy, but may cause additional memory pressure.
2) Have different implementations for Java 8 ({{synchronzied}}) and Java 9 ({{ReentrantLock}})
- much more complex solution, because we will require separate module for Java 8 and Java
9.
3) Rework {{ATOMIC}} caches, so that {{putAll}} operation updates entries one-by-one. As a
side effect it will eliminate deadlocks.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message