<p>lynxis lazus has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/13800">View Change</a></p><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 include/osmocom/msc/db.h<br>M src/libmsc/db.c<br>M src/osmo-msc/msc_main.c<br>3 files changed, 2 insertions(+), 92 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/00/13800/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/msc/db.h b/include/osmocom/msc/db.h</span><br><span>index 6d07055..ff5f5ef 100644</span><br><span>--- a/include/osmocom/msc/db.h</span><br><span>+++ b/include/osmocom/msc/db.h</span><br><span>@@ -50,10 +50,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 b5e7ad8..9053b1b 100644</span><br><span>--- a/src/libmsc/db.c</span><br><span>+++ b/src/libmsc/db.c</span><br><span>@@ -1057,63 +1057,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 b55d38f..c60a30c 100644</span><br><span>--- a/src/osmo-msc/msc_main.c</span><br><span>+++ b/src/osmo-msc/msc_main.c</span><br><span>@@ -97,19 +97,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>@@ -130,7 +125,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>@@ -148,7 +142,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>@@ -187,7 +181,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>@@ -254,19 +248,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>@@ -664,11 +645,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: newchange </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: 1 </div>
<div style="display:none"> Gerrit-Owner: lynxis lazus <lynxis@fe80.eu> </div>