From: Maria Matejka Date: Sat, 8 Jun 2024 18:19:51 +0000 (+0200) Subject: Table: too fast export validity check replaced with just a retry X-Git-Tag: v3.0.0~162 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d7cf378003e9859eb7d7dd055fda16180c4e4f0b;p=thirdparty%2Fbird.git Table: too fast export validity check replaced with just a retry --- diff --git a/nest/rt-table.c b/nest/rt-table.c index 4afee94cc..a72964a3b 100644 --- a/nest/rt-table.c +++ b/nest/rt-table.c @@ -2196,23 +2196,18 @@ rt_net_feed_validate_first( if (!first) return first_in_net; - for (uint i = 1; i < 4096; i++) - { - /* Export item validity check: we must find it between first_in_net and last_in_net */ - const struct rt_pending_export *rpe = first_in_net; - while (rpe) - if (rpe == first) - return first; - else if (rpe == last_in_net) - /* Got to the end without finding the beginning */ - break; - else - rpe = atomic_load_explicit(&rpe->next, memory_order_acquire); - - birdloop_yield(); - } + /* Export item validity check: we must find it between first_in_net and last_in_net */ + const struct rt_pending_export *rpe = first_in_net; + while (rpe) + if (rpe == first) + return first; + else if (rpe == last_in_net) + /* Got to the end without finding the beginning */ + break; + else + rpe = atomic_load_explicit(&rpe->next, memory_order_acquire); - log(L_WARN "Waiting too long for table announcement to finish"); + /* Not found, inconsistent export, retry */ RT_READ_RETRY(tr); }