Since we use Redis SETs to simulate non-unique indexes, we can use these
SETs to perform a much faster table scan when an appropriate index
exists. For usrloc expiry query in a typical scenario, this brings the
list of key strings that need to be checked down from 170k to 19k.
Change-Id: I1c4841be5cd28ad42196b4da6b5bb3e6e1b6ed50
Instead of making the COUNT increase and falloff dependent on the number
of results produced, we make it dependent on the query run time. This is
to prevent Redis being blocked by extended consecutive SCAN queries.
Each individual query should not run longer than 100 ms, and we also add
a short pause before going to the next SCAN to give competing queries a
chance to run.
Change-Id: I6b88cacf795513cf3e0aeefc67fbedef8e1bb8c1
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)
* to control how stopper column is used.
0 => default behavior
1 => stopper will be checked after sort process
Change-Id: I2b59111e40a1aedbd6c5446a5906b53c687a8ad4
Use the avp value when creating P-Asserted-Identity instead of
values from Headers in order to allow to insert E164 format value.
If no value, skip creation of header.
Change-Id: I81282da27325d02987b3dc1079605de0d6b340a8
* if we use pv_get_spec_name() cfgt will throw errors trying to get values
like $x_hdr($xavp(whatever=>y)) when there's no $xavp(whatever=>y)
Change-Id: I88f91e30f969e309c566f6c15495796350b0ba5f
When AVP is used instead of value from header, we were missing
the call to parse_uri() so value at parsed_uri was empty
Change-Id: I37ce0626691eae4d313b39474d6d57cd8baf87dc
When a Redis key can be deleted directly, we still need to build the
list of type keys for that table in order to delete dependent entries,
which are the indexes used for faster DB access.
Change-Id: Ib8fdad428946263fc9eba466868347fee219dfbc
* __dialog_created() -> get_dialog_data() -> creates dlg callbacks for
__dialog_sendpublish()
__dialog_sendpublish() can be executed by two different process and
if we use refresh_pubruri_avps_flag shared memory can change in between
Change-Id: Id81b66209c27a900033f557cfa175ca3067aa34c
* remove pvh_remove_xavi()
* rework pvh_set_header():
use core pv_get_spec_*
use PV_IDX_NONE to detect no index case
remove values instead of adding NULL if PV_IDX_ALL
* changes needed from upstream:
https://github.com/kamailio/kamailio/pull/2341
Introducing PV_IDX_NONE so we can know when idx == 0
if $x_hdr(HEADER) or $x_hdr(HEADER[0])
So we can append or set the value
Change-Id: I496d65cc7e0e92167967edfb592fff6a6b0d6e3b