cleanup_defrag need not inspect any readers when all readers are in sync
Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
parent
4cc7fac8bc
commit
95f070d097
1 changed files with 9 additions and 6 deletions
|
@ -2115,14 +2115,17 @@ static void deliver_user_data_synchronously (struct nn_rsample_chain *sc)
|
||||||
static void clean_defrag (struct proxy_writer *pwr)
|
static void clean_defrag (struct proxy_writer *pwr)
|
||||||
{
|
{
|
||||||
seqno_t seq = nn_reorder_next_seq (pwr->reorder);
|
seqno_t seq = nn_reorder_next_seq (pwr->reorder);
|
||||||
struct pwr_rd_match *wn;
|
if (pwr->n_readers_out_of_sync > 0)
|
||||||
for (wn = ut_avlFindMin (&pwr_readers_treedef, &pwr->readers); wn != NULL; wn = ut_avlFindSucc (&pwr_readers_treedef, &pwr->readers, wn))
|
|
||||||
{
|
{
|
||||||
if (wn->in_sync == PRMSS_OUT_OF_SYNC)
|
struct pwr_rd_match *wn;
|
||||||
|
for (wn = ut_avlFindMin (&pwr_readers_treedef, &pwr->readers); wn != NULL; wn = ut_avlFindSucc (&pwr_readers_treedef, &pwr->readers, wn))
|
||||||
{
|
{
|
||||||
seqno_t seq1 = nn_reorder_next_seq (wn->u.not_in_sync.reorder);
|
if (wn->in_sync == PRMSS_OUT_OF_SYNC)
|
||||||
if (seq1 < seq)
|
{
|
||||||
seq = seq1;
|
seqno_t seq1 = nn_reorder_next_seq (wn->u.not_in_sync.reorder);
|
||||||
|
if (seq1 < seq)
|
||||||
|
seq = seq1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
nn_defrag_notegap (pwr->defrag, 1, seq);
|
nn_defrag_notegap (pwr->defrag, 1, seq);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue