Revision
15982
Author
anthm
Date
2009-12-16 18:03:17 -0600 (Wed, 16 Dec 2009)

Log Message

add fsctl flush_db_handles to expire any unused db handles

Modified Paths

Diff

Modified: freeswitch/trunk/src/include/switch_core.h (15981 => 15982)


--- freeswitch/trunk/src/include/switch_core.h	2009-12-16 22:20:22 UTC (rev 15981)
+++ freeswitch/trunk/src/include/switch_core.h	2009-12-17 00:03:17 UTC (rev 15982)
@@ -2044,6 +2044,7 @@
 SWITCH_DECLARE(switch_status_t) switch_cache_db_persistant_execute_trans(switch_cache_db_handle_t *dbh, char *sql, uint32_t retries);
 SWITCH_DECLARE(void) switch_cache_db_detach(void);
 SWITCH_DECLARE(uint32_t) switch_core_debug_level(void);
+SWITCH_DECLARE(void) switch_cache_db_flush_handles(void);
 
 SWITCH_END_EXTERN_C
 #endif

Modified: freeswitch/trunk/src/include/switch_types.h (15981 => 15982)


--- freeswitch/trunk/src/include/switch_types.h	2009-12-16 22:20:22 UTC (rev 15981)
+++ freeswitch/trunk/src/include/switch_types.h	2009-12-17 00:03:17 UTC (rev 15982)
@@ -1431,7 +1431,8 @@
 	SCSC_SHUTDOWN_ASAP,
 	SCSC_CANCEL_SHUTDOWN,
 	SCSC_SEND_SIGHUP,
-	SCSC_DEBUG_LEVEL
+	SCSC_DEBUG_LEVEL,
+	SCSC_FLUSH_DB_HANDLES
 } switch_session_ctl_t;
 
 typedef enum {

Modified: freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c (15981 => 15982)


--- freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c	2009-12-16 22:20:22 UTC (rev 15981)
+++ freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c	2009-12-17 00:03:17 UTC (rev 15982)
@@ -1349,6 +1349,9 @@
 			arg = 1;
 			switch_core_session_ctl(SCSC_HUPALL, &arg);
 			stream->write_function(stream, "+OK\n");
+		} else if (!strcasecmp(argv[0], "flush_db_handles")) {
+			switch_core_session_ctl(SCSC_FLUSH_DB_HANDLES, NULL);
+			stream->write_function(stream, "+OK\n");
 		} else if (!strcasecmp(argv[0], "pause")) {
 			arg = 1;
 			switch_core_session_ctl(SCSC_PAUSE_INBOUND, &arg);
@@ -3944,6 +3947,7 @@
 	switch_console_set_complete("add fsctl shutdown restart elegant");
 	switch_console_set_complete("add fsctl sps");
  	switch_console_set_complete("add fsctl sync_clock");
+ 	switch_console_set_complete("add fsctl flush_db_handles");
 	switch_console_set_complete("add nat_map reinit");
 	switch_console_set_complete("add nat_map republish");
 	switch_console_set_complete("add nat_map status");

Modified: freeswitch/trunk/src/switch_core.c (15981 => 15982)


--- freeswitch/trunk/src/switch_core.c	2009-12-16 22:20:22 UTC (rev 15981)
+++ freeswitch/trunk/src/switch_core.c	2009-12-17 00:03:17 UTC (rev 15982)
@@ -1568,6 +1568,9 @@
 	}
 
 	switch (cmd) {
+	case SCSC_FLUSH_DB_HANDLES:
+		switch_cache_db_flush_handles();
+		break;
 	case SCSC_SEND_SIGHUP:
 		handle_SIGHUP(1);
 		break;

Modified: freeswitch/trunk/src/switch_core_sqldb.c (15981 => 15982)


--- freeswitch/trunk/src/switch_core_sqldb.c	2009-12-16 22:20:22 UTC (rev 15981)
+++ freeswitch/trunk/src/switch_core_sqldb.c	2009-12-17 00:03:17 UTC (rev 15982)
@@ -144,6 +144,13 @@
 }
 
 
+SWITCH_DECLARE(void) switch_cache_db_flush_handles(void)
+{
+	sql_close(switch_epoch_time_now(NULL) + SQL_CACHE_TIMEOUT + 1);
+}
+
+
+
 SWITCH_DECLARE(void) switch_cache_db_release_db_handle(switch_cache_db_handle_t **dbh)
 {
 	if (dbh && *dbh) {