[sakai-core-team] [Building Sakai] Java 8
Kirschner, Beth
bkirschn at umich.edu
Tue Mar 24 05:25:31 PDT 2015
I had the same thoughts about ConcurrentOrderedMap - I could test and submit a PR that removes this class if Aaron is amenable.
- Beth
On Mar 24, 2015, at 8:04 AM, Matthew Buckett <matthew.buckett at it.ox.ac.uk> wrote:
> On 24 March 2015 at 11:39, Matthew Buckett <matthew.buckett at it.ox.ac.uk> wrote:
>> I couldn't see any references to ConcurrentOrderedMap in the current
>> Sakai codebase. The bug with EntityBroker tests failing should be
>> fixed by:
>>
>> https://github.com/azeckoski/reflectutils/commit/4b33c37e8e29f3a260817d9218a5d32e145377aa
>>
>> which was a problem with the assumption that the superclass would call
>> put() when putAll() was called.
>>
>> I'd just drop ConcurrentOrderedMap from reflectutils so that people
>> don't start using it in the future.
>
> Looking a little ConcurrentOrderedMap has a few issues:
> - It loses the performance characteristics of ConcurrentHashMap as it
> has an internal Vector which limits it's concurrency.
> - #putIfAbsent(K, V) isn't thread safe. It calls containsKey and then
> put, but doesn't do it atomically so it's not deterministic.
> - #remove(key, value) isn't thread safe. It removes the entry from the
> ConcurrentHashMap and then removes it from the internal Vector without
> any locking (another thread could be adding in between this).
>
> So I'd be even more incline to remove it as it's not really a good
> implementation of the API and seems like it was just created for
> completeness.
>
> --
> Matthew Buckett, VLE Developer, IT Services, University of Oxford
> _______________________________________________
> sakai-core-team mailing list
> sakai-core-team at collab.sakaiproject.org
> http://collab.sakaiproject.org/mailman/listinfo/sakai-core-team
More information about the sakai-core-team
mailing list