Product Documentation

V11.5 Update Guide

Previous Topic

Next Topic

Transaction log limit for replication and deferred indexing

Note: This is a Compatibility Change for c-treeACE V11.5 and later.

The Replication Agent and deferred index processing thread for TRNLOG files read transaction logs and inform the server of their minimum transaction log requirements respectively. In early V11 releases, c-treeACE retained all required logs indicated by these clients. In some cases, this resulted in the number of transaction logs to increase without limit, filling all drive space. A typical scenario is a Replication Agent taken offline without removing its minimum transaction log requirement from the server.

c-treeACE Server now limits by default the number of active transaction logs that are kept for Replication Agent and deferred index processing to 50. This default configuration is a deliberate trade off to avoid accumulating an unlimited number of active transaction logs and potentially running out of critical drive space.

The worst case scenario with this change is your Replication Agent or internal thread that is reading transaction logs can fail with error 96 when reconnecting and searching for a log that it expects present is no longer there. In this case, it will likely be necessary to resync your files through the Replication ReSync feature, a backup and restore, or manual file copy.

Two configuration options were introduced controlling these limits independently for these two features:

  • MAX_REPL_LOGS <max_logs> - Sets the maximum number of logs to be held specifically for replication.
  • MAX_DFRIDX_LOGS <max_logs> - Sets the maximum number of logs to be held specifically for the deferred indexing thread.

Use of either of these configuration settings does not impact your c-treeACE Servers’ ability to retain any necessary logs required for Automatic Recovery.

The more comprehensive KEEP_LOGS configuration keyword always overrides both MAX_DFRIDX_LOGS and MAX_REPL_LOGS configuration settings in either case.

When a new transaction log is created and one of these limits is in effect and the required number of logs exceeds the limit, c-treeACE logs one of the following messages to CTSTATUS.FCS and sets the minimum log requirement of the deferred index thread or Replication Agent to a larger value equal to the log limit:

- User# 00039 Deferred index log requirement (current=42, required=32) exceeds MAX_DFRIDX_LOGS limit. Setting lowlog to 33.

- User# 00038 Replication reader AGENT1 log requirement (current=43, required=32) exceeds MAX_REPL_LOGS limit. Setting lowlog to 33.

These keywords can be set at runtime by using the command-line tool ctadmn, option 10 (Change the specified configuration option) and setting the new value, like this:

10. Change the specified configuration option

Enter your choice (1-10), or 'q' to return to previous menu>> 10

Enter the configuration option and its value >> MAX_REPL_LOGS 75

Successfully changed the configuration option.

They can be set programmatically by calling the ctSETCFG() function. Examples:

/* Set maximum logs for deferred index thread to 100. */

ctSETCFG(setcfgCONFIG_OPTION, "MAX_DFRIDX_LOGS", "100");

/* Set maximum logs for replication agents to 0 (no limit). */

ctSETCFG(setcfgCONFIG_OPTION, "MAX_REPL_LOGS", "0");

TOCIndex