This morning we had a customer report no one could log into the web app. They were getting the following error 12289 message:

General error IMC06 (0)--[Microsoft][ODBC Driver 17 for SQL Server]The connection is broken and recovery is not possible. The connection is marked by the client driver as unrecoverable. No attempt was made to restore the connection.
I restarted the web app and it started working fine. My guess is the connection that the web app processes had opened to the SQL server was broken at some point after those processes were started. Short of logging out the connection and logging back in (not possible as there's no code to do this and no way to trigger said nonexistent code), recovery was not possible without restarting the processes.

Generally I would describe that as a critical error. Under "normal" conditions I think an error like that would ultimately lead to some kind of "file not open" error (72) which is critical and results in the process closing.

Now my understanding if a web app process has a fatal error and shuts down, the web app administrator just starts up a new copy in it's place.

Except this case is not normal as we subclassed the cWebSession class to execute SQL scripts for all operations in place of the DDO based code. No DDO's means no table based code gets executed and no error 72 gets generated.

So I'm thinking for a web app we need to classify any 12289 as a critical error, log the details, show a user friendly "uh oh somethings gone wrong, try again" message in the browser, abort the program and let the web app administrator start up a new process. Does this sound reasonable?