Product Documentation

V11.5 Release Notes

Previous Topic

Next Topic

Server crash due to orphaned cache page when out of disk space

Errors were occasionally seen in obscure situations where FairCom Server could not write an updated data cache page to a non-transaction-controlled c-tree data file when physically closing the file (for example if the data file was created with a zero extension size and the disk is full).

  1. The cache page could be written to the wrong file; or
  2. When an attempt to write the page was made (say by a background flush thread or CTFLUSH() call for all files), the write failed with an error that was considered fatal, causing FairCom Server to shut down with a "FAILED TRAN IO" error message in CTSTATUS.FCS.

The following example shows messages from CTSTATUS.FCS resulting from this problem. mark.dat is a non-transaction data file and cxd04.dat is a ctTRNLOG data file. Note the write error on mark.dat due to no disk space, and the write error on cxd04.dat due to an invalid file descriptor (because cxd04.dat was opened and then closed before the flush of the page was attempted):

Mon Nov 7 10:51:14 2016

- User# 00014 WRITE_ERR: mark.dat at 0:8000x sysiocod=112 bufsiz=32768 bytes written=0[0] ioLoc=0: 37

Mon Nov 7 10:51:18 2016

- User# 00014 FAILED IO: ctwrtbuf...: 37

Mon Nov 7 10:51:18 2016

- User# 00014 mark.dat: 37

Mon Nov 7 10:52:09 2016

- User# 00014 Error on close file. locale:11 sysiocod:0 uerr_cod: 37

Mon Nov 7 11:02:15 2016

- User# 00005 WRITE_ERR: cxd04.dat at ffffffff:ffffffffx sysiocod=6 bufsiz=32768 bytes written=0[0] ioLoc=0: 37

Mon Nov 7 11:02:25 2016

- User# 00005 FAILED TRAN IO: ctwrtbuf...: 37

Mon Nov 7 11:02:26 2016

- User# 00005 cxd04.dat: 37

The cache flushing logic has been modified to handle the situation properly and eliminate this problem. However, it is always advisable to ensure you have sufficient disk space for c-treeACE controlled data files and the system files (L*.FCS files, etc.) created by the c-treeACE Server process.

Note: By default, FairCom Server treats a write error on a transaction-controlled (ctTRNLOG) file as a fatal error and it immediately shuts down in this situation. As a result, the changes described here primarily affect non-ctTRNLOG data files. Also, an error writing an index node to disk when physically closing the index file was already properly handled.

TOCIndex