Prechádzať zdrojové kódy

nsq: add db_table_lock_type

Emmanuel Schmidbauer 8 rokov pred
rodič
commit
17fadef312

+ 19 - 0
modules/nsq/doc/nsq_admin.xml

@@ -437,6 +437,25 @@ modparam("nsq", "db_url", "&defaultdb;")
 ...
 ...
 modparam("nsq", "presentity_table", "my_presentity_table")
 modparam("nsq", "presentity_table", "my_presentity_table")
 ...
 ...
+</programlisting>
+			</example>
+		</section>
+
+		<section>
+			<title><varname>db_table_lock_type</varname>(int)</title>
+			<para>
+			Enable (=1) or disable (=0) the locks for table during a
+			transaction.
+			</para>
+			<para>
+				<emphasis>Default value is <quote>1</quote>.</emphasis>
+			</para>
+			<example>
+				<title>Set <varname>db_table_lock_type</varname> parameter</title>
+<programlisting format="linespecific">
+...
+modparam("nsq", "db_table_lock_type", 0)
+...
 </programlisting>
 </programlisting>
 			</example>
 			</example>
 		</section>
 		</section>

+ 5 - 0
modules/nsq/nsq_mod.c

@@ -65,6 +65,7 @@ static param_export_t params[]=
 	{"db_url", PARAM_STR, &nsq_db_url},
 	{"db_url", PARAM_STR, &nsq_db_url},
 	{"pua_mode", INT_PARAM, &dbn_pua_mode},
 	{"pua_mode", INT_PARAM, &dbn_pua_mode},
 	{"json_escape_char", PARAM_STR, &nsq_json_escape_str},
 	{"json_escape_char", PARAM_STR, &nsq_json_escape_str},
+	{"db_table_lock_type", INT_PARAM, &db_table_lock_type},
 	{ 0, 0, 0 }
 	{ 0, 0, 0 }
 };
 };
 
 
@@ -191,6 +192,10 @@ static int mod_init(void)
 				return -1;
 				return -1;
 			}
 			}
 
 
+			if (db_table_lock_type != 1) {
+				db_table_lock = DB_LOCKING_NONE;
+			}
+
 			nsq_pa_dbf.close(nsq_pa_db);
 			nsq_pa_dbf.close(nsq_pa_db);
 			nsq_pa_db = NULL;
 			nsq_pa_db = NULL;
 		}
 		}

+ 2 - 0
modules/nsq/nsq_mod.h

@@ -87,6 +87,8 @@ db1_con_t *nsq_pa_db = NULL;
 db_func_t nsq_pa_dbf;
 db_func_t nsq_pa_dbf;
 str nsq_presentity_table = str_init(PRESENTITY_TABLE);
 str nsq_presentity_table = str_init(PRESENTITY_TABLE);
 str nsq_db_url = {NULL, 0};
 str nsq_db_url = {NULL, 0};
+int db_table_lock_type = 1;
+db_locking_t db_table_lock = DB_LOCKING_WRITE;
 
 
 static int mod_init(void);
 static int mod_init(void);
 static int mod_child_init(int);
 static int mod_child_init(int);

+ 2 - 1
modules/nsq/nsq_pua.c

@@ -37,6 +37,7 @@
 
 
 extern db1_con_t *nsq_pa_db;
 extern db1_con_t *nsq_pa_db;
 extern db_func_t nsq_pa_dbf;
 extern db_func_t nsq_pa_dbf;
+extern db_locking_t db_table_lock;
 extern str nsq_presentity_table;
 extern str nsq_presentity_table;
 extern str nsq_db_url;
 extern str nsq_db_url;
 
 
@@ -152,7 +153,7 @@ int nsq_pua_update_presentity(str* event, str* realm, str* user, str* etag, str*
 	}
 	}
 
 
 	if (nsq_pa_dbf.start_transaction) {
 	if (nsq_pa_dbf.start_transaction) {
-		if (nsq_pa_dbf.start_transaction(nsq_pa_db, DB_LOCKING_WRITE) < 0) {
+		if (nsq_pa_dbf.start_transaction(nsq_pa_db, db_table_lock) < 0) {
 			LM_ERR("in start_transaction\n");
 			LM_ERR("in start_transaction\n");
 			goto error;
 			goto error;
 		}
 		}