<p>neels has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-hlr/+/16212">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">drop error log for when a subscriber does not exist<br><br>Checking for existence of a subscriber and seeing that there is none is not<br>inherently an error. However, osmo-hlr currently logs on all occasions:<br><br>  DAUC ERROR Cannot read subscriber from db: MSISDN='1001': No such subscriber<br><br>This spams the ERROR log level. Particularly when a D-GSM setup does subscriber<br>existence checks for every incoming mslookup request, that potentially creates<br>constant ERROR logging.<br><br>The "No such subscriber" part comes from db_sel(), which might also return an<br>sqlite3_errmsg(). We still want those sqlite3_errmsg()es in the ERROR log.<br><br>Hence print an ERROR log only if db_sel() returns an rc != -ENOENT.<br><br>Change-Id: I5044e9b4519b948edc4e451cef0f7830d315619b<br>---<br>M src/db_hlr.c<br>M tests/db/db_test.err<br>2 files changed, 4 insertions(+), 30 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-hlr refs/changes/12/16212/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/db_hlr.c b/src/db_hlr.c</span><br><span>index 3255dd9..2c2d830 100644</span><br><span>--- a/src/db_hlr.c</span><br><span>+++ b/src/db_hlr.c</span><br><span>@@ -568,7 +568,7 @@</span><br><span>          return -EIO;</span><br><span> </span><br><span>     rc = db_sel(dbc, stmt, subscr, &err);</span><br><span style="color: hsl(0, 100%, 40%);">-       if (rc)</span><br><span style="color: hsl(120, 100%, 40%);">+       if (rc && rc != -ENOENT)</span><br><span>             LOGP(DAUC, LOGL_ERROR, "Cannot read subscriber from db: IMSI='%s': %s\n",</span><br><span>               imsi, err);</span><br><span>     return rc;</span><br><span>@@ -619,7 +619,7 @@</span><br><span>             return -EIO;</span><br><span> </span><br><span>     rc = db_sel(dbc, stmt, subscr, &err);</span><br><span style="color: hsl(0, 100%, 40%);">-       if (rc)</span><br><span style="color: hsl(120, 100%, 40%);">+       if (rc && rc != -ENOENT)</span><br><span>             LOGP(DAUC, LOGL_ERROR, "Cannot read subscriber from db: MSISDN='%s': %s\n",</span><br><span>                     msisdn, err);</span><br><span>   return rc;</span><br><span>@@ -643,7 +643,7 @@</span><br><span>             return -EIO;</span><br><span> </span><br><span>     rc = db_sel(dbc, stmt, subscr, &err);</span><br><span style="color: hsl(0, 100%, 40%);">-       if (rc)</span><br><span style="color: hsl(120, 100%, 40%);">+       if (rc && rc != -ENOENT)</span><br><span>             LOGP(DAUC, LOGL_ERROR, "Cannot read subscriber from db: ID=%" PRId64 ": %s\n",</span><br><span>                id, err);</span><br><span>       return rc;</span><br><span>@@ -666,7 +666,7 @@</span><br><span>             return -EIO;</span><br><span> </span><br><span>     rc = db_sel(dbc, stmt, subscr, &err);</span><br><span style="color: hsl(0, 100%, 40%);">-       if (rc)</span><br><span style="color: hsl(120, 100%, 40%);">+       if (rc && rc != -ENOENT)</span><br><span>             LOGP(DAUC, LOGL_ERROR, "Cannot read subscriber from db: IMEI=%s: %s\n", imei, err);</span><br><span>        return rc;</span><br><span> }</span><br><span>diff --git a/tests/db/db_test.err b/tests/db/db_test.err</span><br><span>index 87c7d0e..150400b 100644</span><br><span>--- a/tests/db/db_test.err</span><br><span>+++ b/tests/db/db_test.err</span><br><span>@@ -64,25 +64,21 @@</span><br><span> DAUC Cannot create subscriber: invalid IMSI: '123456789 000003'</span><br><span> </span><br><span> db_subscr_get_by_imsi(dbc, "123456789000003", &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: IMSI='123456789000003': No such subscriber</span><br><span> </span><br><span> db_subscr_create(dbc, "123456789000002123456", DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EINVAL</span><br><span> DAUC Cannot create subscriber: invalid IMSI: '123456789000002123456'</span><br><span> </span><br><span> db_subscr_get_by_imsi(dbc, "123456789000002123456", &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: IMSI='123456789000002123456': No such subscriber</span><br><span> </span><br><span> db_subscr_create(dbc, "foobar123", DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EINVAL</span><br><span> DAUC Cannot create subscriber: invalid IMSI: 'foobar123'</span><br><span> </span><br><span> db_subscr_get_by_imsi(dbc, "foobar123", &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: IMSI='foobar123': No such subscriber</span><br><span> </span><br><span> db_subscr_create(dbc, "123", DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EINVAL</span><br><span> DAUC Cannot create subscriber: invalid IMSI: '123'</span><br><span> </span><br><span> db_subscr_get_by_imsi(dbc, "123", &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: IMSI='123': No such subscriber</span><br><span> </span><br><span> db_subscr_create(dbc, short_imsi, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> 0</span><br><span> </span><br><span>@@ -142,7 +138,6 @@</span><br><span> }</span><br><span> </span><br><span> db_subscr_get_by_msisdn(dbc, "54321012345678912345678", &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: MSISDN='54321012345678912345678': No such subscriber</span><br><span> </span><br><span> db_subscr_update_msisdn_by_imsi(dbc, imsi0, "543 21") --> -EINVAL</span><br><span> DAUC IMSI='123456789000000': Cannot update subscriber: invalid MSISDN: '543 21'</span><br><span>@@ -155,7 +150,6 @@</span><br><span> }</span><br><span> </span><br><span> db_subscr_get_by_msisdn(dbc, "543 21", &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: MSISDN='543 21': No such subscriber</span><br><span> </span><br><span> db_subscr_update_msisdn_by_imsi(dbc, imsi0, "foobar123") --> -EINVAL</span><br><span> DAUC IMSI='123456789000000': Cannot update subscriber: invalid MSISDN: 'foobar123'</span><br><span>@@ -168,7 +162,6 @@</span><br><span> }</span><br><span> </span><br><span> db_subscr_get_by_msisdn(dbc, "foobar123", &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: MSISDN='foobar123': No such subscriber</span><br><span> </span><br><span> db_subscr_update_msisdn_by_imsi(dbc, imsi0, "5") --> 0</span><br><span> </span><br><span>@@ -187,7 +180,6 @@</span><br><span> }</span><br><span> </span><br><span> db_subscr_get_by_msisdn(dbc, "54321", &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: MSISDN='54321': No such subscriber</span><br><span> </span><br><span> db_subscr_update_msisdn_by_imsi(dbc, imsi0, "543210123456789") --> 0</span><br><span> </span><br><span>@@ -216,7 +208,6 @@</span><br><span> }</span><br><span> </span><br><span> db_subscr_get_by_msisdn(dbc, "5432101234567891", &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: MSISDN='5432101234567891': No such subscriber</span><br><span> </span><br><span> </span><br><span> --- Check if subscriber exists (by MSISDN)</span><br><span>@@ -232,13 +223,11 @@</span><br><span> DAUC Cannot update MSISDN: no such subscriber: IMSI='999999999'</span><br><span> </span><br><span> db_subscr_get_by_msisdn(dbc, "99", &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: MSISDN='99': No such subscriber</span><br><span> </span><br><span> db_subscr_update_msisdn_by_imsi(dbc, "foobar", "99") --> -ENOENT</span><br><span> DAUC Cannot update MSISDN: no such subscriber: IMSI='foobar'</span><br><span> </span><br><span> db_subscr_get_by_msisdn(dbc, "99", &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: MSISDN='99': No such subscriber</span><br><span> </span><br><span> </span><br><span> --- Set valid / invalid IMEI</span><br><span>@@ -265,7 +254,6 @@</span><br><span> }</span><br><span> </span><br><span> db_subscr_get_by_imei(dbc, "123456789012345", &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: IMEI=123456789012345: No such subscriber</span><br><span> </span><br><span> </span><br><span> --- Set the same IMEI again</span><br><span>@@ -286,7 +274,6 @@</span><br><span> db_subscr_update_imei_by_imsi(dbc, imsi0, NULL) --> 0</span><br><span> </span><br><span> db_subscr_get_by_imei(dbc, "12345678901234", &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: IMEI=12345678901234: No such subscriber</span><br><span> </span><br><span> </span><br><span> --- Set / unset nam_cs and nam_ps</span><br><span>@@ -424,7 +411,6 @@</span><br><span> DAUC Cannot disable CS: no such subscriber: IMSI='999999999'</span><br><span> </span><br><span> db_subscr_get_by_imsi(dbc, unknown_imsi, &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: IMSI='999999999': No such subscriber</span><br><span> </span><br><span> db_subscr_nam(dbc, "foobar", false, true) --> -ENOENT</span><br><span> DAUC Cannot disable PS: no such subscriber: IMSI='foobar'</span><br><span>@@ -567,7 +553,6 @@</span><br><span> DAUC Cannot update VLR number for subscriber ID=99999: no such subscriber</span><br><span> </span><br><span> db_subscr_get_by_id(dbc, 99999, &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: ID=99999: No such subscriber</span><br><span> </span><br><span> </span><br><span> --- Purge and un-purge PS and CS</span><br><span>@@ -698,13 +683,11 @@</span><br><span> DAUC Cannot purge PS: no such subscriber: IMSI='999999999'</span><br><span> </span><br><span> db_subscr_get_by_imsi(dbc, unknown_imsi, &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: IMSI='999999999': No such subscriber</span><br><span> </span><br><span> db_subscr_purge(dbc, unknown_imsi, true, false) --> -ENOENT</span><br><span> DAUC Cannot purge CS: no such subscriber: IMSI='999999999'</span><br><span> </span><br><span> db_subscr_get_by_imsi(dbc, unknown_imsi, &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: IMSI='999999999': No such subscriber</span><br><span> </span><br><span> </span><br><span> --- Delete non-existent / invalid IDs</span><br><span>@@ -728,7 +711,6 @@</span><br><span> db_subscr_delete_by_id(dbc, id0) --> 0</span><br><span> </span><br><span> db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: IMSI='123456789000000': No such subscriber</span><br><span> </span><br><span> db_subscr_delete_by_id(dbc, id0) --> -ENOENT</span><br><span> DAUC Cannot delete: no such subscriber: ID=1</span><br><span>@@ -742,7 +724,6 @@</span><br><span> db_subscr_delete_by_id(dbc, id1) --> 0</span><br><span> </span><br><span> db_subscr_get_by_imsi(dbc, imsi1, &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: IMSI='123456789000001': No such subscriber</span><br><span> </span><br><span> db_subscr_get_by_imsi(dbc, imsi2, &g_subscr) --> 0</span><br><span> struct hlr_subscriber {</span><br><span>@@ -753,7 +734,6 @@</span><br><span> db_subscr_delete_by_id(dbc, id2) --> 0</span><br><span> </span><br><span> db_subscr_get_by_imsi(dbc, imsi2, &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: IMSI='123456789000002': No such subscriber</span><br><span> </span><br><span> db_subscr_get_by_imsi(dbc, short_imsi, &g_subscr) --> 0</span><br><span> struct hlr_subscriber {</span><br><span>@@ -764,7 +744,6 @@</span><br><span> db_subscr_delete_by_id(dbc, id_short) --> 0</span><br><span> </span><br><span> db_subscr_get_by_imsi(dbc, short_imsi, &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: IMSI='123456': No such subscriber</span><br><span> </span><br><span> </span><br><span> --- Create and delete subscribers with non-default nam_cs and nam_ps</span><br><span>@@ -1305,7 +1284,6 @@</span><br><span> db_subscr_delete_by_id(dbc, id) --> 0</span><br><span> </span><br><span> db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: IMSI='123456789000000': No such subscriber</span><br><span> </span><br><span> </span><br><span> --- Re-add subscriber and verify auth data didn't come back</span><br><span>@@ -1330,7 +1308,6 @@</span><br><span> db_subscr_delete_by_id(dbc, id) --> 0</span><br><span> </span><br><span> db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: IMSI='123456789000000': No such subscriber</span><br><span> </span><br><span> db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -2</span><br><span> DAUC IMSI='123456789000000': No such subscriber</span><br><span>@@ -1431,13 +1408,11 @@</span><br><span> DAUC Cannot update SQN for subscriber ID=99: no auc_3g entry for such subscriber</span><br><span> </span><br><span> db_subscr_get_by_id(dbc, 99, &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: ID=99: No such subscriber</span><br><span> </span><br><span> db_update_sqn(dbc, 9999, 99) --> -ENOENT</span><br><span> DAUC Cannot update SQN for subscriber ID=9999: no auc_3g entry for such subscriber</span><br><span> </span><br><span> db_subscr_get_by_id(dbc, 9999, &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: ID=9999: No such subscriber</span><br><span> </span><br><span> </span><br><span> --- Create subscriber</span><br><span>@@ -1635,7 +1610,6 @@</span><br><span> db_subscr_delete_by_id(dbc, id) --> 0</span><br><span> </span><br><span> db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> -ENOENT</span><br><span style="color: hsl(0, 100%, 40%);">-DAUC Cannot read subscriber from db: IMSI='123456789000000': No such subscriber</span><br><span> </span><br><span> ===== test_subscr_sqn: SUCCESS</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-hlr/+/16212">change 16212</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/c/osmo-hlr/+/16212"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-hlr </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I5044e9b4519b948edc4e451cef0f7830d315619b </div>
<div style="display:none"> Gerrit-Change-Number: 16212 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-CC: Jenkins Builder </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>