Product Documentation

FairCom ISAM for C

Previous Topic

Next Topic

SYSLOG Logging of Restore Point

A new SYSLOG class has been added: ctSYSLOGrstpnt. The associated configuration file entry is SYSLOG RESTORE_POINT.

There are four events associated with the Restore Point class:

  • ctSYSLOGrstpntCREATE  -  Create a Restore Point.
  • ctSYSLOGrstpntNOKEEP  -  Create a Restore Point, but KEEP_RESTORE_POINTS is 0.
  • ctSYSLOGrstpntRECOVERY  -  Automatic recovery with Restore Points.
  • ctSYSLOGrstpntTRANBAK  -  Transaction rollback (via utility program) with Restore Points.


SYSLOG Restore Point Record Format

The SYSLOG record associated with a Restore Point event starts with the common SYSLOG record format and is followed by a variable region. The variable region contains the SYSLOG Restore Point information. It is made up of the syslogRP structure defined in ctport.h:


#define ctRPbvr 24 /* base variable region */

typedef struct rstpntsyslog {

ULONG bitmap; /* syslog rstpnt bitmap */

LONG varlen; /* len of var region (may be > ctRPbvr) */

LONG8 rstpntsrn; /* Restore Point serial number */

LONG rstpntlog; /* Restore Point log# */

ULONG rstpntpos; /* Restore Point log position */

ULONG rstpnttim; /* Restore Point system time */

LONG rstpnttim2; /* system time extension */

LONG skplog; /* skip forward log number */

ULONG skppos; /* skip forward log position */

ULONG avail; /* available */

ULONG temptim; /* time event added to temp event file */

LONG temptim2; /* temptim extension */

UCOUNT rstpntver; /* Restore Point version */

UCOUNT rstpnttyp; /* Restore Point type */

TEXT var_region[ctRPbvr]; /* beginning of var region */

} syslogRP;

The var_region in the syslogRP structure is the base region for any additional variable-length data. The varlen member of syslogRP indicates how much variable data is in the record and may exceed ctRPbvr as defined above.

The most important component of this record for a ctSYSLOGrstpntRECOVERY event is the bitmap member that indicates the details of what happened during a recovery that involves Restore Points and/or rolling back to a Restore Point. ctport.h has the bitmap values. They are:


#define syslogRPname 0x000001 /* RP name in var region */

#define syslogRPminlogsync 0x000002 /* Deferred LOG SYNC feature on at crash */

#define syslogRPrec_to_rstpnt 0x000004 /* RECOVER_TO_RESTORE_POINT on */

#define syslogRPstart_rolbak 0x000008 /* rollback attempted */

#define syslogRPpndg_rolbak 0x000010 /* rollback to Restore Point pending */

#define syslogRPno_rstpnt 0x000020 /* NO Restore Points */

#define syslogRPno_rolbak_sup 0x000040 /* rollback not supported */

#define syslogRPno_tran_undo 0x000080 /* may be trans not undone */

#define syslogRProlbak_err 0x000100 /* rollback error */

#define syslogRPskipto_err 0x000200 /* error inserting skipto info */

#define syslogRPdef_not_rstpnt 0x000400 /* RECOVER_TO_... NO by default */

#define syslogRPskip_pndg 0x000800 /* skip pending rollback */

#define syslogRPno_tran_to_undo 0x001000 /* no trans to undo, skip rolbak */

#define syslogRProlbak_rstpnt 0x002000 /* rollback to Restore Point */

#define syslogRPno_fnd_rstpnt 0x004000 /* did not find Restore Point */

#define syslogRPskip_pndg_sync 0x008000 /* skip pending rollback && MLS */

#define syslogRPpndg_rolbak_sync 0x10000 /* rollback to Restore Point pending && MLS*/

#define syslogRProlbak_not_rqst 0x020000 /* rollback to Restore Point not requested */

#define syslogRPavailable 0x040000 /* available for use */

/*

** final system state indicators (MLS stands for Deferred/Minimum LOG SYNC feature)

*/

#define syslogRP_FSrolbak 0x0080000 /* successful rollback to Restore Point */

#define syslogRP_FSno_rolbak_OK 0x0100000 /* no rollback to Restore Point. no MLS. */

#define syslogRP_FSrolbak_err 0x0200000 /* rollback error */

#define syslogRP_FSno_rolbak_MLS 0x400000 /* no rollback to Restore Point, but MLS */

#define syslogRP_FSrolbak_NRP 0x0800000 /* rollback did not find Restore Point */

#define syslogRP_FSrolbak_chg 0x1000000 /* rollback NORP. try explicit **

** RECOVER_TO_RESTORE_POINT NO */

#define syslogRP_FSrolbak_chg2 0x2000000 /* rollback NORB. try explicit **

** RECOVER_TO_RESTORE_POINT NO **

** or YES */

#define syslogRP_FSrolbak_err2 0x4000000 /* rollback error on skipto upd */

The final system state indicators, of which only one should be defined for each recovery event, indicate the state of the server after recovery. In the case of an error, the error code will be in the common SYSLOG record header. The ctalog utility section provides more expansive descriptions and the significance of each bitmap value. The final system state indicators provide an overview of the "health" of the server and its data files.

TOCIndex