Quite a big maintenance release with lots of improvements concerning our new recovery.

Available to customers only. Want to become a customer?

Send me a quote

Issues with the new recovery

156968: New recovery: call refreshXAConnection when errors during recovery

Improved handling of erroneous connections for recovery: in some configurations the connection can be broken, and needsRefresh does not seem to detect this - resulting in repeated recovery errors on each scan. We now refresh the connection automatically after any recovery error.

155758: Recovery: refine to better deal with heuristics

Heuristic log entries are now automatically discarded when all participant entries are either terminated or heuristic. Upon discarding, we generate an event to allow for monitoring in external tools.

155987: Recovery: improve termination for parent/subtransaction

Improved the housekeeping of the log for parent/subtransaction situations.

155986: Recovery: improve getCommittingParticipants() for sub transactions

Subtransactions could be pending in the INDOUBT state while the parent transaction was logged as COMMITTING. The only correct recovery for the sub transaction is to commit, so getCommittingParticipants() should return the participants of the subtx.

156390: Remove option: automatic resource registration / TemporaryXATransactionalResource

This exotic optional feature was not safe with the new recovery and also not compatible with the LogCloud.

156249: Recovery: include name of XAResource

We now use the uniqueResourceName of each resource to improve the housekeeping of pending log records.

155974: Subtransaction recovery can rollback when parent transaction is committing

Fixed an issue where sub transaction rollback was possible during recovery, when the parent did commit.

155982: Logging of sub transactions with new recovery does not include superiorCoordinatorId

Logging for sub transactions was incomplete and did not include the parent transaction's id. This is now fixed.

156956: Allow presumed abort of IN_DOUBT subtransaction if its parent is HEUR_HAZARD or HEUR_MIXED after ABORTING.

Improved recovery for subtransactions with problematic parent transactions.

156967: Presumed abort should work for log entries in ABORTING state

Pending log entries in the ABORTING state will now also be cleaned up during recovery.

156924: Ignore non-recoverable states in checkpoint

Non-recoverable states like ABORTING (created during recovery) don't have to be logged because they are reproducible on the next recovery scan. We now avoid writing such entries.

156943: Recovery with commit replay: also return heuristic entries where wasCommitted = true

We now also correctly recover and commit IN_DOUBT participant entries when the overall outcome is some form of heuristic.

155797: Race conditions: presumed abort versus OLTP commit - lacking synchronisation

We found and fixed a race condition where synchronisation was lacking.

156812: Generate event for pending COMMITTING/ABORTING log entries so the resource can be added to the config if needed

For operational monitoring, we now generate a warning event when a resource may have been removed from the configuration while it still had pending transactions in the recovery logs.

Improvements of the LogCloud

156391: LogCloud: also register Hazelcast resource

You can now also use Hazelcast with the LogCLoud.

156617: LogCloud: support xaPropertyNamesToHide

Sensitive connector properties are now encrypted over the wire and on disk.

Hazelcast is now also supported as a LogCloud resource.

Other

156015: Added new config property with max wait timeout during shutdown in no-force mode

The new property com.atomikos.icatch.default_max_wait_time_on_shutdown allows configuring the max number if milliseconds that shutdown will wait when in no-force mode.

156355: Example with Hibernate 5

Added a new example with Hibernate 5.

156798: Timeout with marked abort: log warning to explain reason of NO vote

A timeout of an active transaction will add a RollbackOnlyParticipant to make prepare fail. However, later on in the logs this shows up as a NO vote cryptic error that people didn't understand. This has now been improved.

155988: Race condition between recovery / presumed abort and OLTP commit: improve error message

When recovery interleaved with application-level commit attempts, sometimes the following cryptic message would be in the logs:
javax.transaction.RollbackException: Error in committing: Existing entry: ABORTING incompatible with new entry: COMMITTING - recovery will clean up in the background

We've changed this to point out that intermediate recovery is responsible for this situation.

156800: Allow OLTP state transitions from ABANDONED to TERMINATED and the other way around

We've loosened state transitions a bit to avoid needless warnings in the logs.

Available to customers only. Want to become a customer?

Send me a quote

Contact Us

Atomikos Corporate Headquarters
Hoveniersstraat, 39/1, 2800
Mechelen, Belgium

E info@atomikos.com
E sales@atomikos.com
T +3215613055

Subscribe to our newsletter

Never miss an update

Copyright 2017 Atomikos BVBA