Merge pull request #188 from Arkshine/feature/mysql-rw-and-default-timeout
Establish a default timeout for MySQL connectivity
This commit is contained in:
		| @@ -1,19 +1,22 @@ | ||||
| ; Configuration file for AMX Mod X | ||||
| amxx_logs	addons/amxmodx/logs | ||||
| amxx_configsdir	addons/amxmodx/configs | ||||
| amxx_datadir	addons/amxmodx/data | ||||
| amxx_modules	addons/amxmodx/configs/modules.ini | ||||
| amxx_plugins	addons/amxmodx/configs/plugins.ini | ||||
| amxx_pluginsdir	addons/amxmodx/plugins | ||||
| amxx_modulesdir	addons/amxmodx/modules | ||||
| amxx_vault	addons/amxmodx/data/vault.ini | ||||
| amxx_logs       addons/amxmodx/logs | ||||
| amxx_configsdir addons/amxmodx/configs | ||||
| amxx_datadir    addons/amxmodx/data | ||||
| amxx_modules    addons/amxmodx/configs/modules.ini | ||||
| amxx_plugins    addons/amxmodx/configs/plugins.ini | ||||
| amxx_pluginsdir addons/amxmodx/plugins | ||||
| amxx_modulesdir addons/amxmodx/modules | ||||
| amxx_vault      addons/amxmodx/data/vault.ini | ||||
|  | ||||
| ; Logging mode | ||||
| ; 0 - no logging | ||||
| ; 1 - one logfile / day | ||||
| ; 2 - one logfile / map | ||||
| ; 3 - HL Logs | ||||
| amxx_logging	1 | ||||
| amxx_logging 1 | ||||
|  | ||||
| ; MySQL default timeout | ||||
| mysql_timeout 60 | ||||
|  | ||||
| ; Binary logging level | ||||
| ; add these up to get what you want | ||||
| @@ -24,10 +27,10 @@ amxx_logging	1 | ||||
| ; 8  - log all native params | ||||
| ; 16 - log internal function calls (only in debug mode) | ||||
| ; 32 - log line number accesses (only in debug mode) | ||||
| bin_logging	49 | ||||
| bin_logging 49 | ||||
|  | ||||
| ; Maximum binary log size, in megs | ||||
| max_binlog_size	20 | ||||
| max_binlog_size 20 | ||||
|  | ||||
| ; Plugin optimization flags - add these up to get what you want | ||||
| ; lowering these may stop crashes on very old CPUs | ||||
| @@ -36,4 +39,4 @@ max_binlog_size	20 | ||||
| ; 1 - float arithmetic | ||||
| ; 2 - float comparisons | ||||
| ; 4 - float rounding | ||||
| optimizer	7 | ||||
| optimizer 7 | ||||
|   | ||||
| @@ -6,9 +6,10 @@ | ||||
|  | ||||
| // *NOTE* amx_sql_type specifies the DEFAULT database type which admin.sma will use. | ||||
|  | ||||
| amx_sql_host	"127.0.0.1" | ||||
| amx_sql_user	"root" | ||||
| amx_sql_pass	"" | ||||
| amx_sql_db		"amx" | ||||
| amx_sql_table	"admins" | ||||
| amx_sql_type	"mysql" | ||||
| amx_sql_host    "127.0.0.1" | ||||
| amx_sql_user    "root" | ||||
| amx_sql_pass    "" | ||||
| amx_sql_db      "amx" | ||||
| amx_sql_table   "admins" | ||||
| amx_sql_type    "mysql" | ||||
| amx_sql_timeout "60" | ||||
|   | ||||
| @@ -52,11 +52,22 @@ IDatabase *MysqlDriver::_Connect(DatabaseInfo *info, int *errcode, char *error, | ||||
| 		return NULL; | ||||
| 	} | ||||
|  | ||||
| 	if (do_timeout && info->max_timeout) | ||||
| 	decltype(info->max_timeout) timeout = atoi(LOCALINFO("mysql_timeout")); | ||||
|  | ||||
| 	if (timeout <= 0) | ||||
| 	{ | ||||
| 		mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (const char *)&(info->max_timeout)); | ||||
| 		timeout = 60; | ||||
| 	} | ||||
|  | ||||
| 	if (do_timeout && info->max_timeout > 0) | ||||
| 	{ | ||||
| 		timeout = info->max_timeout; | ||||
| 	} | ||||
|  | ||||
| 	mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (const char *)&timeout); | ||||
| 	mysql_options(mysql, MYSQL_OPT_READ_TIMEOUT, (const char *)&timeout); | ||||
| 	mysql_options(mysql, MYSQL_OPT_WRITE_TIMEOUT, (const char *)&timeout); | ||||
|  | ||||
| 	/** Have MySQL automatically reconnect if it times out or loses connection. | ||||
| 	 * This will prevent "MySQL server has gone away" errors after a while. | ||||
| 	 */ | ||||
|   | ||||
| @@ -73,6 +73,7 @@ public plugin_init() | ||||
| 	register_cvar("amx_sql_pass", "", FCVAR_PROTECTED) | ||||
| 	register_cvar("amx_sql_db", "amx", FCVAR_PROTECTED) | ||||
| 	register_cvar("amx_sql_type", "mysql", FCVAR_PROTECTED) | ||||
| 	register_cvar("amx_sql_timeout", "60", FCVAR_PROTECTED) | ||||
|  | ||||
| 	register_concmd("amx_reloadadmins", "cmdReload", ADMIN_CFG) | ||||
| 	register_concmd("amx_addadmin", "addadminfn", ADMIN_RCON, "<playername|auth> <accessflags> [password] [authtype] - add specified player as an admin to users.ini") | ||||
|   | ||||
| @@ -393,6 +393,11 @@ stock Handle:SQL_MakeStdTuple(timeout = 0) | ||||
| 	get_cvar_string("amx_sql_pass", pass, 31); | ||||
| 	get_cvar_string("amx_sql_type", set_type, 11); | ||||
| 	get_cvar_string("amx_sql_db", db, 127); | ||||
|  | ||||
| 	if (timeout <= 0) | ||||
| 	{ | ||||
| 		timeout = get_cvar_num("amx_sql_timeout"); | ||||
| 	} | ||||
| 	 | ||||
| 	SQL_GetAffinity(get_type, 12); | ||||
| 	 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user