Home - Waterfall Grid T-Grid Console Builders Recent Builds Buildslaves Changesources - JSON API - About

Builder collectd-60-solaris10-sparc Build #36

Results:

Build successful

SourceStamp:

Projectcollectd/collectd
Repositoryhttps://github.com/collectd/collectd
Branchcollectd-6.0
Revisione4cc3f9a0f066153b1f7666d3065b0985b0d13a8
Got Revisione4cc3f9a0f066153b1f7666d3065b0985b0d13a8
Changes5 changes

BuildSlave:

unstable10s

Reason:

The AnyBranchScheduler scheduler named 'schedule-collectd-60' triggered this build

Steps and Logfiles:

  1. git update ( 21 secs )
    1. stdio
  2. setproperty property 'ciflags' set ( 0 secs )
    1. stdio
    2. property changes
  3. shell '/opt/csw/bin/bash ./build.sh' ( 7 mins, 29 secs )
    1. stdio
  4. shell_1 './configure --prefix=/opt/csw ...' ( 3 mins, 36 secs )
    1. stdio
    2. config.log
  5. shell_2 'gmake -k ...' ( 10 mins, 24 secs )
    1. stdio
  6. shell_3 'gmake check' ( 1 mins, 35 secs )
    1. stdio
    2. test-suite.log

Build Properties:

NameValueSource
branch collectd-6.0 Build
builddir /export/home/buildbot-unstable10s/slave/collectd-60-solaris10-sparc slave
buildername collectd-60-solaris10-sparc Builder
buildnumber 36 Build
ciflags --disable-aggregation --disable-check_uptime --disable-csv --disable-java --disable-lua --disable-match_empty_counter --disable-match_hashed --disable-match_regex --disable-match_timediff --disable-match_value --disable-network --disable-perl --disable-postgresql --disable-target_notification --disable-target_replace --disable-target_scale --disable-target_set --disable-target_v5upgrade --disable-threshold --disable-write_graphite --disable-write_kafka --disable-write_mongodb --disable-write_pro .. [property value too long] SetPropertyFromCommand Step
codebase Build
got_revision e4cc3f9a0f066153b1f7666d3065b0985b0d13a8 Git
project collectd/collectd Build
repository https://github.com/collectd/collectd Build
revision e4cc3f9a0f066153b1f7666d3065b0985b0d13a8 Build
scheduler schedule-collectd-60 Scheduler
slavename unstable10s BuildSlave
workdir /export/home/buildbot-unstable10s/slave/collectd-60-solaris10-sparc slave (deprecated)

Forced Build Properties:

NameLabelValue

Responsible Users:

  1. Leonard Göhrs
  2. Leonard Göhrs

Timing:

StartMon Feb 27 18:39:08 2023
EndMon Feb 27 19:02:36 2023
Elapsed23 mins, 28 secs

All Changes:

