These are chat archives for atomix/atomix

20th
Dec 2017
Jordan Halterman
@kuujo
Dec 20 2017 01:17

That API has both:
unicast for asynchronous direct messages
broadcast for broadcasting to all subscribers
send for synchronous direct (request-reply)

The change in that PR is just to allow multiple subscribers on a single node. The previous implementation only allowed one per-topic per-node. This API is really modeled on the Vert.x event bus to which I was once upon a time a committer (still am?)

So, the two messaging APIs actually exposed to users are the ClusterMessagingService which generally requires node information (a NodeId to which to send a message) and the ClusterEventingService which replicates topics/subscribers. Both support those three messaging paradigms.

FYI I'll most likely be pushing a beta release this week. Thereafter, the review process for Atomix 2.1 will be reinstituted, and API changes will be kept to a minimum. In January will be some release candidates and perhaps the final release.
Johno Crawford
@johnou
Dec 20 2017 21:05
@kuujo be careful of computeIfAbsent in hot paths, better through put to perform an optimistic get first
(only fixed in JDK9) JDK-8184907 : ConcurrentHashMap.computeIfAbsent acquires lock even when key present http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8184907
Jordan Halterman
@kuujo
Dec 20 2017 22:23
Oh wow that's interesting
and surprising ugh
Maybe should hack together a wrapper that handles it and update all the concurrent maps