diff --git a/modules/nsq/doc/nsq_admin.xml b/modules/nsq/doc/nsq_admin.xml index 6a1c90fcc95..57fede6af88 100644 --- a/modules/nsq/doc/nsq_admin.xml +++ b/modules/nsq/doc/nsq_admin.xml @@ -437,6 +437,25 @@ modparam("nsq", "db_url", "&defaultdb;") ... modparam("nsq", "presentity_table", "my_presentity_table") ... + + + + +
+ <varname>db_table_lock_type</varname>(int) + + Enable (=1) or disable (=0) the locks for table during a + transaction. + + + Default value is 1. + + + Set <varname>db_table_lock_type</varname> parameter + +... +modparam("nsq", "db_table_lock_type", 0) +...
diff --git a/modules/nsq/nsq_mod.c b/modules/nsq/nsq_mod.c index 3dd4b0820b6..61d6334d0bc 100644 --- a/modules/nsq/nsq_mod.c +++ b/modules/nsq/nsq_mod.c @@ -65,6 +65,7 @@ static param_export_t params[]= {"db_url", PARAM_STR, &nsq_db_url}, {"pua_mode", INT_PARAM, &dbn_pua_mode}, {"json_escape_char", PARAM_STR, &nsq_json_escape_str}, + {"db_table_lock_type", INT_PARAM, &db_table_lock_type}, { 0, 0, 0 } }; @@ -191,6 +192,10 @@ static int mod_init(void) return -1; } + if (db_table_lock_type != 1) { + db_table_lock = DB_LOCKING_NONE; + } + nsq_pa_dbf.close(nsq_pa_db); nsq_pa_db = NULL; } diff --git a/modules/nsq/nsq_mod.h b/modules/nsq/nsq_mod.h index cd904dd522f..d86ac368203 100644 --- a/modules/nsq/nsq_mod.h +++ b/modules/nsq/nsq_mod.h @@ -87,6 +87,8 @@ db1_con_t *nsq_pa_db = NULL; db_func_t nsq_pa_dbf; str nsq_presentity_table = str_init(PRESENTITY_TABLE); 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_child_init(int); diff --git a/modules/nsq/nsq_pua.c b/modules/nsq/nsq_pua.c index b5ff38f5fe8..badb8cff1f2 100644 --- a/modules/nsq/nsq_pua.c +++ b/modules/nsq/nsq_pua.c @@ -37,6 +37,7 @@ extern db1_con_t *nsq_pa_db; extern db_func_t nsq_pa_dbf; +extern db_locking_t db_table_lock; extern str nsq_presentity_table; 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(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"); goto error; }