:

  1. Change #169443

    Category None
    Changed by Leonard Göhrs <l.goehrsohnoyoudont@pengutronix.de>
    Changed at Mon 27 Feb 2023 18:37:53
    Repository https://github.com/collectd/collectd
    Project collectd/collectd
    Branch collectd-6.0
    Revision 55efb56a8d56f5b37bfdad430801e731210ecd1f

    Comments

    [collectd 6] src/daemon/plugin.c: Use one thread per write plugin
    
    ChangeLog: collectd: Use one write thread per write plugin
    
    The previous write thread design used a single queue with a single read head
    from which one of the write threads would de-queue an element and would then
    sequentially call each registered write callback.
    This meant that all write plugins would have to cooperate in order to not drop
    values. If for example all write threads are stalled by the same write plugin's
    callback function not returning, the queue will start to fill up until elements
    start to be dropped, even though there are other plugins that could still make
    progress. In addition to that, all write callbacks have to be designed to be
    reentrant right now, which increases complexity.
    
    This new design uses a single linked-list write queue with one read head per
    output plugin. Each output plugin is serviced in a dedicated write thread.
    Elements are freed based on a reference count, which is shown in the ASCII-Art
    below:
    
              +- Thread #1 Head       +- Thread #2 Head       +- Tail
              v                       v                       v
       +--+  +--+  +--+  +--+  +--+  +--+  +--+  +--+  +--+  +--+
       | 0|->| 1|->| 1|->| 1|->| 1|->| 2|->| 2|->| 2|->| 2|->| 2|->X
       +--+  +--+  +--+  +--+  +--+  +--+  +--+  +--+  +--+  +--+
        ^
        +- to be free()d
    
    The changes introduced by this commit have some side-effects:
    
    - The WriteThreads config option no longer exists, as a strict 1:1 ratio of
      write plugins and write threads is used.
    - The data flow has changed. The previous data flow was:
    
        (From one of the ReadThreads)
          plugin_dispatch_{values,multivalue}()
          plugin_dispatch_metric_family()
          enqueue_metric_family()
          write_queue_enqueue() -----{Queue}----+
                                                |
        (In one of the WriteThreads threads)    |
          plugin_write_thread()                 |
            ^- plugin_write_dequeue()         <-+
          plugin_dispatch_metric_internal()
            ^- fc_process_chain(pre_cache_chain)
          fc_process_chain(fc_process_chain)
          fc_bit_write_invoke()
          plugin_write(NULL) / plugin_write(plugin_name)
          plugin callback()
    
      The data flow now is:
    
        (From one of the ReadThreads)
          plugin_dispatch_{values,multivalue}()
          plugin_dispatch_metric_family()
          plugin_dispatch_metric_internal()
            ^- fc_process_chain(pre_cache_chain)
          fc_process_chain(post_cache_chain)
          fc_bit_write_invoke()
          plugin_write(NULL) / plugin_write(plugin_name)
          write_queue_enqueue() -----{Queue}----+
                                                |
        (In one of the WriteThreads threads)    |
          plugin_write_thread()               <-+
          plugin callback()
    
      One result of this change is, that the behaviour of plugin_write has changed
      from running the plugin callback immediately and in the same thread, to
      always enqueueing the value and de-queing in the dedicated thread.
    - The behaviour of the WriteQueueLimitHigh and WriteQueueLimitLow options has
      changed. The Queue will be be capped to a length of LimitHigh by dropping
      random queue elements between the queue end and LimitLow.
      Setting LimitLow to a reasonably large value ensures that fast write plugins
      do not loose values, even in the vicinity of a slow plugin.
      The diagram below shows the random element selected for removal (###) in
      Step 1 and the queue with the element removed in Step 2.
    
      Step 1:
        +- Thread #1 Head    |  +- Thread #2 Head       +- Tail
        v  |                 |  v                       v
       +--+| +--+  ####  +--+| +--+  +--+  +--+  +--+  +--+
       | 1|->| 1|-># 1#->| 1|->| 2|->| 2|->| 2|->| 2|->| 2|->X
       +--+| +--+  ####  +--+| +--+  +--+  +--+  +--+  +--+
           |                 |
           | LimitHigh       | LimitLow
    
      Step 2:
           |  +- Thread #1 Head +- Thread #2 Head       +- Tail
           |  v              |  v                       v
           | +--+  +--+  +--+| +--+  +--+  +--+  +--+  +--+
           | | 1|->| 1|->| 1|->| 2|->| 2|->| 2|->| 2|->| 2|->X
           | +--+  +--+  +--+| +--+  +--+  +--+  +--+  +--+
           |                 |
           | LimitHigh       | LimitLow
    
    Signed-off-by: Leonard Göhrs <l.goehrs@pengutronix.de>

    Changed files

    • src/collectd.conf.in
    • src/collectd.conf.pod
    • src/daemon/configfile.c
    • src/daemon/filter_chain.c
    • src/daemon/filter_chain.h
    • src/daemon/plugin.c
    • src/daemon/plugin.h
  2. Change #169444

    Category None
    Changed by Leonard Göhrs <l.goehrsohnoyoudont@pengutronix.de>
    Changed at Mon 27 Feb 2023 18:37:53
    Repository https://github.com/collectd/collectd
    Project collectd/collectd
    Branch collectd-6.0
    Revision e79c4aef839e2c9493345715dd0375e3d34ec21e

    Comments

    [collectd 6] src/daemon/plugin.c: work around missing stpcpy on solaris
    
    The CI tests on solaris failed due to missing stpcpy. Work around it using
    memcpy and strlen.
    
    Signed-off-by: Leonard Göhrs <l.goehrs@pengutronix.de>

    Changed files

    • src/daemon/plugin.c
  3. Change #169445

    Category None
    Changed by Leonard Göhrs <l.goehrsohnoyoudont@pengutronix.de>
    Changed at Mon 27 Feb 2023 18:37:53
    Repository https://github.com/collectd/collectd
    Project collectd/collectd
    Branch collectd-6.0
    Revision a2060ca651aac6a890ae5d589680863c877fbff2

    Comments

    [collectd 6] src/daemon/plugin.c: restore previous position of plugin_write
    
    The new queue design resulted in plugin_write being based on
    enqueue_metric_family, which resulted in the functions moving around in the
    file. This made the diff harder to read. Restore old position.
    
    Signed-off-by: Leonard Göhrs <l.goehrs@pengutronix.de>

    Changed files

    • src/daemon/plugin.c
  4. Change #169446

    Category None
    Changed by Leonard Göhrs <leonardohnoyoudont@goehrs.eu>
    Changed at Mon 27 Feb 2023 18:37:53
    Repository https://github.com/collectd/collectd
    Project collectd/collectd
    Branch collectd-6.0
    Revision 46fe47b43a5ce20ea0b3b2d51fcae796de0e34c9

    Comments

    [collectd 6] src/collectd.conf.pod polish the WriteQueueLimitHigh/Low docs
    
    The behaviour of LimitHight/LimitLow has changed with the switch to one
    thread per write plugin. This warrants a rewrite of the respective
    documentation. Thanks to @eero-t for the suggestion.

    Changed files

    • src/collectd.conf.pod
  5. Change #169447

    Category None
    Changed by Leonard Göhrs <leonardohnoyoudont@goehrs.eu>
    Changed at Mon 27 Feb 2023 18:37:53
    Repository https://github.com/collectd/collectd
    Project collectd/collectd
    Branch collectd-6.0
    Revision e4cc3f9a0f066153b1f7666d3065b0985b0d13a8

    Comments

    [collectd 6] src/daemon/plugin.h: Revert plugin_write documentation change
    
    The behaviour of plugin_write with regards to fam being NULL has not changed
    with the switch to one thread per write plugin, so the documentation should
    not change as well.

    Changed files

    • src/daemon/plugin.h