hydra-evaluator: Send statistics to statsd

[?]
Jul 10, 2015, 2:40 PM
NS7SND6RF6X3CVSVP7MLAQQZFA64E63YKFFABPEAGEPHX6PNWBOQC

Dependencies

  • [2] 4JE45C3C Force creation of a new uncached eval if jobs have been removed
  • [3] RX5IIZMT Use Email::MIME instead of Email::Simple
  • [4] WVD3YYON hydra-evaluator: Add some debug code
  • [5] X27GNHDV * Basic job info in the database.
  • [6] S6OISBQ3 * Mark the "current" builds in a jobset, i.e. those corresponding to
  • [7] JOYONH2K Prevent multiple builds with the same (job, outPath) tuple from being added
  • [8] SS4TZXNU Distinguish between permanent evaluation errors and transient input errors
  • [9] WQXF2T3D hydra-evaluator: Don't require $HYDRA_CONFIG
  • [10] POPU2ATH * hydra_scheduler: use eval-jobs.
  • [11] S5PV6IIM * Represent jobs explicitly in the DB.
  • [12] FDE3BJAP * Refactoring.
  • [13] 7ZHHVD6Q * Inputs of type "build" must now be declared explicitly.
  • [14] BTOXLRG3 * Record the input containing the Nix expression (release.nix) in the
  • [15] 5SHCWE7X * Prevent repeated evaluation of a jobset with the same inputs. This
  • [16] QMW24O5S Add support for Guile & Guix.
  • [17] 3XTHEUMP * Implemented the clone feature.
  • [18] RFE6T5LG * Store jobset evaluations in the database explicitly. This includes
  • [19] SRBU2RAE Warn against multiple jobs with the same name
  • [20] IMQRX4MP hydra-eval-jobs: Use JSON instead of XML
  • [21] LZO3C2KI * Hack around those SQLite timeouts: just retry the transaction.
  • [*] N22GPKYT * Put info about logs / build products in the DB.
  • [*] ZDENAYQI * email notification of evaluation errors to project owner (if desired)
  • [*] RXVJFQ5A Evaluator cleanups
  • [*] NI5BVF2V * In job inputs of type "build", allow the project and jobset names of

Change contents

  • edit in src/script/hydra-evaluator at line 15
    [3.2472]
    [24.418]
    use Net::Statsd;
    use Time::HiRes qw(clock_gettime CLOCK_REALTIME);
  • replacement in src/script/hydra-evaluator at line 107
    [5.2152][5.5402:5432]()
    my $checkoutStart = time;
    [5.2152]
    [5.870]
    my $checkoutStart = clock_gettime(CLOCK_REALTIME);
  • edit in src/script/hydra-evaluator at line 111
    [5.940]
    [5.940]
    Net::Statsd::increment("hydra.evaluator.checkouts");
    my $checkoutStop = clock_gettime(CLOCK_REALTIME);
    Net::Statsd::timing("hydra.evaluator.checkout_time", int(($checkoutStop - $checkoutStart) * 1000));
  • edit in src/script/hydra-evaluator at line 117
    [5.954]
    [5.954]
    Net::Statsd::increment("hydra.evaluator.failed_checkouts");
  • edit in src/script/hydra-evaluator at line 125
    [5.1144][5.5433:5462](),[5.1712][5.5433:5462]()
    my $checkoutStop = time;
  • edit in src/script/hydra-evaluator at line 134
    [25.2019]
    [5.2449]
    Net::Statsd::increment("hydra.evaluator.unchanged_checkouts");
  • replacement in src/script/hydra-evaluator at line 142
    [5.2226][5.5523:5549]()
    my $evalStart = time;
    [5.2226]
    [5.2570]
    my $evalStart = clock_gettime(CLOCK_REALTIME);
  • replacement in src/script/hydra-evaluator at line 144
    [5.465][5.5550:5575](),[5.2680][5.5550:5575](),[5.11666][5.5550:5575](),[5.7096][5.5550:5575]()
    my $evalStop = time;
    [5.2680]
    [4.669]
    my $evalStop = clock_gettime(CLOCK_REALTIME);
    Net::Statsd::timing("hydra.evaluator.eval_time", int(($evalStop - $evalStart) * 1000));
  • edit in src/script/hydra-evaluator at line 163
    [5.576]
    [5.5887]
    my $jobsetChanged = 0;
    my $dbStart = clock_gettime(CLOCK_REALTIME);
  • replacement in src/script/hydra-evaluator at line 184
    [2.65][2.65:93]()
    my $jobsetChanged =
    [2.65]
    [2.93]
    $jobsetChanged =
  • replacement in src/script/hydra-evaluator at line 191
    [5.6170][5.6170:6290]()
    , checkouttime => abs($checkoutStop - $checkoutStart)
    , evaltime => abs($evalStop - $evalStart)
    [5.6170]
    [2.258]
    , checkouttime => abs(int($checkoutStop - $checkoutStart))
    , evaltime => abs(int($evalStop - $evalStart))
  • edit in src/script/hydra-evaluator at line 259
    [5.5858]
    [5.1447]
    my $dbStop = clock_gettime(CLOCK_REALTIME);
  • edit in src/script/hydra-evaluator at line 262
    [5.1448]
    [25.2775]
    Net::Statsd::timing("hydra.evaluator.db_time", int(($dbStop - $dbStart) * 1000));
    Net::Statsd::increment("hydra.evaluator.evals");
    Net::Statsd::increment("hydra.evaluator.cached_evals") unless $jobsetChanged;
  • edit in src/script/hydra-evaluator at line 288
    [5.1452]
    [26.2189]
    my $startTime = clock_gettime(CLOCK_REALTIME);
  • edit in src/script/hydra-evaluator at line 293
    [26.2247]
    [5.1453]
    my $stopTime = clock_gettime(CLOCK_REALTIME);
    Net::Statsd::timing("hydra.evaluator.total_time", int(($stopTime - $startTime) * 1000));