Update to Groovy 2.3.2
Merge branch 'master' of github.com:reactor/reactor
Merge branch 'master' of github.com:reactor/reactor
Using a List for the internal cache caused multiple cache entries if the dispatcher was dispatching multiple tasks concurrently. Switching to a Set eliminates that possibility of returning a List with multiple entries of the same Registration.
[artifactory-release] Next development version
Fix #294: Thread-safe HashMap to avoid faulty Consumer notifications

When events are published on a multi-threaded dispatcher (e.g. workQueue or threadPoolExecutor)
by internal worker threads as
for example in the following configuration: `d.compose().map(..).consume(..)`
the end consumer sometimes gets duplicate notifications and sometimes no
notification at all.
The reason is most probably a non-threadsafe call to HashMap.put() which causes
same tailsThreadIndexLookup indexes being assigned to the different worker threads.
Merge pull request #344 from sshcherbakov/master

Fix #294: Thread-safe HashMap to avoid faulty Consumer notifications
Fix gradle version
#345 Adds the option to configure an NioEventLoopGroup on all Netty clients and servers (both TCP and UDP) and share resources among all started clients and servers.
#345 Add logic to shutdown methods to check before shutting down an EventLoopGroup. If it was passed in with the options, then don't shut it down because we assume it's being shared with other servers/clients. If not, shut down normally.
Introduce jsr166e backport library to use JDK 8's implementation of ConcurrentHashMap which doesn't use synchronization to address #294.
Remove Flush,
Add merge() / parallel() support : WIP
Improve perfs : WIP
Merge master
Fix parallel/merge and start improving perfs
Refactor Tuple to use concrete fields when possible, TupleN inherits the previous Tuple behavior and uses an array
Action now support a max inflight data traffic (prefetch/batchSize), commanding how much a given subscriber action can request and asking for the rest on enough (batchSize) next signals.
No more flush(), available() + subscription.request() is the official replacement to fit with Reactive Streams.
By default a Stream is optimized for unicasting (multicasting is still supported). However, Stream subscribe() is not thread-safe and needs to be handled accordingly.
More Dispatcher visibility