Skip to content

Commit

Permalink
dialog: Decrement dialog stats during post-sync cleanup
Browse files Browse the repository at this point in the history
After a sync completes, it proceeds to clean up all dialogs loaded from
DB which did not match the data received via sync.  However, make sure
to also decrement the 'active' / 'early' dialog stats on each delete!
  • Loading branch information
liviuchircu committed Jul 30, 2019
1 parent aa93d0f commit f88c410
Show file tree
Hide file tree
Showing 5 changed files with 7 additions and 22 deletions.
17 changes: 2 additions & 15 deletions modules/dialog/dlg_db_handler.c
Expand Up @@ -77,9 +77,6 @@ int dlg_db_mode = DB_MODE_NONE;
static db_con_t* dialog_db_handle = 0; /* database connection handle */
static db_func_t dialog_dbf;

extern int dlg_enable_stats;
extern stat_var *active_dlgs;
extern stat_var *early_dlgs;
extern int dlg_bulk_del_no;

static inline void set_final_update_cols(db_val_t *, struct dlg_cell *, int);
Expand Down Expand Up @@ -606,12 +603,6 @@ static int load_dialog_info_from_db(int dlg_hash_size)
dlg->start_ts = VAL_INT(values+6);

dlg->state = VAL_INT(values+7);
if (dlg->state==DLG_STATE_CONFIRMED_NA ||
dlg->state==DLG_STATE_CONFIRMED) {
if_update_stat(dlg_enable_stats, active_dlgs, 1);
} else if (dlg->state==DLG_STATE_EARLY) {
if_update_stat(dlg_enable_stats, early_dlgs, 1);
}

GET_STR_VALUE(cseq1, values, 9 , 1, 1);
GET_STR_VALUE(cseq2, values, 10 , 1, 1);
Expand Down Expand Up @@ -1748,12 +1739,6 @@ static int sync_dlg_db_mem(void)
dlg->start_ts = VAL_INT(values+6);

dlg->state = VAL_INT(values+7);
if (dlg->state==DLG_STATE_CONFIRMED_NA ||
dlg->state==DLG_STATE_CONFIRMED) {
if_update_stat(dlg_enable_stats, active_dlgs, 1);
} else if (dlg->state==DLG_STATE_EARLY) {
if_update_stat(dlg_enable_stats, early_dlgs, 1);
}

GET_STR_VALUE(cseq1, values, 9 , 1, 1);
GET_STR_VALUE(cseq2, values, 10 , 1, 1);
Expand Down Expand Up @@ -1868,6 +1853,8 @@ static int sync_dlg_db_mem(void)
ref_dlg(dlg,1);
}

update_dlg_stats(dlg, +1);

run_load_callback_per_dlg(dlg);
} else {
/* we already saw this dialog before
Expand Down
1 change: 0 additions & 1 deletion modules/dialog/dlg_handlers.c
Expand Up @@ -79,7 +79,6 @@ extern int seq_match_mode;
extern struct rr_binds d_rrb;

/* statistic variables */
extern stat_var *early_dlgs;
extern stat_var *processed_dlgs;
extern stat_var *expired_dlgs;
extern stat_var *failed_dlgs;
Expand Down
4 changes: 3 additions & 1 deletion modules/dialog/dlg_hash.h
Expand Up @@ -182,9 +182,11 @@ struct dlg_table
gen_lock_set_t *locks;
};


extern stat_var *active_dlgs;
extern stat_var *early_dlgs;
extern struct dlg_table *d_table;
extern int ctx_dlg_idx;
extern int dlg_enable_stats;

#define callee_idx(_dlg) \
(((_dlg)->legs_no[DLG_LEG_200OK]==0)? \
Expand Down
5 changes: 2 additions & 3 deletions modules/dialog/dlg_replication.c
Expand Up @@ -34,9 +34,6 @@
#include "../../resolve.h"
#include "../../forward.h"

extern int dlg_enable_stats;

extern stat_var *active_dlgs;
extern stat_var *processed_dlgs;

extern stat_var *create_sent;
Expand Down Expand Up @@ -1034,6 +1031,8 @@ void rcv_cluster_event(enum clusterer_event ev, int node_id)
if (dlg_db_mode == DB_MODE_DELAYED)
unref++;

update_dlg_stats(dlg, -1);

next_dlg = dlg->next;
unref_dlg_unsafe(dlg, unref, &d_table->entries[i]);
dlg = next_dlg;
Expand Down
2 changes: 0 additions & 2 deletions modules/dialog/dlg_req_within.h
Expand Up @@ -51,8 +51,6 @@
#define DLG_PING_FAIL (1<<2)

extern struct tm_binds d_tmb;
extern int dlg_enable_stats;
extern stat_var * active_dlgs;

typedef void (dlg_request_callback)(struct cell *t,int type,
struct tmcb_params* ps);
Expand Down

0 comments on commit f88c410

Please sign in to comment.