Ignore:
Timestamp:
09/09/15 14:04:10 (6 years ago)
Author:
Shane Alcock <salcock@…>
Branches:
4.0.1-hotfixes, cachetimestamps, develop, dpdk-ndag, etsilive, libtrace4, master, ndag_format, pfring, rc-4.0.1, rc-4.0.2, rc-4.0.3, rc-4.0.4, ringdecrementfix, ringperformance, ringtimestampfixes
Children:
a2dcdad
Parents:
0f6bc3f
Message:

Fix problems with combiners and ticks.

  • Each tick should only be passed to the reporter once at most. In the case of a sorted combiner, all ticks are discarded.
  • In the case of an ordered combiner, ticks that do not use the same ordering as packets (e.g. ts ticks vs count ticks) are not used for any ordering comparisons. A read operation will read from each queue until it encounters a tick in that queue -- if it is a new tick, that will be reported, otherwise the tick is discarded and the queue is marked as not "live".

In terms of testing: works OK when mixing timestamp ticks with non-parallel
input. Still needs to be tested the other way around.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lib/combiner_sorted.c

    r6a6e6a8 r3dd5acc  
    6262                libtrace_generic_t gt = {.res = &r};
    6363                ASSERT_RET (libtrace_vector_get(&queues[0], a, (void *) &r), == 1);
    64                 trace->reporter(trace, MESSAGE_RESULT, gt, &trace->reporter_thread);
     64                if (r.type == RESULT_TICK_INTERVAL ||
     65                                r.type == RESULT_TICK_COUNT) {
     66                        /* Ticks are essentially useless for this combiner? */
     67                        continue;
     68                }
     69                trace->reporter(trace, MESSAGE_RESULT, gt, &trace->reporter_thread);
    6570        }
    6671        libtrace_vector_empty(&queues[0]);
     
    8792    pause,                      /* pause */
    8893    NULL,                       /* queues */
     94    0,                          /* last_count_tick */
     95    0,                          /* last_ts_tick */
    8996    {0}                         /* opts */
    9097};
Note: See TracChangeset for help on using the changeset viewer.