Document request-scoped MySQL cleanup
This commit is contained in:
@@ -3,6 +3,10 @@
|
||||
#include <stdlib.h>
|
||||
#include "mysql-connector.h"
|
||||
|
||||
// MySQL handles are request-scoped framework resources. User code may call
|
||||
// mysql_disconnect() to close early, but leaked/exception-skipped handles are
|
||||
// still closed by cleanup_mysql_connections() at request end. Handles must not
|
||||
// be cached across requests or stored in globals/sessions.
|
||||
static void mysql_register_request_connection(MySQL* db)
|
||||
{
|
||||
if(!context || !db)
|
||||
|
||||
@@ -33,8 +33,10 @@ struct MySQL {
|
||||
DValue query(String q, StringMap params);
|
||||
DValue get_pending_result();
|
||||
|
||||
// Unregisters from the request's connection tracking, so stack-allocated
|
||||
// instances cannot leave dangling pointers behind for request cleanup.
|
||||
// Unregisters from request connection tracking, so stack-allocated instances
|
||||
// cannot leave dangling pointers behind for request cleanup. Heap handles
|
||||
// returned by mysql_connect() are also request-owned and auto-closed at the
|
||||
// end of the request if user code does not call mysql_disconnect() first.
|
||||
~MySQL() { disconnect(); }
|
||||
|
||||
};
|
||||
|
||||
+3
-1
@@ -799,7 +799,9 @@ public:
|
||||
|
||||
#ifdef UCE_WASM_HOST_CONNECTORS
|
||||
// Host-owned resource handle table (§3.1): connections opened by the guest
|
||||
// live here and are closed when the workspace drops at request end.
|
||||
// live here and are closed when the workspace drops at request end. This is
|
||||
// the wasm-side enforcement of request-scoped DB lifecycle; app code should
|
||||
// never cache these opaque handles across requests.
|
||||
std::vector<SQLite*> sqlite_handles;
|
||||
std::vector<MySQL*> mysql_handles;
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user