)]}'
{
  "log": [
    {
      "commit": "51e384554b4653a05abea435432431cdca4728fb",
      "tree": "75854e6e907f3adeedebbd2e082662dc55d52b47",
      "parents": [
        "aa5c38727b314b03cd7ab69612435aa206bd5e2c"
      ],
      "author": {
        "name": "Dan Smith",
        "email": "dansmith@redhat.com",
        "time": "Wed Apr 14 07:23:10 2021 -0700"
      },
      "committer": {
        "name": "Dan Smith",
        "email": "dansmith@redhat.com",
        "time": "Thu Apr 15 06:16:42 2021 -0700"
      },
      "message": "Add some debug to async_wait failures\n\nThis dumps some data in the case where we fail to wait for a child\npid to help debug what is going on. This also cleans up a few review\ncomments from the actual fix.\n\nChange-Id: I7b58ce0cf2b41bdffa448973edb4c992fe5f730c\nRelated-Bug: #1923728\n"
    },
    {
      "commit": "aa5c38727b314b03cd7ab69612435aa206bd5e2c",
      "tree": "7bf309dd4319c10a0bd4c021ed568fb4f223def0",
      "parents": [
        "ef1e9ada9b62e07a21502914077402a2055694bb"
      ],
      "author": {
        "name": "Dan Smith",
        "email": "dansmith@redhat.com",
        "time": "Wed Apr 14 14:27:32 2021 -0700"
      },
      "committer": {
        "name": "Dan Smith",
        "email": "dansmith@redhat.com",
        "time": "Wed Apr 14 14:33:07 2021 -0700"
      },
      "message": "Work around CHILD_MAX bash limitation for async\n\nApparently bash (via POSIX) only guarantees a small (32ish) number of\nchildren can be started and their statuses retrieved at any given\npoint. On larger jobs with lots of plugins and additional work, we\nmay go over that limit, especially for long-lived children, such\nas the install_tempest task.\n\nThis works around that issue by creating a fifo for each child at\nspawn time. When the child is complete, it will block on a read\nagainst that fifo (and thus not exit). When the parent goes to wait\non the child, it first writes to that fifo, unblocking the child so\nthat it can exit near the time we go to wait.\n\nCloses-Bug: #1923728\nChange-Id: Id755bdb1e7f1664ec08742d034c174e87a3d2902\n"
    },
    {
      "commit": "84b328c814fd5be8af53738128aa3f5ef75ca3c7",
      "tree": "1ff5dd065176e555ac652c8eb8256f8d640c8ef5",
      "parents": [
        "a64c843052529cf5c8ac8cf8eb46c59b103b4b47"
      ],
      "author": {
        "name": "Dan Smith",
        "email": "dansmith@redhat.com",
        "time": "Fri Mar 26 07:17:42 2021 -0700"
      },
      "committer": {
        "name": "Dan Smith",
        "email": "dansmith@redhat.com",
        "time": "Fri Mar 26 07:17:42 2021 -0700"
      },
      "message": "Default to parallel execution\n\nSeveral jobs have been running in parallel since the late Wallaby\ncycle, and other developers have had it enabled locally. I have heard\nno async-related stability or debug-ability complaints thus far.\nI think that we should convert the default to parallel early in the\nXena cycle in an attempt to spread the speed improvements across the\nboard, while also collecting data on a wider set of configurations.\n\nChange-Id: I83d56c9363d481bb6d5921f5e1f9b024f136044b\n"
    },
    {
      "commit": "30d9bf9a6d8af9590b04caa3757956522f2004d4",
      "tree": "c41ec387e576c525a0e1d7d06b2c7f3c7efab748",
      "parents": [
        "84ead5aacf8ada7c3cd8ff524cb1f7c7e8dc147d"
      ],
      "author": {
        "name": "Dan Smith",
        "email": "dansmith@redhat.com",
        "time": "Tue Jan 19 12:10:52 2021 -0800"
      },
      "committer": {
        "name": "Dan Smith",
        "email": "dansmith@redhat.com",
        "time": "Tue Feb 09 15:57:04 2021 -0800"
      },
      "message": "Async task support\n\nWe have a *ton* of stuff in devstack that is very linear, specifically\nthe ten-ish minutes we spend loading osc to run a single API command\nagainst something. We also generate configs, sync databases, and other\nthings that use one core of our worker and make our runtime longer\nthan it really needs to be.\n\nThe idea in this patch is to make it super simple to run some things\nin the background and then wait for them to finish before proceeding\nto something that will require them to be done. This avoids the\ninterleaving you would expect by redirecting the async tasks to a log\nfile, and then cat\u0027ing that log file synchronously during the wait\noperation. The per-task log file remains so it\u0027s easier to examine\nit in isolation.\n\nMultiple people have reported between 22-30% improvement in the\ntime it takes to stack with this. More can be done, but what is here\nalready makes a significant difference.\n\nChange-Id: I270a910b531641b023c13f75dfedca057a1f1031\n"
    }
  ]
}
