stats: fix per-worker stat vector length 01/22401/3
authorBenoît Ganne <bganne@cisco.com>
Mon, 30 Sep 2019 10:39:55 +0000 (12:39 +0200)
committerOle Trøan <otroan@employees.org>
Mon, 30 Sep 2019 15:30:22 +0000 (15:30 +0000)
Type: fix

Change-Id: I198a2312f5fc6e922c8a6c51ba7248ce6e236f81
Signed-off-by: Benoît Ganne <bganne@cisco.com>
src/vpp/stats/stat_segment.c

index 11e72b2..b978d37 100644 (file)
@@ -558,13 +558,14 @@ do_stat_segment_updates (stat_segment_main_t * sm)
   if (PREDICT_FALSE (num_worker_threads_set == 0))
     {
       void *oldheap = clib_mem_set_heap (sm->heap);
+      int workers = clib_max (1, vec_len (vlib_mains) - 1);
       vlib_stat_segment_lock ();
 
-      sm->directory_vector[STAT_COUNTER_NUM_WORKER_THREADS].value =
-       vec_len (vlib_mains) > 1 ? vec_len (vlib_mains) - 1 : 1;
+      sm->directory_vector[STAT_COUNTER_NUM_WORKER_THREADS].value = workers;
 
       stat_validate_counter_vector (&sm->directory_vector
-                                   [STAT_COUNTER_VECTOR_RATE_PER_WORKER], 0);
+                                   [STAT_COUNTER_VECTOR_RATE_PER_WORKER],
+                                   workers);
       num_worker_threads_set = 1;
       vlib_stat_segment_unlock ();
       clib_mem_set_heap (oldheap);