The following sections outline Oracle Coherence Incubator changes in reverse chronological order.
Issue #118: Introduce the JMX-based diagnostics for Subcriptions. This includes the ability to display the internal state of a Subscription.
Issue #121: Resolved potential message leaks when publishing to disabled subscriptions (subscriptions won't recieve messages, but messages may be left unacknowledged)
Issue #108: Resolved ability to distribute and replicate Cache Entry expiry timeouts between clusters.
This includes introducing the ability to customize expiry when during conflict resolution.
Issue #110: Introduce the ability to control batch-size, inter batch-distribution-delay and restart-delay using JMX at runtime.
Issue #112: Replace the "message out of order" log when using Coherence-based event distribution implementations with something more apppropriate. This log only indicates that a recovery is occuring (nothing bad!), because it's redistributing messages to an event channel that previously failed for some reason.
Issue #115: Refactored the "drain" functionality for Coherence-based event distribution implementations so that they use the configured batches and delays.
Issue #120: Introduced the ability to "propagate" a copy of a NamedCache over an associated EventChannel using a JMX operation. This allows remote clusters to be "rebuilt" from another cluster or alternatively allows an EventChannel implementation to receive a entire copy of a NamedCache.
Issue #127: Corrected expiry-time calculation to ensure that "loaded" BinaryEntries can be sent over an EventChannel without loss of fidelity. This allows LocalCacheEventChannels to correctly update Entries with the required expiry time.
Issue #36: Fixed an issue where keys of replicated entries were being deserialized on the receiving cluster during replication.
Issue #64: Changed the coherence-web dependency to be "provided".
Issue #120: Introduced the ability to "propagate" a copy of a NamedCache over an associated EventChannel using a JMX operation. This allows remote clusters to be "rebuilt" from another cluster or alternatively allows an EventChannel implementation to receive a entire copy of a NamedCache.
Issue #81: Upgraded to use Oracle Tools 1.2.2
Issue #86: Upgraded to use Oracle Coherence 3.7.1.11
Issue #92: Upgraded Maven Plugins.
Issue #85: Improved Annotation-based FiniteStateMachine Models to allow for @Transitions defined by super-classes.
Issue #87: Introduced the ability to control whether a NonBlockingFiniteStateMachine autostarts (aka: transitions) to its initial state.
Issue #128: Removed the dependency on CGLib from the pom.xml file as the code does not actually have a dependency on CGLib.
Issue #83: Refactored AbstractEventChannelController internals to use a Non-Blocking Finite State Machine, instead of Java Synchronization and an ExecutorService.
Apart from simplifying the implementation, this enhancement permits the use of "coalescing events", which can help reduce CPU when message subscriptions are updated, causing numerous events triggering extraneous distribution requests.
Issue #93: Introduced new DELAYED state for the AbstractEventChannelController, together with a new "polling-delay" configuration for Event Channels. This allows separate control of polling and inter-batch delays.
Upgraded to use Oracle Tools 1.1.0
Issue #72: Upgraded to use Oracle Coherence 3.7.1.10
Issue #74: Upgraded to use Oracle Tools 1.1.0 including a). refactoring the use of deprecated classes and b). removing the requirement for JMX enabled Coherence cluster members.
Issue #71: Introduce the ability to filter events prior to queuing them for distribution.
Introduced EventChannelEventFilter interface that can be used to filter Events. Implemented filtering for InterClusterEventChannels in the AbstractInterClusterEventChannelBuilder class.
Issue #71: Resolves NullPointerException that may occur when attempting to use EntryEventOptimizingTransformers with Hub & Spoke or Centralized replication topologies.
Issue #65: Resolved issue where attempting to remove non-existing or expired entries would not be replicated.
Issue #71: Introduce the ability to filter events prior to queuing them for distribution.
Refactored PublishingCacheStore to consult the EventChannelEventFilters for each configured EventChannel(Builder) priority to distributing an Event.
Issue #73: Resolves NullPointerException that may occur when attempting to use EntryEventOptimizingTransformers with Hub & Spoke or Centralized replication topologies.
Issue #33: Upgraded to use JUnit 4.10 and Hamcrest 1.3
Issue #42: Upgraded to use Oracle Tools 1.0.0
Issue #18: Resolved incorrect
PortableObject.writeExternal(...) implementation for the
StaticFactoryClassSchemeBasedParameterizedBuilder
class.
Issue #29: Improved LifecycleAwareEvent
information when using a NonBlockingFiniteStateMachine
.
This is a breaking change for the LifecycleAwareEvent
interface. However
as we are only using this interface only with in an inner class of
NonBlockingFiniteStateMachine
, it does not break any public interfaces.
Issue #35: Corrected use of printf
in the Runner
class that may prevent examples running on some platforms
(like Windows).
Issue #38: Enhanced ConfigurableCacheFactory Tests.
Issue #34: Added missing pof-type
declaration for the CommandBatch
class.
Issue #48: Refactored calls to CacheFactory.ensureCluster() that prevent redeployment in a Container.
Issue #28: Migrated Functional Test from internal Oracle Testing Framework. These are contained in the new coherence-messagingpattern-tests module.
Issue #37: Changed JMS Dependency to one that includes a jar artifact.
Issue #19: Fixed Active-Active Push Replication Example - now correctly terminates.
Issue #30: Removed hardcoded logging path from Push Replication tests.
Refactored all of the modules into a single source tree, with separate folders for each module and their associated examples.
Restructured all of the modules follow standard Apache Maven conventions.
Completely re-wrote the build system to use Apache Maven instead of Apache Ant.
Ratified and released all of the modules under a standard open source license (CDDL). This included changing all file headers to use standard CDDL headers. Templates for these headers are available in the "documents" folder.
Formalized the mechanism and process for accepting contributions.
Completely migrated the existing "closed" Atlassian Confluence-based
documentation to be part of the source tree, thus enabling contributions.
This included re-writing and updating parts of the documentation for this
release. The documentation can be found in the coherence-incubator-site
module.
Rationalized all modules to use a single Coherence Incubator version number instead of individual version numbers.
Migrated the source repository to GitHub.
Migrated the Issue Tracking to java.net.
Introduced "uber" jar generation support to produce the entire Oracle Coherence Incubator in a single jar.
Introduced (extracted) individual "example" modules for the patterns instead of using a single large example module.
Introduced a dependency on the Oracle Tools project for tests. Re-wrote all process-based tests to use this package. This work was originally part of the Oracle Coherence Incubator but is now a separate project. This work now includes signficiant contributions from the "Grid Man" project (developed by Jonathan Knight).
Upgraded projects to use Oracle Coherence 3.7.1.7
Migrated binary distribution mechanism to use maven.java.net instead of download links.
Resolved potential and unnecessary hi-cpu usage when using Coherence-based Messaging distributors.
Refactored tests to use Oracle Tools.
Introduced the new ParallelLocalCacheEventChannel
providing the ability
to update local caches in parallel across a cluster.
Refactored tests to use Oracle Tools.
Resolved issue were calling NamedCache.getAll(...) on a cache that is being used for Push Replication would throw an UnsupportedOperationException.
Added new tests for the new ParallelLocalCacheEventChannel
.