Fast-start join timeout¶
What?¶
The fast-start join timeout feature enables Coherence to establish a new cluster more quickly. By default
in dev
mode, Coherence will wait 3 seconds before establishing a new cluster (if no existing cluster
is up and running). The prod
mode setting by default will wait 30 seconds.
Why?¶
Getting the cluster up and running faster makes iterative development easier, helping facilitate Test Driven Development (TDD). This option can help establish a cluster ready for running tests against in approximately 3 seconds (depending upon your machine) - remember this is a running cluster, Coherence is pretty quick starting when you reduce its join-timeout via the fast-start option.
Note
Newer versions of Coherence can use a small time of typically something 100ms, whilst earlier versions of Coherence can only accept a minimum fast-start time of 1000ms.
How? (when you don’t have your own Coherence override file)¶
If you don’t have a Coherence override file (typically called something like tangosol-coherence-override.xml
),
then you can simply use the builder API or one of the other mechanisms for configuring littlegrid,
see Controlling and configuring littlegrid
memberGroup = ClusterMemberGroupUtils.newBuilder()
.setStorageEnabledCount(1)
.setCacheConfiguration("simple-cache-config.xml")
.setFastStartJoinTimeoutMilliseconds(100) // Note: older versions of Coherence need 1000
.buildAndConfigureForStorageDisabledClient();
Without specifying your own Coherence override file, then littlegrid will use its own in-built override file
called littlegrid-fast-start-coherence-override.xml
, it looks like the below:
<coherence>
<cluster-config>
<multicast-listener>
<join-timeout-milliseconds system-property="littlegrid.join.timeout.milliseconds">1500</join-timeout-milliseconds>
</multicast-listener>
</cluster-config>
</coherence>
When littlegrid uses its own override file and when the fast-start option has been configured (via the Builder or configuration), then you should see the below warning - this is logged to let you know that littlegrid thinks it is controlling the time that Coherence waits before starting the cluster.
WARNING: Fast-start join timeout specified. Note: the fast-start Coherence override file will now be configured to be used
How? (if you have your own Coherence override file)¶
If you’re using your own Coherence override file, then in order for the littlegrid fast-start option to work,
you will need to include the join-timeout-milliseconds
XML element within your own override file - additionally
if you’d like to use your own system property name (e.g. jupiter.join.timeout.milliseconds), then please refer to
Controlling system property names used by littlegrid.
<coherence>
<cluster-config>
<multicast-listener>
<join-timeout-milliseconds system-property="jupiter.join.timeout.milliseconds">1500</join-timeout-milliseconds>
</multicast-listener>
</cluster-config>
</coherence>