In process_tables_expire(), when parsing all the tables with expiration
set, to check if the any entry expired, make sure we start from the
oldest one, we can't just rely on eb32_first(), because of sign issues
on the timestamp.
Not doing that may mean some tables are not considered for expiration.
This does not need to be backported.
t->shards[shard].in_bucket.key = next_exp;
eb32_insert(&ps->tables, &t->shards[shard].in_bucket);
}
- table_eb = eb32_first(&ps->tables);
+ table_eb = eb32_lookup_ge(&ps->tables, now_ms - TIMER_LOOK_BACK);
+ if (!table_eb)
+ table_eb = eb32_first(&ps->tables);
while (table_eb) {
struct eb32_node *tmpnode;