Product Documentation

c-treeACE V10.0 Release Notes

Previous Topic

Next Topic

Corrected Hangs with Data Filter Callbacks

When a client causes the c-treeACE process to load a data record filter callback DLL, if the client loses its connection to the server without first disconnecting, the server thread for that connection might hang when it closes the files for that connection if the data record filter callback DLL is used in an ISAM context and the data record filter callback DLL closes a file in its unload function. When this situation occurs, the symptoms are:

  1. clients hang when attempting to connect to the server, and
  2. the message "tflstt loop alert" appears in CTSTATUS.FCS after about 90 minutes.

When c-treeACE closes the data and index files that are in use by a connection, it closes any ISAM contexts that have been established for the files. If a data filter is in effect for an ISAM context, the filter is freed. If the data filter uses a data filter callback DLL, the freeing of the data filter causes the filter DLL's unload function to be called. If the filter DLL's unload function closes the file that is in the process of being closed, the thread can deadlock itself by waiting for a temporary file state to clear (which will never happen because it is the thread itself that set that state).

Now, when an ISAM context is being closed and the data filter resources for that context are being freed , we check if this is happening while closing a file. If so, we defer the freeing of the data filter resources until the file close completes.

TOCIndex