Hi Igniters!

I'm revising org.jsr166 package contents now. Ideally, we should get rid of
it completely. As far as I see some classes can be transparently replaced
by Java8 equivalents, some other can reuse standard Java8 versions, and
some can't be removed at all. I'd like to discuss this.

1. LongAdder8, ThreadLocalAdder8, ConcurrentHashMap8 [1], [2]:
These can be simply replaced by their j.u.c equivalents.

2. ConcurrentLinkedHashMap [3]:
Originally this was a mix of two JSR166 classes: ConcurrentHashMapV8 and
ConcurrentHashMap, as they looked like at some time between late 2011 and
mid-2012, but before CHMV8 was merged into CHM in August, 2012. Then
ConcurrentLinkedDeque8 was added to stitch the structure with a list. Later
there were made some significant performance improvements to Segment
(partial hash table) inner class, BTW Segments were removed from CHM
implementation upon CHMV8-to-CHM merge. Taking this story into account I'd
like to leave this extremely customized class unchanged.

3. ConcurrentLinkedDeque8 [4]:
This one is very similar to standard ConcurrentLinkedDeque, but has a
couple of differences. First, LongAdder was attached to provide fast size()
method. Second, queue Node was exposed as public declaration. Latter
feature is used extensively in EvictionPolicy implementations. As for me,
the only benefit of this is CAS logic in unlinkx() method. And this logic
relates to concrete data item being stored in a queue, but not to queue
itself. So one can hide Node back and add AtomicBoolean (as one of the
possible options) to queue item along with EvictableEntry. Ultimately, we
can extend standard ConcurrentLinkedDeque by adding faster size() and get
rid of unlinkx() and other ***x() stuff. Yet another consumer of unlinkx()
method is MemoryEventStorageSpi, one can fix it the same way as eviction
policies, however only logging is affected there, so I'm unsure if we need
to fix it at all.

I'll appreciate your thoughts on the subject.


[1] https://issues.apache.org/jira/browse/IGNITE-7518

[2] https://issues.apache.org/jira/browse/IGNITE-7513

[3] https://issues.apache.org/jira/browse/IGNITE-7516

[4] https://issues.apache.org/jira/browse/IGNITE-7517


--
Best regards,
  Andrey Kuznetsov.

Reply via email to