{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":37891737,"defaultBranch":"main","name":"pbench","ownerLogin":"distributed-system-analysis","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2015-06-23T02:08:30.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/10777641?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1715872258.0","currentOid":""},"activityList":{"items":[{"before":"a7419cea528fc8d60cafc15e7eaa06df6632e867","after":"17bff6bade35256b45d174665621db4872e7629a","ref":"refs/heads/main","pushedAt":"2024-07-22T16:12:44.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dbutenhof","name":"David Butenhof","path":"/dbutenhof","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61761529?s=80&v=4"},"commit":{"message":"Add report of Pbench Agent version statistics (#3624)\n\n* Add report of Pbench Agent version statistics\r\n\r\nAdd a new `--agent` option and generator to report on the Pbench Agent\r\nversions present on the server. By default we report on the \"main\"\r\nversions, like \"0.50\" and \"0.73\"; by adding `--detail` it'll report the\r\nmuch longer list of full agent versions (\"v0.73-2g6da0cfc8d\") as well as\r\n\"nonsense\" version metadata like \"system\".\r\n\r\nThis also recognizes the `--since` and `--until` options to report on\r\nagent versions that appear within a specific time range.\r\n\r\nThe report is sorted by the last date a given version was seen, which\r\nmakes it a bit easier to see that only 0.73 has been used since March 08 2024.\r\n\r\n```console\r\nDataset statistics by Pbench Agent version:\r\n Count Version First Last\r\n ---------- ---------------------- ------------ ------------\r\n 1 '0.37' Apr 13 2012 Apr 13 2012\r\n 68 '0.44' Jan 04 2018 Feb 06 2018\r\n 84 '0.46' Jan 03 2018 Mar 09 2018\r\n 1,341 '0.47' Jan 02 2018 Apr 03 2018\r\n 2,197 '0.49' Mar 21 2018 Aug 04 2018\r\n 1,388 '0.48' Feb 06 2018 Aug 14 2018\r\n 171 '0.51' Aug 10 2018 Aug 31 2018\r\n 4,962 '0.50' May 11 2018 Sep 25 2018\r\n 494 '0.52' Aug 24 2018 Jan 02 2019\r\n 1,942 '0.53' Sep 13 2018 May 29 2019\r\n 898 '0.58' Apr 08 2019 May 30 2019\r\n 246 '0.55' Jan 28 2019 Jun 06 2019\r\n 1,205 '0.54' Nov 27 2018 Jul 01 2019\r\n 1 '0.61' Jul 08 2019 Jul 08 2019\r\n 532 '0.57' Mar 15 2019 Aug 28 2019\r\n 382 '0.62' Jul 17 2019 Sep 10 2019\r\n 1,426 '0.56' Feb 11 2019 Oct 16 2019\r\n 1,067 '0.59' Apr 30 2019 Nov 12 2019\r\n 1,454 '0.63' Jul 31 2019 Dec 18 2019\r\n 2,151 '0.65' Sep 27 2019 Feb 21 2020\r\n 1,342 '0.64' Aug 27 2019 Mar 26 2020\r\n 1,587 '0.60' May 25 2019 May 22 2020\r\n 5,255 '0.66' Nov 07 2019 Jul 10 2020\r\n 4,596 '0.67' Jan 16 2020 Nov 30 2020\r\n 33 '0.70' Nov 18 2020 Jan 12 2021\r\n 7,427 '0.68' Apr 01 2020 Apr 27 2021\r\n 54,179 '0.69' Jun 25 2020 Mar 08 2023\r\n 44,870 '0.71' Oct 17 2020 Feb 28\r\n 7,073 '0.72' Jun 24 2022 Mar 08\r\n 3,977 '0.73' Aug 14 2023 today\r\n```\r\n\r\nI won't capture the full list here (it's much longer), but the \"nonsense\"\r\nversion report is currently:\r\n\r\n```console\r\nDatasets with nonsensical version metadata:\r\n Count Version First Last\r\n ---------- ---------------------- ------------ ------------\r\n 37 'system' Mar 30 2019 Apr 01 2019\r\n 54 'plugins:' Jan 26 2018 Apr 27 2021\r\n 5 '' Oct 02 2018 Dec 20 2021\r\n 3 'v(unknown)-g(unknown)' Dec 14 2020 Sep 30 2022\r\n```\r\n\r\n* Tweaks","shortMessageHtmlLink":"Add report of Pbench Agent version statistics (#3624)"}},{"before":"aa325ce59fbc36ef2b73b914c2be9b033e71eaae","after":"a7419cea528fc8d60cafc15e7eaa06df6632e867","ref":"refs/heads/main","pushedAt":"2024-06-13T19:47:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dbutenhof","name":"David Butenhof","path":"/dbutenhof","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61761529?s=80&v=4"},"commit":{"message":"Account for \"dateless\" datasets (#3623)\n\nIt's been a bit annoying that `--statistics=creation` reports a total count\r\nthat's less than the actual number of datasets. This is because when we report\r\nby creation date, we rely on a `JOIN` between `Dataset` and `Metadata`, where\r\nthe creation date comes from the `metadata.log` `pbench.date` field, which is\r\nmissing from some datasets (a bit over 4,000 on the production server).\r\n\r\nThis PR changes `--statistics=creation` to count all rows returned by the SQL\r\nquery, but to separately report the number of empty rows where the metadata\r\nwas missing: e.g.,\r\n\r\n```console\r\n[pbench@n002 /]$ pbench-report-generator --statistics=creation\r\nDataset statistics by creation date:\r\n 154,737 from 2012-04-13 19:21 to 2024-06-13 11:26\r\n (count includes 4,019 datasets without a date)\r\n```","shortMessageHtmlLink":"Account for \"dateless\" datasets (#3623)"}},{"before":"19957c21268acc1ff318209cb65a77209c5e2e29","after":"aa325ce59fbc36ef2b73b914c2be9b033e71eaae","ref":"refs/heads/main","pushedAt":"2024-05-21T11:26:47.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dbutenhof","name":"David Butenhof","path":"/dbutenhof","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61761529?s=80&v=4"},"commit":{"message":"All means \"all\" (#3622)\n\nWhen I added a keyword to select \"upload\" or \"creation\" time statistics, I\r\nomitted \"statistics\" from the effect of `--all`, but I've come to regret that\r\nminor inconvenience. This PR makes `--all` include `--statistics=creation` by\r\ndefault.","shortMessageHtmlLink":"All means \"all\" (#3622)"}},{"before":"81eb07700886a4f2f4b3b4ec7f31bcd8c71effbe","after":"19957c21268acc1ff318209cb65a77209c5e2e29","ref":"refs/heads/main","pushedAt":"2024-05-13T18:24:43.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dbutenhof","name":"David Butenhof","path":"/dbutenhof","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61761529?s=80&v=4"},"commit":{"message":"A small reporting hack (#3621)\n\n* A small reporting hack\r\n\r\nI'd considered some way to report dataset create/upload statistics based on a\r\ndate range, but never got around to it. Today, writing up the draft report for\r\nApril, I of course didn't have a report \"for April\", and pasted in one from\r\nApril 25...\r\n\r\nAnd then thought, well, how hard would it be to add `--since` and `--until` to\r\nset the range?\r\n\r\n```\r\n$ pbench-report-generator --statistics creation --since 2023-1-1 --until 2024-1-1\r\nDataset statistics by creation date:\r\n 23,147 from 2023-01-01 00:07 to 2023-12-21 13:09\r\n 1,441 in month December 2023\r\n 0 in week December 24 to December 31\r\n 0 on 31 December 2023\r\n Total by year:\r\n 2023: 23,147\r\n Total by month of year:\r\n Jan: 5,722 Feb: 1,449 Mar: 1,356 Apr: 1,924\r\n May: 1,895 Jun: 979 Jul: 639 Aug: 1,202\r\n Sep: 2,798 Oct: 1,877 Nov: 1,865 Dec: 1,441\r\n Total by day of month:\r\n 01: 1,869 02: 1,461 03: 1,273 04: 1,303\r\n 05: 1,366 06: 888 07: 645 08: 662\r\n 09: 556 10: 517 11: 591 12: 544\r\n 13: 792 14: 777 15: 508 16: 485\r\n 17: 564 18: 706 19: 521 20: 539\r\n 21: 441 22: 555 23: 493 24: 535\r\n 25: 541 26: 609 27: 776 28: 771\r\n 29: 748 30: 737 31: 374\r\n Total by day of week:\r\n Mon: 2,755 Tue: 3,995 Wed: 4,251 Thu: 3,366\r\n Fri: 2,478 Sat: 2,981 Sun: 3,321\r\n Total by hour of day:\r\n 00: 1,022 01: 731 02: 992 03: 993\r\n 04: 1,354 05: 1,145 06: 910 07: 845\r\n 08: 875 09: 1,157 10: 1,317 11: 1,212\r\n 12: 1,132 13: 956 14: 960 15: 941\r\n 16: 783 17: 815 18: 952 19: 904\r\n 20: 890 21: 847 22: 735 23: 679\r\n```","shortMessageHtmlLink":"A small reporting hack (#3621)"}},{"before":"9a76f13b7453a04b4f49b3add34e946e7409a6fc","after":"81eb07700886a4f2f4b3b4ec7f31bcd8c71effbe","ref":"refs/heads/main","pushedAt":"2024-05-06T22:55:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dbutenhof","name":"David Butenhof","path":"/dbutenhof","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61761529?s=80&v=4"},"commit":{"message":"Fix deadlock and DELETE/UPDATE unindexed datasets (#3620)\n\n* Fix deadlock and DELETE/UPDATE unindexed datasets\r\n\r\nPBENCH-1328\r\n\r\nA bug revealed another bug:\r\n\r\n1. `POST`/`DELETE` `/datasets/{id}` fails when the dataset isn't indexed; with\r\nthe ability to disable server indexing entirely and to remove dataset indexed\r\ndata, this is undesirable. As long as the dataset doesn't have a `WORKING` ops\r\nstatus, we should be able to update or delete.\r\n2. When the operation fails, the status is already set to `WORKING`, and this\r\nwas not corrected on exit, leaving the dataset locked perpetually.","shortMessageHtmlLink":"Fix deadlock and DELETE/UPDATE unindexed datasets (#3620)"}},{"before":"84c3bbdad445b5ab8e706827f0b77058dc997936","after":"9a76f13b7453a04b4f49b3add34e946e7409a6fc","ref":"refs/heads/main","pushedAt":"2024-04-24T15:00:40.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"webbnh","name":"Webb Scales","path":"/webbnh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7795764?s=80&v=4"},"commit":{"message":"Increase the TM SIGNAL_RESPONSE_TIMEOUT\n\nthe 100s timeout is too short for some systems (reported on slightly\noutdated aarch64).\n\nSigned-off-by: Lukáš Doktor ","shortMessageHtmlLink":"Increase the TM SIGNAL_RESPONSE_TIMEOUT"}},{"before":"432589d091a0e5d5371a5328933f17432007fa5b","after":null,"ref":"refs/heads/dependabot/pip/black-24.3.0","pushedAt":"2024-04-19T14:26:57.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"}},{"before":"c6953392059eac1f70c9e2b81b1a7d1fb41c9af3","after":"84c3bbdad445b5ab8e706827f0b77058dc997936","ref":"refs/heads/main","pushedAt":"2024-04-19T14:26:21.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dbutenhof","name":"David Butenhof","path":"/dbutenhof","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61761529?s=80&v=4"},"commit":{"message":"Upgrade black to 24.3.0 (#3618)\n\nRecommended by dependabot due to a CVE (which doesn't really affect us). On\r\nthe whole, the changes caused by this new version seem trivial and innocuous\r\n(like adding blank lines after file docstrings) or minor improvements in\r\nreadability (the new wrapping of compound dict references and broken ternary\r\nexpressions).\r\n\r\nThis supercedes dependabot's #3453.","shortMessageHtmlLink":"Upgrade black to 24.3.0 (#3618)"}},{"before":"37be81502107cb1b6cbde2392bddb91233340eed","after":"c6953392059eac1f70c9e2b81b1a7d1fb41c9af3","ref":"refs/heads/main","pushedAt":"2024-04-18T18:11:25.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dbutenhof","name":"David Butenhof","path":"/dbutenhof","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61761529?s=80&v=4"},"commit":{"message":"count only currently cached datasets in cache size (#3617)\n\nWe were counting aggregate cache size for all datasets but reporting that\r\nvalue as if it were \"currently cached\"; count only currently cached datasets.","shortMessageHtmlLink":"count only currently cached datasets in cache size (#3617)"}},{"before":"3fac0ccb6e8b774481c81a53d4ee62a1f05b6581","after":"432589d091a0e5d5371a5328933f17432007fa5b","ref":"refs/heads/dependabot/pip/black-24.3.0","pushedAt":"2024-04-12T13:05:14.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"},"commit":{"message":"Bump black from 22.12.0 to 24.3.0\n\nBumps [black](https://github.com/psf/black) from 22.12.0 to 24.3.0.\n- [Release notes](https://github.com/psf/black/releases)\n- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)\n- [Commits](https://github.com/psf/black/compare/22.12.0...24.3.0)\n\n---\nupdated-dependencies:\n- dependency-name: black\n dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump black from 22.12.0 to 24.3.0"}},{"before":"9c898cb61dbb30df6dcbc5a865589b76ba6f4c4b","after":"37be81502107cb1b6cbde2392bddb91233340eed","ref":"refs/heads/main","pushedAt":"2024-04-12T13:04:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dbutenhof","name":"David Butenhof","path":"/dbutenhof","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61761529?s=80&v=4"},"commit":{"message":"Ops fixes (#3616)\n\n* Ops fixes\r\n\r\nCorrect accounting and reporting of cache unpacking statistics.\r\n\r\nAvoid reflecting SQLAlchemy `init_db` errors into conmon.\r\n\r\nI realized that even though I'd shortened the traceback, it would still be\r\ndisplayed by Python on termination with an unhandled exception, and that would\r\nstill be relayed through conmon one line at a time. To avoid that, I added an\r\n`except Exception` clause to print a simple message and exit.\r\n\r\nIn the process, I realized that while I'd written a new Click-based\r\n`pbench-reindex`, the old `/opt/pbench-server/bin/pbench-reindex` script was\r\nstill there, and referenced in several config files. I removed these.","shortMessageHtmlLink":"Ops fixes (#3616)"}},{"before":"4a35b7ebfd5ffdf43fb0e3ea671a5e08d7888f88","after":"9c898cb61dbb30df6dcbc5a865589b76ba6f4c4b","ref":"refs/heads/main","pushedAt":"2024-04-09T18:22:45.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dbutenhof","name":"David Butenhof","path":"/dbutenhof","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61761529?s=80&v=4"},"commit":{"message":"Add upload statistics to report (#3615)\n\n* Add upload statistics to report\r\n\r\nPresent dataset statistics in various buckets (by create or upload date), including \"this year\", \"this month\",\r\n\"this week\", \"today\" along with per year/month/day-of-month/hour just for fun.","shortMessageHtmlLink":"Add upload statistics to report (#3615)"}},{"before":"2a0988d41119ccd2dc4eb284a804a2131ec0e1ff","after":"3fac0ccb6e8b774481c81a53d4ee62a1f05b6581","ref":"refs/heads/dependabot/pip/black-24.3.0","pushedAt":"2024-04-05T15:52:44.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"},"commit":{"message":"Bump black from 22.12.0 to 24.3.0\n\nBumps [black](https://github.com/psf/black) from 22.12.0 to 24.3.0.\n- [Release notes](https://github.com/psf/black/releases)\n- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)\n- [Commits](https://github.com/psf/black/compare/22.12.0...24.3.0)\n\n---\nupdated-dependencies:\n- dependency-name: black\n dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump black from 22.12.0 to 24.3.0"}},{"before":"bf2792f928f576f513756520c76325ca060e1bbc","after":"4a35b7ebfd5ffdf43fb0e3ea671a5e08d7888f88","ref":"refs/heads/main","pushedAt":"2024-04-05T15:51:37.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dbutenhof","name":"David Butenhof","path":"/dbutenhof","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61761529?s=80&v=4"},"commit":{"message":"An assortment of Pbench Ops fixes and fun (#3612)\n\n* An assortment of Pbench Ops fixes and fun\r\n\r\nThis fixes several issues observed during ops review:\r\n\r\n1. The `/api/v1/endpoints` API fails if the server is shut down\r\n2. `tar` unpack errors can result in enormous `stderr` output, which is\r\n captured in the `Audit` log; truncate it to 5Mb\r\n3. Change the `pbench-audit` utility to use `dateutil.parser` instead of\r\n `click.DateTime()` so we can include fractional seconds and timezone.\r\n\r\nDuring the time when we broke PostgreSQL, we failed to create metadata for a\r\nnumber of datasets that were allowed to upload. (Whether we should allow this\r\nvs failing the upload is a separate issue.) We have want to repair the\r\nexcessively large `Audit` attributes records. So I took a stab at some\r\nwondrous and magical SQL queries and hackery to begin a new `pbench-repair`\r\nutility. Right now, it repairs long audit attributes \"intelligently\" by\r\ntrimming individual JSON key values; and it add metadata to datasets which\r\nlack critical values. Currently, this includes `server.tarball-path` (which\r\nwe need to enable TOC and visualization), `dataset.metalog` (capturing the\r\ntarball `metadata.log` file), and `server.benchmark` for visualization.\r\n\r\nThere are other `server` namespace values (including expiration time) that\r\ncould be repaired: I decided not to worry about that as we're not doing\r\nexpiration anyway. (Though I might add it over the weekend, since it shouldn't\r\nbe hard.) And there are probably other things we might want to repair in the\r\nfuture using this framework.\r\n\r\nI tested this in a `runlocal` container, using `psql` to \"break\" datasets and\r\nrepair them. I hacked the local `repair.py` with a low \"max error\" limit to\r\nforce truncation of audit attributes:\r\n\r\n```\r\npbench-repair --detail --errors --verify --progress 10\r\n(22:52:08) Repairing audit\r\n|| 60:FAILURE upload fio_rw_2018.02.01T22.40.57 [message] truncated (107) to 105\r\n|| 116:SUCCESS apikey None [key] truncated (197) to 105\r\n22 audit records had attributes too long\r\n2 records were fixed\r\n(22:52:08) Repairing metadata\r\n|| fio_rw_2018.02.01T22.40.57 has no server.tarball-path: setting /srv/pbench/archive/fs-version-001/dhcp31-45.perf.lab.eng.bos.redhat.com/08516cc7448035be2cc502f0517783fa/fio_rw_2018.02.01T22.40.57.tar.xz\r\n|| fio_rw_2018.02.01T22.40.57 has no metalog: setting from metadata.log\r\n|| fio_rw_2018.02.01T22.40.57 has no server.benchmark: setting 'fio'\r\n|| pbench-user-benchmark_example-vmstat_2018.10.24T14.38.18 has no server.tarball-path: setting /srv/pbench/archive/fs-version-001/ansible-host/45f0e2af41977b89e07bae4303dc9972/pbench-user-benchmark_example-vmstat_2018.10.24T14.38.18.tar.xz\r\n|| pbench-user-benchmark_example-vmstat_2018.10.24T14.38.18 has no metalog: setting from metadata.log\r\n|| pbench-user-benchmark_example-vmstat_2018.10.24T14.38.18 has no server.benchmark: setting 'pbench-user-benchmark'\r\n2 server.tarball-path repairs, 0 failures\r\n2 dataset.metalog repairs, 0 failures\r\n2 server.benchmark repairs\r\n```","shortMessageHtmlLink":"An assortment of Pbench Ops fixes and fun (#3612)"}},{"before":"9cf473d8d54c84239568e3106af6e217bcf2e88d","after":"2a0988d41119ccd2dc4eb284a804a2131ec0e1ff","ref":"refs/heads/dependabot/pip/black-24.3.0","pushedAt":"2024-04-03T17:00:59.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"},"commit":{"message":"Bump black from 22.12.0 to 24.3.0\n\nBumps [black](https://github.com/psf/black) from 22.12.0 to 24.3.0.\n- [Release notes](https://github.com/psf/black/releases)\n- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)\n- [Commits](https://github.com/psf/black/compare/22.12.0...24.3.0)\n\n---\nupdated-dependencies:\n- dependency-name: black\n dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump black from 22.12.0 to 24.3.0"}},{"before":"12710f1145041c45a540e5fa8f341d67b6cb35d4","after":"bf2792f928f576f513756520c76325ca060e1bbc","ref":"refs/heads/main","pushedAt":"2024-04-03T17:00:02.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dbutenhof","name":"David Butenhof","path":"/dbutenhof","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61761529?s=80&v=4"},"commit":{"message":"A \"re-imagining\" of the old `pbench-reindex` (#3614)\n\n* A \"re-imagining\" of the old `pbench-reindex`\r\n\r\nThis supports deleting a datasets's indexed data and triggering re-indexing.\r\nIt also provides a mechanism to globally enable or disable indexing.\r\n\r\nIn the short term, this provides a workaround for our sharding issues, which\r\nare preventing us from generating useful indexing anyway, by turning it off\r\nentirely for new datasets. We can also delete indexed data (and the SQL\r\nindex maps) for existing datasets and, on demand, trigger re-indexing for\r\nselected datasets.","shortMessageHtmlLink":"A \"re-imagining\" of the old pbench-reindex (#3614)"}},{"before":null,"after":"9cf473d8d54c84239568e3106af6e217bcf2e88d","ref":"refs/heads/dependabot/pip/black-24.3.0","pushedAt":"2024-03-20T16:43:55.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"},"commit":{"message":"Bump black from 22.12.0 to 24.3.0\n\nBumps [black](https://github.com/psf/black) from 22.12.0 to 24.3.0.\n- [Release notes](https://github.com/psf/black/releases)\n- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)\n- [Commits](https://github.com/psf/black/compare/22.12.0...24.3.0)\n\n---\nupdated-dependencies:\n- dependency-name: black\n dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump black from 22.12.0 to 24.3.0"}},{"before":null,"after":"17248b5b911b0dad22aece295bd3297f88434587","ref":"refs/heads/b1.0.2","pushedAt":"2024-03-07T14:35:46.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"webbnh","name":"Webb Scales","path":"/webbnh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7795764?s=80&v=4"},"commit":{"message":"Set branch.name","shortMessageHtmlLink":"Set branch.name"}},{"before":"906a06ad6ff5d6a540974a5b1b2024fe81c3425d","after":"12710f1145041c45a540e5fa8f341d67b6cb35d4","ref":"refs/heads/main","pushedAt":"2024-03-07T13:04:29.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dbutenhof","name":"David Butenhof","path":"/dbutenhof","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61761529?s=80&v=4"},"commit":{"message":"Audit log formatter (#3611)\n\n* Audit log formatter\r\n\r\nAnother late night ops side project: this queries the `Audit` log with filters\r\nand displays the results either in detail or summary, optionally with\r\npagination.\r\n\r\n```\r\n/opt/pbench-server/bin/pbench-audit --since 2024-02-29 --until 2024-03-01 --name upload --summary\r\n[...]\r\n[2024-02-29 19:35:07] upload uperf_HyperV_RHEL-9.4.0-20240225.8_x86_64_gen2_hv_netvsc_quick_D240227T172431_2024.02.27T09.24.31 FAILURE (legacy) [2.584 seconds]\r\n[2024-02-29 19:36:09] upload uperf_HyperV_RHEL-9.4.0-20240225.8_x86_64_gen2_hv_netvsc_quick_D240227T172431_2024.02.27T09.24.31 SUCCESS (legacy) [4.093 seconds]\r\nReported 428 audit events:\r\n BEGIN 214\r\n SUCCESS 24\r\n FAILURE 190\r\n```\r\n\r\nOr (full form):\r\n\r\n```\r\n/opt/pbench-server/bin/pbench-audit -C /opt/pbench-server/lib/config/pbench-server.cfg --since 2024-02-29T12:00:00 --until '2024-02-29 19:00:00' --name upload\r\n[...]\r\n [2024-02-29 18:58:09.608043+00:00] : upload BEGIN\r\n DATASET uperf_HyperV_RHEL-9.4.0-20240225.8_x86_64_gen2_hv_netvsc_quick_D240227T172431_2024.02.27T09.24.31 by user legacy\r\n {'access': 'public', 'metadata': {'global.server.legacy.version': '0.69.11', 'global.server.legacy.sha1': '29bf18093', 'global.server.legacy.hostname': 'n010.intlab.redhat.com'}}\r\n [2024-02-29 18:58:12.279230+00:00] : upload FAILURE [2.671 seconds]\r\n DATASET uperf_HyperV_RHEL-9.4.0-20240225.8_x86_64_gen2_hv_netvsc_quick_D240227T172431_2024.02.27T09.24.31 by user legacy\r\n {'message': \"A tarball with the name 'uperf_HyperV_RHEL-9.4.0-20240225.8_x86_64_gen2_hv_netvsc_quick_D240227T172431_2024.02.27T09.24.31' already exists\"}\r\n [2024-02-29 18:59:05.843728+00:00] : upload BEGIN\r\n DATASET uperf_HyperV_RHEL-9.4.0-20240225.8_x86_64_gen2_hv_netvsc_quick_D240227T172431_2024.02.27T09.24.31 by user legacy\r\n {'access': 'public', 'metadata': {'global.server.legacy.version': '0.69.11', 'global.server.legacy.sha1': '29bf18093', 'global.server.legacy.hostname': 'n010.intlab.redhat.com'}}\r\n [2024-02-29 18:59:08.592574+00:00] : upload FAILURE [2.749 seconds]\r\n DATASET uperf_HyperV_RHEL-9.4.0-20240225.8_x86_64_gen2_hv_netvsc_quick_D240227T172431_2024.02.27T09.24.31 by user legacy\r\n {'message': \"A tarball with the name 'uperf_HyperV_RHEL-9.4.0-20240225.8_x86_64_gen2_hv_netvsc_quick_D240227T172431_2024.02.27T09.24.31' already exists\"}\r\nReported 354 audit events:\r\n BEGIN 177\r\n SUCCESS 23\r\n FAILURE 154\r\n```","shortMessageHtmlLink":"Audit log formatter (#3611)"}},{"before":"f8654f3b887e3f94c4fa773fa56ecd9e5be671ef","after":"906a06ad6ff5d6a540974a5b1b2024fe81c3425d","ref":"refs/heads/main","pushedAt":"2024-03-06T01:37:30.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dbutenhof","name":"David Butenhof","path":"/dbutenhof","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61761529?s=80&v=4"},"commit":{"message":"Track and report unpack performance (#3610)\n\nI added a simple server.unpack-perf metadata, which is a JSON block like {\"min\": , \"max\": , \"count\": }, and then played with the report generator to get some statistics.\r\n\r\nI also wrote a report of the Audit table contents to summarize the operations, statuses, and users involved in the Pbench Server.\r\n\r\nThe sample below is for a runlocal, with a few small-ish tarballs. The big catch in deploying this would be that none of the existing datasets will have server.unpack-perf until they're unpacked again, which somewhat reduces the value of the statistics until they get unpacked again (e.g., for TOC or visualize).\r\n\r\nCache report:\r\n 7 datasets currently unpacked, consuming 51.7 MB\r\n 7 datasets have been unpacked a total of 7 times\r\n The least recently used cache was referenced today, fio_rw_2018.02.01T22.40.57\r\n The most recently used cache was referenced today, trafficgen_basic-forwarding-example_tg:trex-profile_pf:forwarding_test.json_ml:5_tt:bs__2019-08-27T14:58:38\r\n The smallest cache is 307.2 kB, linpack_mock_2020.02.28T19.10.55\r\n The biggest cache is 19.6 MB, trafficgen_basic-forwarding-example_tg:trex-profile_pf:forwarding_test.json_ml:5_tt:bs__2019-08-27T14:58:38\r\n The worst compression ratio is 22.156%, uperf_rhel8.1_4.18.0-107.el8_snap4_25gb_virt_2019.06.21T01.28.57\r\n The best compression ratio is 96.834%, pbench-user-benchmark_example-vmstat_2018.10.24T14.38.18\r\n The fastest cache unpack is 0.014 seconds, linpack_mock_2020.02.28T19.10.55\r\n The slowest cache unpack is 0.084 seconds, trafficgen_basic-forwarding-example_tg:trex-profile_pf:forwarding_test.json_ml:5_tt:bs__2019-08-27T14:58:38\r\n The fastest cache unpack streaming rate is 233.226 Mb/second, trafficgen_basic-forwarding-example_tg:trex-profile_pf:forwarding_test.json_ml:5_tt:bs__2019-08-27T14:58:38\r\n The slowest cache unpack streaming rate is 22.228 Mb/second, linpack_mock_2020.02.28T19.10.55\r\n 1 datasets have no unpacked size, 1 are missing reference timestamps, 0 have bad size metadata\r\n 1 datasets are missing unpack metric data, 0 have bad unpack metric data\r\n 1 datasets are missing unpack performance data\r\nAudit logs:\r\n 138 audit log rows for 69 events\r\n 0 unterminated root rows, 0 unmatched terminators\r\n Status summary:\r\n BEGIN 69\r\n SUCCESS 68\r\n FAILURE 1\r\n Operation summary:\r\n template 36\r\n upload 9\r\n cache 7\r\n index 6\r\n apikey 1\r\n update 10\r\n Object type summary:\r\n TEMPLATE 36\r\n DATASET 32\r\n API_KEY 1\r\n Users summary:\r\n BACKGROUND 49\r\n tester 18\r\n testadmin 2","shortMessageHtmlLink":"Track and report unpack performance (#3610)"}},{"before":"c0946eb423206dc02d246728c318266117960265","after":"f8654f3b887e3f94c4fa773fa56ecd9e5be671ef","ref":"refs/heads/main","pushedAt":"2024-02-28T15:50:03.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dbutenhof","name":"David Butenhof","path":"/dbutenhof","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61761529?s=80&v=4"},"commit":{"message":"Expiration date update (#3597)\n\nFix date picker","shortMessageHtmlLink":"Expiration date update (#3597)"}},{"before":null,"after":"9f85a6db9a8fe265e2ad5090787e4dc9e0d32480","ref":"refs/heads/b1.0.1","pushedAt":"2024-02-22T17:33:54.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"webbnh","name":"Webb Scales","path":"/webbnh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7795764?s=80&v=4"},"commit":{"message":"Set branch.name","shortMessageHtmlLink":"Set branch.name"}},{"before":"d6b8f26d9ba36ee755da3a56009d91956082febb","after":"c0946eb423206dc02d246728c318266117960265","ref":"refs/heads/main","pushedAt":"2024-02-21T12:24:26.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dbutenhof","name":"David Butenhof","path":"/dbutenhof","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61761529?s=80&v=4"},"commit":{"message":"Make `contents` API scale (#3609)\n\n* Make `contents` API scale\r\n\r\nPBENCH-1321\r\n\r\nThe `/datasets/{id}/contents` API includes into several unexpectedly expensive\r\nsteps:\r\n\r\n1. Finding the tarball (by MD5 value) within the `ARCHIVE` tree using a `glob`\r\n2. Fully discovering all tarballs within the controller directory\r\n3. Unpacking the tarball into a cache directory using `tar`\r\n4. Building a \"map\" of the contents of the unpacked tarball subtree\r\n\r\nThis PR includes mitigations for all but the `tar` unpack step:\r\n\r\n1. Use the `server.tarball-path` metadata instead of searching the disk\r\n2. Only discover the target tarball rather than the entire controller\r\n3. Skip the \"map\" and evaluate the actual target path within the cache\r\n\r\nFinding a tarball within our 30Tb `ARCHIVE` tree can take many minutes, while\r\nidentifying the controller directory from the tarball path takes a fraction of\r\na second.\r\n\r\nDepending on the number of tarballs within a controller (some have many), full\r\ncontroller discovery has been observed to take half a minute; while populating\r\nonly the target tarball takes a fraction of a second.\r\n\r\nBuilding the map for a large tarball tree can take minutes, whereas discovery\r\nof the actual relative file path within the cache runs at native (Python) file\r\nsystem speeds.","shortMessageHtmlLink":"Make contents API scale (#3609)"}},{"before":"a74911d40c6bd30ee172c86ed30530b04a38dd17","after":"d6b8f26d9ba36ee755da3a56009d91956082febb","ref":"refs/heads/main","pushedAt":"2024-02-20T22:13:56.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dbutenhof","name":"David Butenhof","path":"/dbutenhof","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61761529?s=80&v=4"},"commit":{"message":"Unit testing & review comments (#3608)\n\n* Unit testing & review comments\r\n\r\nPBENCH-1315\r\n\r\nThe index-map fix was submitted without unit tests so we can get it deployed\r\nto resolve the immediate PostgreSQL resource problems. This follow-on adds\r\nunit testing (and some late review comments).\r\n\r\nThis proved an \"interesting\" journey. I found several returns that don't really\r\nmake sense: for example, the old delete/update logic reported a `Sync.update`\r\nfailure as `CONFLICT` rather than `INTERNAL_SERVER_ERROR`. The fixture we use\r\ninstall the Elasticsearch mock response and call the API needs to know whether\r\nto install the mock: it has to be right as either installing the mock and not\r\ncalling it or calling it without the mock will result in failure. The current\r\nlogic around installation of the mock proved difficult to reconcile with the\r\nneed to handle `INTERNAL_SERVER_ERROR` both *before* and *after* the call to\r\nElasticsearch. As a result, I ended up massively refactoring the `query_api`\r\nfixture code to simplify the logic based on a three-state override (neutral,\r\nforce, or suppress) in the new `expect_call` parameter.\r\n\r\nIncidentally, after the production server PostgreSQL recovery, I found that my\r\nreport generator was tripping over datasets which had no operational status: I\r\nsuspect this was due to some hole in intake (although I think that failure to\r\ncreate the `UPLOAD` operational status should have failed the intake, I'm not\r\ngoing to debug that today). I did, however, adjust the report generator to\r\ndetect and report this case gracefully instead of failing with an f-string\r\nformatting error. I also added a summary line of rows, tables, and size for\r\nthe SQL report.","shortMessageHtmlLink":"Unit testing & review comments (#3608)"}},{"before":"aac53dfca0710ed0e9d53a367ea91f8dac0d2a43","after":"89f4241d4bcebaf6d82e4201fdb9618d1acb0f62","ref":"refs/heads/b1.0","pushedAt":"2024-02-05T16:53:50.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"webbnh","name":"Webb Scales","path":"/webbnh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7795764?s=80&v=4"},"commit":{"message":"Update b1.0 (#3607)\n\nBring up to date with the `main` branch.\r\n\r\n---------\r\n\r\nCo-authored-by: David Butenhof \r\nCo-authored-by: MVarshini ","shortMessageHtmlLink":"Update b1.0 (#3607)"}},{"before":"369736b4cd38bafaeddb4ff199c7b1a7cc9b21c7","after":"a74911d40c6bd30ee172c86ed30530b04a38dd17","ref":"refs/heads/main","pushedAt":"2024-02-01T19:48:58.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dbutenhof","name":"David Butenhof","path":"/dbutenhof","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61761529?s=80&v=4"},"commit":{"message":"Remove IndexMap document list (#3606)\n\n* Remove IndexMap document list\r\n\r\nPBENCH-1315\r\n\r\nThe production server, with \"only\" 108,728 indexed datasets (many more still\r\nhaven't been migrated from the passthrough server), currently claims 84.1Gb of\r\nPostgreSQL storage just for the `IndexMap` table. Most of this consists of a\r\nlist of each Opensearch document ID in order to allow using bulk update and\r\ndelete operations to manage the index. This is straining the capacity of our\r\nRDU2 PostgreSQL server.\r\n\r\nAs an alternative, this PR removes the document list and instead of the bulk\r\nupdate and delete operations uses `_delete_by_query` and `_update_by_query`\r\nsearching for documents in the appropriate indices (which we still store in\r\nthe `IndexMap`) by parent dataset resource ID.\r\n\r\nAlong the way, I noticed that (oops) we were missing the `\"authorization\"`\r\nsubdocument in some of our Elasticsearch documents, which would impact the\r\nauthenticated search API behaviors. And I acted on a deprecation warning for\r\na camelCase template keyword by replacing it with a snake_case alternative.","shortMessageHtmlLink":"Remove IndexMap document list (#3606)"}},{"before":"e4e3da3eb6303ff2812e09cd87dbbce1b4ee228f","after":"369736b4cd38bafaeddb4ff199c7b1a7cc9b21c7","ref":"refs/heads/main","pushedAt":"2024-01-29T19:01:27.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dbutenhof","name":"David Butenhof","path":"/dbutenhof","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61761529?s=80&v=4"},"commit":{"message":"Add simple report generator (#3602)\n\n* Add simple report generator\r\n\r\nThis will report on the state of the ARCHIVE, BACKUP, and CACHE on-disk trees\r\nin addition to the state of the SQL database. (I'm going to leave analyzing\r\nand reporting on the Opensearch database for another time, since this is \"off\r\nbooks\" weekend upstream work!)\r\n\r\nThis packages the ad hoc SQL queries I've been doing to monitor the server as\r\na CLI utility, plus some more.\r\n\r\nHere's the output of `pbench-report-generator --all` on the production server:\r\n\r\n```\r\nArchive report:\r\n 117,446 tarballs consuming 21.7 TB\r\n The smallest tarball is 1.0 kB, pbench-user-benchmark__2020.04.03T11.05.44\r\n The biggest tarball is 41.1 GB, uperf_Azure_RHEL-8.10.0-20240116.45_x86_64_gen2_pci_netvsc_quick_D240125T014727_2024.01.25T01.47.28\r\nBackup report:\r\n 117,447 tarballs consuming 21.7 TB\r\nCache report:\r\n 97,464 datasets consuming 45.6 TB\r\n 4 datasets have never been unpacked, 0 are missing reference timestamps, 0 have bad size metadata\r\n The smallest cache is 24.6 kB, pbench-user-benchmark__2020.04.03T11.05.44\r\n The biggest cache is 110.5 GB, trafficgen_RHOSP16.2-RHEL8.3-nrt-OVS-OFFLOAD-PVP-LossTests_tg:trex_r:none_fs:64,128,256,512,1024,1500_nf:1024_fm:si_td:bi_ml:0.002,0.0005,0.0001_tt:bs__2020-12-26T03:16:38\r\n The least recently used cache was referenced Dec 11, specjbb2005__2023.09.22T00.22.28\r\n The most recently used cache was referenced today, uperf_rhel84_4.18.0.277_kernel_10gb_jumbo_2021.01.26T09.51.18\r\nSQL storage report:\r\n Table Rows Storage \r\n -------------------- ---------- ----------\r\n alembic_version 1 57.3 kB\r\n audit 683,922 224.7 MB\r\n datasets 117,449 34.3 MB\r\n templates 12 221.2 kB\r\n server_settings 0 24.6 kB\r\n users 11 81.9 kB\r\n dataset_metadata 352,344 217.9 MB\r\n dataset_operations 340,986 29.1 MB\r\n api_keys 5 81.9 kB\r\n indexmaps 291,510 79.7 GB\r\nOperational states:\r\n UPLOAD states:\r\n OK 117,449\r\n TOOLINDEX states:\r\n READY 106,112\r\n INDEX states:\r\n OK 106,112\r\n FAILED 494\r\n CODE 7: 365 Bad metadata.log file encountered\r\n CODE 1: 128 Operational error while indexing\r\n CODE 12: 1 Unexpected error encountered\r\n READY 10,819\r\n```","shortMessageHtmlLink":"Add simple report generator (#3602)"}},{"before":"eb05b79933c4ec47856263f6519d488c55a16050","after":"e4e3da3eb6303ff2812e09cd87dbbce1b4ee228f","ref":"refs/heads/main","pushedAt":"2024-01-29T18:49:23.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dbutenhof","name":"David Butenhof","path":"/dbutenhof","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61761529?s=80&v=4"},"commit":{"message":"Protect the cache lock better (#3604)\n\n* Protect the cache lock better\r\n\r\nPBENCH-1317\r\n\r\nWe found a case where a cache lock could \"leak\" when an error occurs reading a\r\nfile in the visualize and compare APIs. The file read has now been repackaged\r\nwith a `finally` to be sure the stream is closed and unlocked on error.","shortMessageHtmlLink":"Protect the cache lock better (#3604)"}},{"before":"4a02f97fe4555284eb2383cbc403e9b44ff88f96","after":"eb05b79933c4ec47856263f6519d488c55a16050","ref":"refs/heads/main","pushedAt":"2024-01-26T22:36:18.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dbutenhof","name":"David Butenhof","path":"/dbutenhof","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61761529?s=80&v=4"},"commit":{"message":"Fix unpack cache reclaimer (#3605)\n\nPBENCH-1318\r\n\r\nThe reclaimer defaulted to 20%, which is inappropriate for an unpack reclaim\r\nwhere we want to free just enough for the unpacked dataset size.\r\n\r\nAlso, to help diagnose, add the last referenced cache date to the reclaim log\r\nmessage.","shortMessageHtmlLink":"Fix unpack cache reclaimer (#3605)"}},{"before":"01ce14d1c3d09ba4cecc9d7785b076f640f91fc0","after":"4a02f97fe4555284eb2383cbc403e9b44ff88f96","ref":"refs/heads/main","pushedAt":"2024-01-26T12:27:31.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dbutenhof","name":"David Butenhof","path":"/dbutenhof","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61761529?s=80&v=4"},"commit":{"message":"Move nginx cache into /srv/pbench (#3603)\n\n* Move nginx cache into /srv/pbench\r\n\r\nPBENCH-1316\r\n\r\nOur deployed containerized server maps `/var/lib` (the default NGINX cache\r\nlocation) to `/home`, which has only 26Gb free. Instead, point NGINX cache to\r\nour large Pbench volume at `/srv/pbench/nginx` in order to be able to transfer\r\nlarger datasets.","shortMessageHtmlLink":"Move nginx cache into /srv/pbench (#3603)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEhfpPUQA","startCursor":null,"endCursor":null}},"title":"Activity · distributed-system-analysis/pbench"}