stats: log error when missing stats values

Let the user know when the stats were not consumed fast enough for the
given FIFO length.

Related: SYS#4877
Change-Id: If0e8ab55103007693101538fb6ea310075217774
This commit is contained in:
Oliver Smith 2021-03-17 12:37:41 +01:00
parent d89d35e933
commit d290439b4a
3 changed files with 156 additions and 0 deletions

View File

@ -60,6 +60,7 @@
#include <osmocom/core/talloc.h>
#include <osmocom/core/timer.h>
#include <osmocom/core/stat_item.h>
#include <osmocom/core/logging.h>
/*! global list of stat_item groups */
static LLIST_HEAD(osmo_stat_item_groups);
@ -242,6 +243,10 @@ int osmo_stat_item_get_next(const struct osmo_stat_item *item, int32_t *next_idx
idx_delta = item_value->id + 1 - *next_idx;
if (idx_delta > 1) {
LOGP(DLSTATS, LOGL_ERROR, "%s: %d stats values skipped\n", item->desc->name, idx_delta - 1);
}
*next_idx = item_value->id + 1;
return idx_delta;

View File

@ -120,6 +120,7 @@ static void stat_test(void)
value = osmo_stat_item_get_last(statg->items[TEST_A_ITEM]);
OSMO_ASSERT(value == -1);
fprintf(stderr, "osmo_stat_item_get_next rc == 0\n");
rc = osmo_stat_item_get_next(statg->items[TEST_A_ITEM], &rd_a, &value);
OSMO_ASSERT(rc == 0);
@ -128,13 +129,16 @@ static void stat_test(void)
value = osmo_stat_item_get_last(statg->items[TEST_A_ITEM]);
OSMO_ASSERT(value == 1);
fprintf(stderr, "osmo_stat_item_get_next rc > 0\n");
rc = osmo_stat_item_get_next(statg->items[TEST_A_ITEM], &rd_a, &value);
OSMO_ASSERT(rc > 0);
OSMO_ASSERT(value == 1);
fprintf(stderr, "osmo_stat_item_get_next rc == 0\n");
rc = osmo_stat_item_get_next(statg->items[TEST_A_ITEM], &rd_a, &value);
OSMO_ASSERT(rc == 0);
fprintf(stderr, "osmo_stat_item_get_next rc > 0\n");
for (i = 2; i <= 32; i++) {
osmo_stat_item_set(statg->items[TEST_A_ITEM], i);
osmo_stat_item_set(statg->items[TEST_B_ITEM], 1000 + i);
@ -220,17 +224,20 @@ static void stat_test(void)
rc = osmo_stat_item_discard(statg->items[TEST_A_ITEM], &rd_a);
OSMO_ASSERT(rc > 0);
fprintf(stderr, "osmo_stat_item_get_next rc == 0\n");
rc = osmo_stat_item_discard(statg->items[TEST_A_ITEM], &rd_a);
OSMO_ASSERT(rc == 0);
rc = osmo_stat_item_get_next(statg->items[TEST_A_ITEM], &rd_a, &value);
OSMO_ASSERT(rc == 0);
fprintf(stderr, "osmo_stat_item_get_next rc > 0\n");
osmo_stat_item_set(statg->items[TEST_A_ITEM], 98);
rc = osmo_stat_item_get_next(statg->items[TEST_A_ITEM], &rd_a, &value);
OSMO_ASSERT(rc > 0);
OSMO_ASSERT(value == 98);
fprintf(stderr, "osmo_stat_item_get_next rc == 0\n");
rc = osmo_stat_item_get_next(statg->items[TEST_A_ITEM], &rd_a, &value);
OSMO_ASSERT(rc == 0);

View File

@ -1,3 +1,147 @@
osmo_stat_item_get_next rc == 0
osmo_stat_item_get_next rc > 0
DLSTATS ERROR item.a: 1 stats values skipped
osmo_stat_item_get_next rc == 0
osmo_stat_item_get_next rc > 0
DLSTATS ERROR item.b: 3 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 4 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.a: 57 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.a: 1 stats values skipped
DLSTATS ERROR item.b: 51 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
DLSTATS ERROR item.b: 1 stats values skipped
osmo_stat_item_get_next rc == 0
osmo_stat_item_get_next rc > 0
osmo_stat_item_get_next rc == 0
Start test: test_reporting
DLGLOBAL ERROR counter group 'ctr-test:one' already exists for index 2, instead using index 3. This is a software bug that needs fixing.
DLGLOBAL ERROR 'ctr-test.one_dot' is not a valid counter group identifier