Skip to content

Commit

Permalink
b2b_entities: fix a concurrency issue between entity create and delete
Browse files Browse the repository at this point in the history
  • Loading branch information
rvlad-patrascu committed Mar 17, 2020
1 parent 47e2db2 commit 9c959fa
Showing 1 changed file with 11 additions and 5 deletions.
16 changes: 11 additions & 5 deletions modules/b2b_entities/dlg.c
Expand Up @@ -3113,17 +3113,23 @@ void b2b_tm_cback(struct cell *t, b2b_table htable, struct tmcb_params *ps)

if (B2BE_SERIALIZE_STORAGE()) {
if (dlg_state == B2B_CONFIRMED && prev_state == B2B_MODIFIED) {
b2b_ev = B2B_EVENT_UPDATE;
lock_get(&htable[hash_index].lock);

b2b_run_cb(dlg, etype, B2BCB_TRIGGER_EVENT, b2b_ev, &storage);
if (dlg->state != B2B_TERMINATED) {
b2b_ev = B2B_EVENT_UPDATE;
b2b_run_cb(dlg, etype, B2BCB_TRIGGER_EVENT, b2b_ev, &storage);
} else
b2b_ev = -1;
} else if (b2b_ev == B2B_EVENT_CREATE) {
lock_get(&htable[hash_index].lock);

b2b_run_cb(dlg, etype, B2BCB_TRIGGER_EVENT, b2b_ev, &storage);
if (dlg->state != B2B_TERMINATED) {
b2b_run_cb(dlg, etype, B2BCB_TRIGGER_EVENT, b2b_ev, &storage);

if (b2be_db_mode == WRITE_THROUGH)
b2be_db_insert(dlg, etype);
if (b2be_db_mode == WRITE_THROUGH)
b2be_db_insert(dlg, etype);
} else
b2b_ev = -1;
}
}

Expand Down

0 comments on commit 9c959fa

Please sign in to comment.