From: Stephen D. <sd...@us...> - 2005-10-21 05:25:51
|
Update of /cvsroot/naviserver/naviserver/nsdb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32050/nsdb Modified Files: db.h nsdb.c dbtcl.c Log Message: * nsd/nsd.h: * nsd/tclinit.c (Ns_TclTraceCreate): Run CREATE traces as they are registered in order to make Tcl comamnds registered by binary module available to the boot script and Tcl module files. * nsd/init.tcl: Rename use of depraciated api. * nsdb/db.h: * nsdb/nsdb.c: * nsdb/dbtcl.c: Fix bug where Ns_TclRegisterTrace was being called after server startup. * tests/test.nscfg: * tests/ns_accesslog.test: Add stub tests for the nslog module. Index: db.h =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsdb/db.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** db.h 12 Jul 2005 07:31:40 -0000 1.2 --- db.h 21 Oct 2005 05:25:36 -0000 1.3 *************** *** 35,39 **** extern void NsDbInitPools(void); extern void NsDbInitServer(char *server); ! extern Ns_TclTraceProc NsDbAddCmds; extern void NsDbClose(Ns_DbHandle *); extern void NsDbDisconnect(Ns_DbHandle *); --- 35,39 ---- extern void NsDbInitPools(void); extern void NsDbInitServer(char *server); ! extern Ns_TclTraceProc NsDbAddCmds, NsDbReleaseHandles; extern void NsDbClose(Ns_DbHandle *); extern void NsDbDisconnect(Ns_DbHandle *); Index: nsdb.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsdb/nsdb.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** nsdb.c 12 Jul 2005 07:31:40 -0000 1.3 --- nsdb.c 21 Oct 2005 05:25:36 -0000 1.4 *************** *** 49,53 **** * * Results: ! * NS_OK. * * Side effects: --- 49,53 ---- * * Results: ! * NS_OK or NS_ERROR. * * Side effects: *************** *** 67,71 **** } NsDbInitServer(server); ! return Ns_TclRegisterTrace(server, NsDbAddCmds, server, ! NS_TCL_TRACE_CREATE); } --- 67,77 ---- } NsDbInitServer(server); ! if (Ns_TclRegisterTrace(server, NsDbAddCmds, server, ! NS_TCL_TRACE_CREATE) != NS_OK ! || Ns_TclRegisterTrace(server, NsDbReleaseHandles, NULL, ! NS_TCL_TRACE_DEALLOCATE) != NS_OK) { ! return NS_ERROR; ! } ! ! return NS_OK; } Index: dbtcl.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsdb/dbtcl.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** dbtcl.c 12 Jul 2005 07:31:40 -0000 1.3 --- dbtcl.c 21 Oct 2005 05:25:36 -0000 1.4 *************** *** 60,64 **** static Tcl_CmdProc DbCmd, QuoteListToListCmd, GetCsvCmd, DbErrorCodeCmd, DbErrorMsgCmd, GetCsvCmd, DbConfigPathCmd, PoolDescriptionCmd; ! static Ns_TclTraceProc ReleaseDbs; static char *datakey = "nsdb:data"; --- 60,68 ---- static Tcl_CmdProc DbCmd, QuoteListToListCmd, GetCsvCmd, DbErrorCodeCmd, DbErrorMsgCmd, GetCsvCmd, DbConfigPathCmd, PoolDescriptionCmd; ! ! /* ! * Local variables defined in this file. ! */ ! static char *datakey = "nsdb:data"; *************** *** 122,126 **** Tcl_InitHashTable(&idataPtr->dbs, TCL_STRING_KEYS); Tcl_SetAssocData(interp, datakey, FreeData, idataPtr); - Ns_TclRegisterTrace(server, ReleaseDbs, NULL, NS_TCL_TRACE_DEALLOCATE); Tcl_CreateCommand(interp, "ns_db", DbCmd, idataPtr, NULL); --- 126,129 ---- *************** *** 139,142 **** --- 142,185 ---- /* *---------------------------------------------------------------------- + * NsDbReleaseHandles -- + * + * Release any database handles still held when an interp is + * deallocated. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + + int + NsDbReleaseHandles(Tcl_Interp *interp, void *arg) + { + Ns_DbHandle *handlePtr; + Tcl_HashEntry *hPtr; + Tcl_HashSearch search; + InterpData *idataPtr; + + idataPtr = Tcl_GetAssocData(interp, datakey, NULL); + if (idataPtr != NULL) { + hPtr = Tcl_FirstHashEntry(&idataPtr->dbs, &search); + while (hPtr != NULL) { + handlePtr = Tcl_GetHashValue(hPtr); + Ns_DbPoolPutHandle(handlePtr); + hPtr = Tcl_NextHashEntry(&search); + } + Tcl_DeleteHashTable(&idataPtr->dbs); + Tcl_InitHashTable(&idataPtr->dbs, TCL_STRING_KEYS); + } + + return TCL_OK; + } + + + /* + *---------------------------------------------------------------------- * * DbCmd -- *************** *** 1044,1084 **** ns_free(idataPtr); } - - - /* - *---------------------------------------------------------------------- - * ReleaseDbs -- - * - * Release any database handles still held. - * - * Results: - * None. - * - * Side effects: - * None. - * - *---------------------------------------------------------------------- - */ - - static int - ReleaseDbs(Tcl_Interp *interp, void *arg) - { - Ns_DbHandle *handlePtr; - Tcl_HashEntry *hPtr; - Tcl_HashSearch search; - InterpData *idataPtr; - - idataPtr = Tcl_GetAssocData(interp, datakey, NULL); - if (idataPtr != NULL) { - hPtr = Tcl_FirstHashEntry(&idataPtr->dbs, &search); - while (hPtr != NULL) { - handlePtr = Tcl_GetHashValue(hPtr); - Ns_DbPoolPutHandle(handlePtr); - hPtr = Tcl_NextHashEntry(&search); - } - Tcl_DeleteHashTable(&idataPtr->dbs); - Tcl_InitHashTable(&idataPtr->dbs, TCL_STRING_KEYS); - } - - return TCL_OK; - } --- 1087,1088 ---- |