sorcery: Add setting object type congestion levels.

Sorcery creates taskprocessors for object types to process object observer
callbacks.  An API call is needed to be able to set the congestion levels
of these taskprocessors for selected object types.

* Updated PJSIP's contact and contact_status sorcery object type observer
default congestion levels based upon stress testing.  Increased the
congestion levels to reduce the potential for bursty register/unregister
and subscribe/unsubscribe activity from triggering the taskprocessor
overload alert.

ASTERISK-26088
Reported by:  Richard Mudgett

Change-Id: I4542e83b556f0714009bfeff89505c801f1218c6
This commit is contained in:
Richard Mudgett
2016-06-02 18:19:13 -05:00
parent 2cd67d5b07
commit 4879cd875c
4 changed files with 34 additions and 0 deletions

View File

@@ -1164,6 +1164,20 @@ int __ast_sorcery_object_register(struct ast_sorcery *sorcery, const char *type,
return 0;
}
int ast_sorcery_object_set_congestion_levels(struct ast_sorcery *sorcery, const char *type, long low_water, long high_water)
{
struct ast_sorcery_object_type *object_type;
int res = -1;
object_type = ao2_find(sorcery->types, type, OBJ_SEARCH_KEY);
if (object_type) {
res = ast_taskprocessor_alert_set_levels(object_type->serializer,
low_water, high_water);
ao2_ref(object_type, -1);
}
return res;
}
void ast_sorcery_object_set_copy_handler(struct ast_sorcery *sorcery, const char *type, sorcery_copy_handler copy)
{
RAII_VAR(struct ast_sorcery_object_type *, object_type, ao2_find(sorcery->types, type, OBJ_KEY), ao2_cleanup);