TT#63000 skip empty keys when looking for key

We have value-less master keys to keep track of entries. These keys are
useless when looking for fast-searching keys and are not better than a
full table scan, but are erroneously seen as a better key match than
range-matching keys. Therefore just ignore value-less master keys.

Change-Id: Ibc9ad87a42412b6cf21eac47fbe0ee8e39af4aff
(cherry picked from commit 79b4ac5bb75fe83914fddc104a8fc7c7ce2d0681)
(cherry picked from commit 5542caa855)
mr7.5.8
Richard Fuchs 6 years ago
parent 612b9f081c
commit 3ea2c4066f

@ -57,3 +57,4 @@ sipwise/fix_lcr_rate_wrong_id.patch
upstream/tm-execute-TMCB_REQUEST_FWDED-cb-as-BRANCH_ROUTE-whe.patch
## backport from kamailio upstream (5.4)
upstream/ndb_redis-set-message-level-to-debug-on-exec.patch
sipwise/db_redis_skip_empty_keys.patch

@ -0,0 +1,12 @@
--- a/src/modules/db_redis/redis_dbase.c
+++ b/src/modules/db_redis/redis_dbase.c
@@ -641,6 +641,9 @@
LM_DBG("no direct entry key found, checking type keys\n");
for (type = table->types; type; type = type->next) {
key = type->keys;
+ /* skip value-less master keys */
+ if (!key)
+ continue;
LM_DBG("checking type '%.*s'\n", type->type.len, type->type.s);
if (db_redis_find_query_key(key, table_name, table, &type->type, _k, _v, _op, _n, &keyname,
&key_found, ts_scan_start) != 0) {
Loading…
Cancel
Save