[sr-dev] git:master:653b7343: p_usrloc: limit db writes of error count

Lucian Balaceanu lucian.balaceanu at 1and1.ro
Mon May 8 18:17:21 CEST 2017


Module: kamailio
Branch: master
Commit: 653b7343ebcca5f53f56bace94772a982bf0f887
URL: https://github.com/kamailio/kamailio/commit/653b7343ebcca5f53f56bace94772a982bf0f887

Author: Lucian Balaceanu <lucian.balaceanu at 1and1.ro>
Committer: Lucian Balaceanu <lucian.balaceanu at 1and1.ro>
Date: 2017-05-08T19:10:00+03:00

p_usrloc: limit db writes of error count

- when db_errors_treshold limit is reached kamailio
  should stop increasing the errors field so as not
  to load mysql with no use

---

Modified: src/modules/p_usrloc/ul_db.c

---

Diff:  https://github.com/kamailio/kamailio/commit/653b7343ebcca5f53f56bace94772a982bf0f887.diff
Patch: https://github.com/kamailio/kamailio/commit/653b7343ebcca5f53f56bace94772a982bf0f887.patch

---

diff --git a/src/modules/p_usrloc/ul_db.c b/src/modules/p_usrloc/ul_db.c
index a954259..cf1b940 100644
--- a/src/modules/p_usrloc/ul_db.c
+++ b/src/modules/p_usrloc/ul_db.c
@@ -162,26 +162,29 @@ int db_handle_error(ul_db_handle_t * handle, int no) {
 		LM_ERR("can't get db.\n");
 		return -1;
 	}
-	
-	if (sprintf(query, "UPDATE %.*s "
-				   "SET %.*s=%.*s+1 "
-				   "WHERE %.*s=%i "
-				   "AND %.*s=%i",
-				   reg_table.len, reg_table.s,
-				   error_col.len, error_col.s, error_col.len, error_col.s, 
-				   id_col.len, id_col.s, handle->id,
-		   		   num_col.len, num_col.s, db->no) < 0) {
-		LM_ERR("could not print the query\n");
-		return -1;
-	}
-	tmp.s = query;
-	tmp.len = strlen(query);
 
-	if (mdb.write.dbf.raw_query (mdb.write.dbh, &tmp, NULL)) {
-		LM_ERR("error in database update.\n");
-		return -1;
+	if (db->errors < db_error_threshold) {
+		if (sprintf(query, "UPDATE %.*s "
+						"SET %.*s=%.*s+1 "
+						"WHERE %.*s=%i "
+						"AND %.*s=%i",
+						reg_table.len, reg_table.s,
+						error_col.len, error_col.s, error_col.len, error_col.s,
+						id_col.len, id_col.s, handle->id,
+						num_col.len, num_col.s, db->no) < 0) {
+			LM_ERR("could not print the query\n");
+			return -1;
+		}
+
+		tmp.s = query;
+		tmp.len = strlen(query);
+
+		if (mdb.write.dbf.raw_query (mdb.write.dbh, &tmp, NULL)) {
+			LM_ERR("error in database update.\n");
+			return -1;
+		}
 	}
-	
+
 	for(i=0; i<DB_NUM; i++){
 		if (handle->db[i].dbh && handle->db[i].dbf.close){
 			handle->db[i].dbf.close(handle->db[i].dbh);




More information about the sr-dev mailing list