{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":339761085,"defaultBranch":"master","name":"drbd-reactor","ownerLogin":"LINBIT","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2021-02-17T15:06:25.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/6121896?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1715068324.0","currentOid":""},"activityList":{"items":[{"before":"8bb95fe35694d1dfa76422e38fa85dc486d5fc56","after":"07f92d9cc7ef429a19ddd414205db6fda60ce871","ref":"refs/heads/master","pushedAt":"2024-05-08T08:20:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"build: add shell.nix\n\nI had that around for some time. The last missing piece was\ndebian/changelog generation. I used gbp, which is not in nixpkgs and I\ndon't care packaging it. Now I just use \"mini-gbp-dch\" and that is easy\nenough with some shell and awk (build-helpers:mini-gbp-dch.sh).","shortMessageHtmlLink":"build: add shell.nix"}},{"before":"81a9d17744317a76b827ba0cbd29505f96ab221c","after":"8bb95fe35694d1dfa76422e38fa85dc486d5fc56","ref":"refs/heads/master","pushedAt":"2024-05-07T07:50:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"prepare v1.4.1\n\nSigned-off-by: Roland Kammerer ","shortMessageHtmlLink":"prepare v1.4.1"}},{"before":"089b15974195c4cdf16d8c2d32b009aa7463e951","after":"81a9d17744317a76b827ba0cbd29505f96ab221c","ref":"refs/heads/master","pushedAt":"2024-05-06T12:35:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"build: bump drbd-utils to 9.28.0","shortMessageHtmlLink":"build: bump drbd-utils to 9.28.0"}},{"before":"dc14fe95c3f56e11a05473323479aa8f1683f92c","after":"089b15974195c4cdf16d8c2d32b009aa7463e951","ref":"refs/heads/master","pushedAt":"2024-05-06T11:22:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"example: fix warnings in Grafana dashboard\n\nWith Grafana 9, panels which use AngularJS are deprecated. The \"graph\"\npanel, which we use, is one of those panels.\nStarting with Grafana 10, this displays warning messages about the\ndeprecation to the user.\nTo fix this, switch to \"timeseries\" instead of \"graph\" as suggested[0]\nby Grafana.\n\n[0] https://grafana.com/docs/grafana/latest/developers/angular_deprecation/angular-plugins/#plugins-using-angularjs","shortMessageHtmlLink":"example: fix warnings in Grafana dashboard"}},{"before":"db58ccc0c7c954dc2f4cb8812920d3afb4a6e2e1","after":"dc14fe95c3f56e11a05473323479aa8f1683f92c","ref":"refs/heads/master","pushedAt":"2024-04-10T07:11:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"events2: exit reader thread on error\n\nWe saw that when drbdsetup is respawned we get a pipe between\ndrbd-reactor and drbdsetup that is still inoperable. In such a case we\nsee \"Broken pipe (os error32)\" in the logs.\n\nExiting the thread here should be fine. I assume not existing is a\nleftover from when events2 handling was in an early state where\nrespawning was not possible, so we had to keep things running at all\ncosts.\n\nThe idea is that exiting the thread is good enough and that we exit the\nwhole process_events2 function because we also fail in the read loop\nbelow.","shortMessageHtmlLink":"events2: exit reader thread on error"}},{"before":"2b4e7ca963e590078c3904f3225d78e7bb5b748e","after":"db58ccc0c7c954dc2f4cb8812920d3afb4a6e2e1","ref":"refs/heads/master","pushedAt":"2024-03-26T09:55:53.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"events2: wait for drbdsetup command on exit\n\nWe already implemented a kind of \"clean up\" by killing the child process. But\nwe never actually waited on it to exit. This leaves behind a zombie process\nevery time drbdsetup exits unexpectedly.\n\nSo we just add a wait() call on our drop guard: the process should have been\nkilled in any case, so we should not be waiting long.","shortMessageHtmlLink":"events2: wait for drbdsetup command on exit"}},{"before":"fa4baa5f200945bd5578a1a16577feb5ac18359f","after":"2b4e7ca963e590078c3904f3225d78e7bb5b748e","ref":"refs/heads/master","pushedAt":"2024-03-13T07:35:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"drbd-reactor-reload: Disable start limit\n\nSystemd enforces a start limit for all service to ensure failing services\ndo not continuously try to restart without making any progress. This also\napplies to services controlled by a path unit. This is an issue when\na lot of changes happen at once on the monitored path.\n\nThis is exactly what happens with linstor-gateway: LINSTOR creates a lot of\nfiles when starting up, this triggers a lot of instances of the\ndrbd-reactor-reload service, which then runs into the default start limit\nin systemd. This then causes a startup failure, effectively stopping the\npath unit.\n\nTo prevent this, we disable the start limit both on the reload service as\nwell as the path unit. The option on the path unit is only available on\nnewer systemd versions, but systemd ignores unknown options, so this\nshould be fine.\n\nA different solution was considered: implementing the directory watching\nmanually: this would require some manual interaction with inotify: since\nthe necessary crates are not available for PPA building on Ubuntu, we do not\nconsider it further.","shortMessageHtmlLink":"drbd-reactor-reload: Disable start limit"}},{"before":"ce328f40d6686718a81c89db879052f0248a5d07","after":"fa4baa5f200945bd5578a1a16577feb5ac18359f","ref":"refs/heads/master","pushedAt":"2024-02-27T15:44:38.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"rck","name":"Roland Kammerer","path":"/rck","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42089?s=80&v=4"},"commit":{"message":"prometheus: add metric name to HELP line\n\nTelegraf needs an identify after the HELP keyword for prometheus\nimports.","shortMessageHtmlLink":"prometheus: add metric name to HELP line"}},{"before":"fa57e69ac1b7e77bf06c5eeb344dcf282d1e16f7","after":"ce328f40d6686718a81c89db879052f0248a5d07","ref":"refs/heads/master","pushedAt":"2024-01-16T09:10:31.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"plugins: apply clippy lint suggestions","shortMessageHtmlLink":"plugins: apply clippy lint suggestions"}},{"before":"9ee8f1741cd2f071b81ecf6cd9143931ee0d7d88","after":"fa57e69ac1b7e77bf06c5eeb344dcf282d1e16f7","ref":"refs/heads/master","pushedAt":"2024-01-16T08:35:01.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"fix clippy fixes gone wrong\n\nFor some reason clippy got confused when converting a specific set\nof `assert_eq!()` to `assert!()`.\n\nThe removal of a unnecessary conversion also made an assignment unecessary,\nbut clippy was not smart enough to remove it.","shortMessageHtmlLink":"fix clippy fixes gone wrong"}},{"before":"8b64e0936c879150a71bf3840b3e499cbced0837","after":"9ee8f1741cd2f071b81ecf6cd9143931ee0d7d88","ref":"refs/heads/master","pushedAt":"2024-01-12T10:33:17.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"Apply suggestions from clippy \"deny\" configuration","shortMessageHtmlLink":"Apply suggestions from clippy \"deny\" configuration"}},{"before":"9e76084cc06116331ad4a0210aa480ab649cd5c0","after":"8b64e0936c879150a71bf3840b3e499cbced0837","ref":"refs/heads/master","pushedAt":"2023-12-12T08:44:58.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"rck","name":"Roland Kammerer","path":"/rck","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42089?s=80&v=4"},"commit":{"message":"Update README.md\n\nhttps://rustup.sh seems to be a malicious link. https://rustup.rs is the correct link for the tool in question","shortMessageHtmlLink":"Update README.md"}},{"before":"c0b0102332064ddec89d3248bf26621406a2a560","after":"9e76084cc06116331ad4a0210aa480ab649cd5c0","ref":"refs/heads/master","pushedAt":"2023-11-21T12:03:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"prepare v1.4.0\n\nSigned-off-by: Roland Kammerer ","shortMessageHtmlLink":"prepare v1.4.0"}},{"before":"426b6df8612b8f3d3720191d494a98ed20d7d822","after":"c0b0102332064ddec89d3248bf26621406a2a560","ref":"refs/heads/master","pushedAt":"2023-11-08T10:52:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"prepare v1.4.0-rc.1\n\nSigned-off-by: Roland Kammerer ","shortMessageHtmlLink":"prepare v1.4.0-rc.1"}},{"before":"24e45534cf4fb37bdb519970e00354ee10bdf654","after":"426b6df8612b8f3d3720191d494a98ed20d7d822","ref":"refs/heads/master","pushedAt":"2023-11-03T12:24:12.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"ci: fix coverage instrumentation\n\nThis also requires a \"cargo update\"","shortMessageHtmlLink":"ci: fix coverage instrumentation"}},{"before":"92b418d5039316dd51466f733eef7d195189c971","after":"24e45534cf4fb37bdb519970e00354ee10bdf654","ref":"refs/heads/master","pushedAt":"2023-10-31T09:15:33.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"build: bump drbd-utils to 9.26.0","shortMessageHtmlLink":"build: bump drbd-utils to 9.26.0"}},{"before":"88a2350c101e8c2c75ebd7811d87ec154b7189ee","after":"92b418d5039316dd51466f733eef7d195189c971","ref":"refs/heads/master","pushedAt":"2023-10-17T11:02:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"build: add MIB to examples","shortMessageHtmlLink":"build: add MIB to examples"}},{"before":"430e2eedbb339212a6e7a18a1e0b231c1480c5d3","after":"88a2350c101e8c2c75ebd7811d87ec154b7189ee","ref":"refs/heads/master","pushedAt":"2023-10-11T08:02:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"prepare v1.3.0","shortMessageHtmlLink":"prepare v1.3.0"}},{"before":"3c5199bb0401e21751d68162d8d25a06a850a8c0","after":"430e2eedbb339212a6e7a18a1e0b231c1480c5d3","ref":"refs/heads/master","pushedAt":"2023-09-26T08:43:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"prepare v1.3.0-rc.1\n\nSigned-off-by: Roland Kammerer ","shortMessageHtmlLink":"prepare v1.3.0-rc.1"}},{"before":"5e3608cd60af08d5f7da9d5cb4e013672493a477","after":"3c5199bb0401e21751d68162d8d25a06a850a8c0","ref":"refs/heads/master","pushedAt":"2023-09-25T11:23:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"agentx: implement plugin\n\nMost of the work happened in https://crates.io/crates/agentx which also\ngives some pointers to to the protocol involved. In short we can use\nnet-snmp, the de facto standard, and configure it to accept connections\nfrom AgentX conforming sub agents like this one.\n\nThe implementation tries to be rather robust, for example it should\nsurvive disconnections from the snmpd well and will reconnect.","shortMessageHtmlLink":"agentx: implement plugin"}},{"before":"30d8b42962bedd3444329ab1441f094a26b541fb","after":"5e3608cd60af08d5f7da9d5cb4e013672493a477","ref":"refs/heads/master","pushedAt":"2023-06-15T07:37:04.072Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"ci: upgrade virter and vmshed versions","shortMessageHtmlLink":"ci: upgrade virter and vmshed versions"}},{"before":"f85703dae215302df764e0a1456a36a1a2ebc511","after":"30d8b42962bedd3444329ab1441f094a26b541fb","ref":"refs/heads/master","pushedAt":"2023-06-07T14:19:30.481Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"core,daemon: don't start if tty\n\nWe had a case where a user wanted to start \"drbd-reactorctl\", but hit\n after the initial completion too early. This might have\n\"unfortunate\" consequences. On the other hand we want to have the option\nto still start the daemon intentionally for some debugging reasons. This\nis a pretty internal use case, I did not even care to document that\noption, the hints printed should be enough.","shortMessageHtmlLink":"core,daemon: don't start if tty"}},{"before":"39c82c1c324bf1011f34d4acaaf82201cef61727","after":"f85703dae215302df764e0a1456a36a1a2ebc511","ref":"refs/heads/master","pushedAt":"2023-06-07T13:14:05.597Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"core,events2: fix str_to_bool\n\nDRBD has funny \"bools\", and drbd-utils does funny mappings as in:\n\n```\nbool suspended =\n\tresource->info.res_susp ||\n\tresource->info.res_susp_nod ||\n\tresource->info.res_susp_fen ||\n\tresource->info.res_susp_quorum;\n\nprintf(\"{\\n\"\n \" \\\"suspended\\\": %s,\\n\"\n \" \\\"suspended-user\\\": %s,\\n\"\n \" \\\"suspended-no-data\\\": %s,\\n\"\n \" \\\"suspended-fencing\\\": %s,\\n\"\n \" \\\"suspended-quorum\\\": %s,\\n\"\n\n bool2json(suspended),\n bool2json(resource->info.res_susp),\n bool2json(resource->info.res_susp_nod),\n bool2json(resource->info.res_susp_fen),\n bool2json(resource->info.res_susp_quorum),\n```\n\nWhile we could do that, I currently see no need for these details. And we would\nhave to \"parse back\" the string combinations to fill in the details and\ncalculate the \"higher-level bool\" from it. Currently, parsing back different\nsets of states (suspended vs. al-suspended vs. resync-suspended) and keeping\nthem aligned with drbd(-utils) releases does not sound too tempting. For now I\nthink \"fixing\" str_to_bool() should be good enough.","shortMessageHtmlLink":"core,events2: fix str_to_bool"}},{"before":"b27c2b22d1e46ed0eea3116f7682ffcc4aac6029","after":"39c82c1c324bf1011f34d4acaaf82201cef61727","ref":"refs/heads/master","pushedAt":"2023-05-09T06:57:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"prepare v1.2.0\n\nSigned-off-by: Roland Kammerer ","shortMessageHtmlLink":"prepare v1.2.0"}},{"before":"12939cfef45d2f7ebb91b10e6d6345be5548513c","after":"b27c2b22d1e46ed0eea3116f7682ffcc4aac6029","ref":"refs/heads/master","pushedAt":"2023-05-05T12:51:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"ci: remove -l from lbbuildctl invocation\n\nFlag --logs has been deprecated, logs are enabled by default","shortMessageHtmlLink":"ci: remove -l from lbbuildctl invocation"}},{"before":"b9f104e55e4550865b059571e64615c92d0c4c18","after":"12939cfef45d2f7ebb91b10e6d6345be5548513c","ref":"refs/heads/master","pushedAt":"2023-04-25T13:45:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"ocf-rs-wrapper: rm random sleep\n\nAs is this causes problems with older versions of the rand crate (on\nFocal at least). As this isn't very useful in general just ditch it.","shortMessageHtmlLink":"ocf-rs-wrapper: rm random sleep"}},{"before":"c750e4268734abd9ad1d5ad5d12293bf9f9d4511","after":"b9f104e55e4550865b059571e64615c92d0c4c18","ref":"refs/heads/master","pushedAt":"2023-04-25T13:40:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"prepare v1.2.0-rc.1\n\nSigned-off-by: Roland Kammerer ","shortMessageHtmlLink":"prepare v1.2.0-rc.1"}},{"before":"69f7618083d25cbc2918b49c1d0e1e01ab3a8b6a","after":"c750e4268734abd9ad1d5ad5d12293bf9f9d4511","ref":"refs/heads/master","pushedAt":"2023-04-25T08:55:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"plugin: unify starting of plugins\n\nWith some extra imply on the PluginCfg enum, we can clean up the start up logic\nsomewhat, so we only need to loop over what needs to be started without having\nto match on the exact type of plugin.","shortMessageHtmlLink":"plugin: unify starting of plugins"}},{"before":"111a75eda943b88717ebf624840f959e337828c2","after":"69f7618083d25cbc2918b49c1d0e1e01ab3a8b6a","ref":"refs/heads/master","pushedAt":"2023-04-25T07:21:08.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"core,plugins,ctl: deprecate IDs\n\nAs we now have auto generated IDs (i.e., hashes of the configuration) we\ncan deprecate the \"id\" field in the configuration structs. As we want to\nwrite some warning message to the log if \"id\" is set, we can not set it\n\"#[deprecated]\".\n\nThis also touches some bits in drbd-reactorctl to keep it useful without\nthe old manual IDs. While at it, it also improves \"ls\" a bit by\nproviding some additional information if possible like the address of a\nPrometheus plugin, or the start list of a Promoter.","shortMessageHtmlLink":"core,plugins,ctl: deprecate IDs"}},{"before":"0620ff875370ad26a61c149fa6f02a19d66f45cd","after":"111a75eda943b88717ebf624840f959e337828c2","ref":"refs/heads/master","pushedAt":"2023-04-12T09:22:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"ctl: ignore already unmasked targets\n\nDuring eviction, if a resource is already primary on another node before\nthe eviction starts, the service is never masked. During clean-up, we then try\nto unmask the service. Up to now this step failed because the mask file did not\nexist.\n\nThis is fixed by ignoring non-existent mask overrides when unmasking services.","shortMessageHtmlLink":"ctl: ignore already unmasked targets"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAERGCl6QA","startCursor":null,"endCursor":null}},"title":"Activity ยท LINBIT/drbd-reactor"}