<p>Harald Welte <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/13800">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Harald Welte: Looks good to me, approved
  Daniel Willmann: Looks good to me, but someone else must approve
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">remove msc specific db counters<br><br>DB counters has been used to save osmo_counters & osmo_rate_ctr to a local<br>sqlite databases every 60 seconds.<br>This is quite slow e.g. 1000 subscriber might slow the msc down.<br><br>Change-Id: Id64f1839a55b5326f74ec04b7a5dbed9d269b89c<br>---<br>M doc/manuals/chapters/running.adoc<br>M include/osmocom/msc/db.h<br>M src/libmsc/db.c<br>M src/osmo-msc/msc_main.c<br>4 files changed, 4 insertions(+), 94 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/doc/manuals/chapters/running.adoc b/doc/manuals/chapters/running.adoc</span><br><span>index cb68157..9d56f1f 100644</span><br><span>--- a/doc/manuals/chapters/running.adoc</span><br><span>+++ b/doc/manuals/chapters/running.adoc</span><br><span>@@ -43,8 +43,8 @@</span><br><span> *-m, --mncc-sock*::</span><br><span>  Same as option -M (deprecated).</span><br><span> *-C, --no-dbcounter*::</span><br><span style="color: hsl(0, 100%, 40%);">-       Disable the regular periodic synchronization of statistics</span><br><span style="color: hsl(0, 100%, 40%);">-      counters to the database.</span><br><span style="color: hsl(120, 100%, 40%);">+     Deprecated. DB statistics and counter has been removed.</span><br><span style="color: hsl(120, 100%, 40%);">+       This option is only valid for compatiblity and does nothing.</span><br><span> </span><br><span> </span><br><span> === Multiple instances</span><br><span>diff --git a/include/osmocom/msc/db.h b/include/osmocom/msc/db.h</span><br><span>index 8d9ec41..d9463a6 100644</span><br><span>--- a/include/osmocom/msc/db.h</span><br><span>+++ b/include/osmocom/msc/db.h</span><br><span>@@ -52,10 +52,4 @@</span><br><span> int db_sms_delete_expired_message_by_id(unsigned long long sms_id);</span><br><span> void db_sms_delete_oldest_expired_message(void);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Statistics counter storage */</span><br><span style="color: hsl(0, 100%, 40%);">-struct osmo_counter;</span><br><span style="color: hsl(0, 100%, 40%);">-int db_store_counter(struct osmo_counter *ctr);</span><br><span style="color: hsl(0, 100%, 40%);">-struct rate_ctr_group;</span><br><span style="color: hsl(0, 100%, 40%);">-int db_store_rate_ctr_group(struct rate_ctr_group *ctrg);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> #endif /* _DB_H */</span><br><span>diff --git a/src/libmsc/db.c b/src/libmsc/db.c</span><br><span>index a9aaf94..c2d8339 100644</span><br><span>--- a/src/libmsc/db.c</span><br><span>+++ b/src/libmsc/db.c</span><br><span>@@ -1060,63 +1060,3 @@</span><br><span> </span><br><span>        dbi_result_free(result);</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int db_store_counter(struct osmo_counter *ctr)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-    dbi_result result;</span><br><span style="color: hsl(0, 100%, 40%);">-      char *q_name;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   dbi_conn_quote_string_copy(conn, ctr->name, &q_name);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    result = dbi_conn_queryf(conn,</span><br><span style="color: hsl(0, 100%, 40%);">-          "INSERT INTO Counters "</span><br><span style="color: hsl(0, 100%, 40%);">-               "(timestamp,name,value) VALUES "</span><br><span style="color: hsl(0, 100%, 40%);">-              "(datetime('now'),%s,%lu)", q_name, ctr->value);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   free(q_name);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   if (!result)</span><br><span style="color: hsl(0, 100%, 40%);">-            return -EIO;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    dbi_result_free(result);</span><br><span style="color: hsl(0, 100%, 40%);">-        return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static int db_store_rate_ctr(struct rate_ctr_group *ctrg, unsigned int num,</span><br><span style="color: hsl(0, 100%, 40%);">-                        char *q_prefix)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-   dbi_result result;</span><br><span style="color: hsl(0, 100%, 40%);">-      char *q_name;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   dbi_conn_quote_string_copy(conn, ctrg->desc->ctr_desc[num].name,</span><br><span style="color: hsl(0, 100%, 40%);">-                             &q_name);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        result = dbi_conn_queryf(conn,</span><br><span style="color: hsl(0, 100%, 40%);">-          "Insert INTO RateCounters "</span><br><span style="color: hsl(0, 100%, 40%);">-           "(timestamp,name,idx,value) VALUES "</span><br><span style="color: hsl(0, 100%, 40%);">-          "(datetime('now'),%s.%s,%u,%"PRIu64")",</span><br><span style="color: hsl(0, 100%, 40%);">-             q_prefix, q_name, ctrg->idx, ctrg->ctr[num].current);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-     free(q_name);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   if (!result)</span><br><span style="color: hsl(0, 100%, 40%);">-            return -EIO;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    dbi_result_free(result);</span><br><span style="color: hsl(0, 100%, 40%);">-        return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int db_store_rate_ctr_group(struct rate_ctr_group *ctrg)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-     unsigned int i;</span><br><span style="color: hsl(0, 100%, 40%);">- char *q_prefix;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- dbi_conn_quote_string_copy(conn, ctrg->desc->group_name_prefix, &q_prefix);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   for (i = 0; i < ctrg->desc->num_ctr; i++)</span><br><span style="color: hsl(0, 100%, 40%);">-              db_store_rate_ctr(ctrg, i, q_prefix);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   free(q_prefix);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span>diff --git a/src/osmo-msc/msc_main.c b/src/osmo-msc/msc_main.c</span><br><span>index 7577768..9da26fb 100644</span><br><span>--- a/src/osmo-msc/msc_main.c</span><br><span>+++ b/src/osmo-msc/msc_main.c</span><br><span>@@ -102,19 +102,14 @@</span><br><span>  const char *config_file;</span><br><span>     int daemonize;</span><br><span>       const char *mncc_sock_path;</span><br><span style="color: hsl(0, 100%, 40%);">-     int use_db_counter;</span><br><span> } msc_cmdline_config = {</span><br><span>      .database_name = "sms.db",</span><br><span>         .config_file = "osmo-msc.cfg",</span><br><span style="color: hsl(0, 100%, 40%);">-        .use_db_counter = 1,</span><br><span> };</span><br><span> </span><br><span> /* timer to store statistics */</span><br><span style="color: hsl(0, 100%, 40%);">-#define DB_SYNC_INTERVAL       60, 0</span><br><span> #define EXPIRE_INTERVAL                10, 0</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static struct osmo_timer_list db_sync_timer;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> static int quit = 0;</span><br><span> </span><br><span> static void print_usage()</span><br><span>@@ -135,7 +130,6 @@</span><br><span>         printf("  -V --version               Print the version of OsmoMSC.\n");</span><br><span>    printf("  -e --log-level number      Set a global loglevel.\n");</span><br><span>   printf("  -M --mncc-sock-path PATH   Disable built-in MNCC handler and offer socket.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-     printf("  -C --no-dbcounter          Disable regular syncing of counters to database.\n");</span><br><span> }</span><br><span> </span><br><span> static void handle_options(int argc, char **argv)</span><br><span>@@ -153,7 +147,7 @@</span><br><span>                     {"version", 0, 0, 'V' },</span><br><span>                   {"log-level", 1, 0, 'e'},</span><br><span>                  {"mncc-sock-path", 1, 0, 'M'},</span><br><span style="color: hsl(0, 100%, 40%);">-                        {"no-dbcounter", 0, 0, 'C'},</span><br><span style="color: hsl(120, 100%, 40%);">+                        {"no-dbcounter", 0, 0, 'C'}, /* deprecated */</span><br><span>                      {0, 0, 0, 0}</span><br><span>                 };</span><br><span> </span><br><span>@@ -192,7 +186,7 @@</span><br><span>                         msc_cmdline_config.mncc_sock_path = optarg;</span><br><span>                  break;</span><br><span>               case 'C':</span><br><span style="color: hsl(0, 100%, 40%);">-                       msc_cmdline_config.use_db_counter = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+                        fprintf(stderr, "-C is deprecated and does nothing.");</span><br><span>                     break;</span><br><span>               case 'V':</span><br><span>                    print_version(1);</span><br><span>@@ -260,19 +254,6 @@</span><br><span>     }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* timer handling */</span><br><span style="color: hsl(0, 100%, 40%);">-static int _db_store_counter(struct osmo_counter *counter, void *data)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-   return db_store_counter(counter);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static void db_sync_timer_cb(void *data)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-     /* store counters to database and re-schedule */</span><br><span style="color: hsl(0, 100%, 40%);">-        osmo_counters_for_each(_db_store_counter, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-        osmo_timer_schedule(&db_sync_timer, DB_SYNC_INTERVAL);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> static int msc_vty_go_parent(struct vty *vty)</span><br><span> {</span><br><span>    switch (vty->node) {</span><br><span>@@ -665,11 +646,6 @@</span><br><span>               return 5;</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   /* setup the timer */</span><br><span style="color: hsl(0, 100%, 40%);">-   osmo_timer_setup(&db_sync_timer, db_sync_timer_cb, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-   if (msc_cmdline_config.use_db_counter)</span><br><span style="color: hsl(0, 100%, 40%);">-          osmo_timer_schedule(&db_sync_timer, DB_SYNC_INTERVAL);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>   signal(SIGINT, &signal_handler);</span><br><span>         signal(SIGTERM, &signal_handler);</span><br><span>        signal(SIGABRT, &signal_handler);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/13800">change 13800</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/13800"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-msc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: Id64f1839a55b5326f74ec04b7a5dbed9d269b89c </div>
<div style="display:none"> Gerrit-Change-Number: 13800 </div>
<div style="display:none"> Gerrit-PatchSet: 4 </div>
<div style="display:none"> Gerrit-Owner: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-Reviewer: Daniel Willmann <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>
<div style="display:none"> Gerrit-Reviewer: Vadim Yanitskiy <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: lynxis lazus <lynxis@fe80.eu> </div>