vcl: do not stop listeners on vls epoll del 85/38385/3
authorFlorin Coras <fcoras@cisco.com>
Thu, 2 Mar 2023 06:22:30 +0000 (22:22 -0800)
committerDave Wallace <dwallacelf@gmail.com>
Mon, 6 Mar 2023 23:01:19 +0000 (23:01 +0000)
Although removal from epoll means listener no longer accepts new
sessions, the accept queue built by vpp cannot be drained by stopping
the listener. Morover, some applications, e.g., nginx, might constantly
remove and add listeners to their epfds. Removing listeners in such
situations causes a lot of churn in vpp as segments and segment managers
need to be recreated.

Type: improvement

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: Ia412b3f8d50fbb4881a99ff024f798353b521af7

src/vcl/vcl_locked.c

index 8b0c66d..563d97e 100644 (file)
@@ -1312,7 +1312,13 @@ vls_mp_checks (vcl_locked_session_t * vls, int is_add)
          vls_listener_wrk_set (vls, vls->vcl_wrk_index, 1 /* is_active */);
          break;
        }
-      vls_listener_wrk_stop_listen (vls, vls->vcl_wrk_index);
+      /* Although removal from epoll means listener no longer accepts new
+       * sessions, the accept queue built by vpp cannot be drained by stopping
+       * the listener. Morover, some applications, e.g., nginx, might
+       * constantly remove and add listeners to their epfds. Removing
+       * listeners in such situations causes a lot of churn in vpp as segments
+       * and segment managers need to be recreated. */
+      /* vls_listener_wrk_stop_listen (vls, vls->vcl_wrk_index); */
       break;
     case VCL_STATE_LISTEN_NO_MQ:
       if (!is_add)