{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":716228772,"defaultBranch":"master","name":"river","ownerLogin":"riverqueue","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2023-11-08T17:43:41.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/136755925?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1717562040.0","currentOid":""},"activityList":{"items":[{"before":"dcc03603044de8eb41d76a245e558ebe4d10f645","after":null,"ref":"refs/heads/bg-client-level-max-attempts-default","pushedAt":"2024-06-05T04:34:00.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"}},{"before":"8edd49c752643248e274667154d57ba7cbae123f","after":"edb42d2a4bf045a02730a5b77cf4ebb7ac35d5e4","ref":"refs/heads/master","pushedAt":"2024-06-05T04:33:59.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"customizable MaxAttempts default value (#383)\n\nThis adds a `MaxAttempts` setting to `Config` to enable the default max\r\nattempts to be customized (instead of the global default\r\n`MaxAttemptsDefault` of 25).\r\n\r\nFixes #381.","shortMessageHtmlLink":"customizable MaxAttempts default value (#383)"}},{"before":"882cc5bcb09fa6f0fceeb687a7903786e7bcf7cb","after":"dcc03603044de8eb41d76a245e558ebe4d10f645","ref":"refs/heads/bg-client-level-max-attempts-default","pushedAt":"2024-06-04T18:22:11.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"customizable MaxAttempts default value\n\nThis adds a `MaxAttempts` setting to `Config` to enable the default max\nattempts to be customized (instead of the global default\n`MaxAttemptsDefault` of 25).\n\nFixes #381.","shortMessageHtmlLink":"customizable MaxAttempts default value"}},{"before":"3e9dd8da6d28449a81102e75a1dd0af506ffa1a4","after":"882cc5bcb09fa6f0fceeb687a7903786e7bcf7cb","ref":"refs/heads/bg-client-level-max-attempts-default","pushedAt":"2024-06-04T18:17:32.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"customizable MaxAttempts default value\n\nThis adds a `MaxAttempts` setting to `Config` to enable the default max\nattempts to be customized (instead of the global default\n`MaxAttemptsDefault` of 25).\n\nFixes #381.","shortMessageHtmlLink":"customizable MaxAttempts default value"}},{"before":null,"after":"3e9dd8da6d28449a81102e75a1dd0af506ffa1a4","ref":"refs/heads/bg-client-level-max-attempts-default","pushedAt":"2024-06-04T18:17:14.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"customizable MaxAttempts default value\n\nThis adds a `MaxAttempts` setting to `Config` to enable the default max\nattempts to be customized (instead of the global default\n`MaxAttemptsDefault` of 25).\n\nFixes #381.","shortMessageHtmlLink":"customizable MaxAttempts default value"}},{"before":"caacd325d099aeb12a28ef7e5c22f40019822745","after":"cfbf8428623d94fcc5aa0943fe04ca54ceb1e9e7","ref":"refs/heads/bg-external-maintenance-on-simpler-svc-interface","pushedAt":"2024-06-04T17:29:39.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"ability to add custom maintenance services to Client\n\nThis exposes an interface for a `rivertype.MaintenanceService`, along\nwith a way to add custom maintenance services to the `Client` using\na new `Config.MaintenanceServices` field.","shortMessageHtmlLink":"ability to add custom maintenance services to Client"}},{"before":"ba856c019870e46e42e1ce10d1455c95dec651b9","after":"caacd325d099aeb12a28ef7e5c22f40019822745","ref":"refs/heads/bg-external-maintenance-on-simpler-svc-interface","pushedAt":"2024-06-04T17:28:41.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"ability to add custom maintenance services to Client\n\nThis exposes an interface for a `rivertype.MaintenanceService`, along\nwith a way to add custom maintenance services to the `Client` using\na new `Config.MaintenanceServices` field.","shortMessageHtmlLink":"ability to add custom maintenance services to Client"}},{"before":"ca345582b2f9bc1abf52283f364361883476fa69","after":"2b1bc9e274bdc8dbbf61b945b3b011af3c3094bd","ref":"refs/heads/bg-extract-common-stuff-from-maintenance-process","pushedAt":"2024-06-04T17:26:00.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"extract shared service logic from maintenance services\n\nThis attempts to simplify the maintenance service interface to make it\nmore suitable for exposing externally. Rather than requiring the\nservices to be a `startstop.Service` and having each service\nindependently reimplement the semantics of start/stop/closed, these\nshared bits are extracted into a `maintenanceServiceWrapper` type.\n\nThe maintenance services themselves only need to fit a simpler\n`MaintenanceService` interface, containing a single method `Run(ctx)`.\nThe wrapper is in charge of fulfilling the `startstop.Service` interface\nand providing common handling for exit scenarios. Maintenance services\nmust run until the provided context is cancelled, and then must exit\npromptly afterward. The wrapper bridges these behaviors to provide a\nblocking `Stop()` that waits until the service has exited.\n\nWhile this has the effect of making maintenance services no longer\nfulfill the `startstop.Service` interface, they also do not need to\nleverage the more complex `startstop.BaseStartStop` type to properly\nfulfill the `Service` interface. This is desirable in terms of\nextensibility and moving toward allowing maintenance processes to be\nconfigured and provided externally, because the only type that _needs_\nto be exposed here is the `MaintenanceService` interface.\n\nExternal libraries can provide additional services which implement that\none method, and which can then take advantage of being able to run only\non the elected leader with automatic start/stop.\n\nThis also has the effect of removing the ability of maintenance services\nto surface an `error` when attempting to start them, however I think\nthis might be a good change. We weren't leveraging this yet anywhere,\nand I also don't think there's anything useful we could do with these\nreturned errors other than log them. We can still attempt to restart a\nprematurely exited service if we wish to do so, though at that point the\nservice is not properly implemented.\n\nIndividual services also do not need to concern themselves with details\nlike `StaggerStartupDisable` because this is now implemented in the\nwrapper.","shortMessageHtmlLink":"extract shared service logic from maintenance services"}},{"before":"41c1e631b1aa586ef0431f2a0b036080116909a5","after":"65d7995a482c69720d7ce3e2ad9dd8964c2e3ec2","ref":"refs/heads/bg-completer-doesnt-need-subscribe-mutex","pushedAt":"2024-06-04T16:43:39.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"extract Client subscriptions into service\n\nThis change extracts the Client subscriptions logic into a separate\n`startstop.Service` which can be started and stopped along with the\nother services. The important change that enables this is switching from\na _callback_ for job events to a _channel_ for job events. The channel\nis passed to the completer during init, and the completer then owns it\nas the sole sender. When the completer is stopped, it must close the\nchannel to indicate that there are no more job completion events to be\nprocessed.\n\nThis moves us closer to having all the key client services be able to\nbe managed as a single pool of services, and they can all have their\nshutdown initiated in parallel. Importantly, this paves the way for\nadditional services to be added (even by external libraries) without\nneeding to deal with more complex startup & shutdown ordering scenarios.\n\nIn order to make this work with a client that can be started and stopped\nrepeatedly, a new `ResetSubscribeChan` method was added to the\n`JobCompleter` interface to be called at the beginning of each\n`Client.Start()` call.","shortMessageHtmlLink":"extract Client subscriptions into service"}},{"before":"57d4c036bda6b03c0db6f3398703772e990051dc","after":"41c1e631b1aa586ef0431f2a0b036080116909a5","ref":"refs/heads/bg-completer-doesnt-need-subscribe-mutex","pushedAt":"2024-06-03T16:50:48.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"extract Client subscriptions into service\n\nThis change extracts the Client subscriptions logic into a separate\n`startstop.Service` which can be started and stopped along with the\nother services. The important change that enables this is switching from\na _callback_ for job events to a _channel_ for job events. The channel\nis passed to the completer during init, and the completer then owns it\nas the sole sender. When the completer is stopped, it must close the\nchannel to indicate that there are no more job completion events to be\nprocessed.\n\nThis moves us closer to having all the key client services be able to\nbe managed as a single pool of services, and they can all have their\nshutdown initiated in parallel. Importantly, this paves the way for\nadditional services to be added (even by external libraries) without\nneeding to deal with more complex startup & shutdown ordering scenarios.\n\nIn order to make this work with a client that can be started and stopped\nrepeatedly, a new `ResetSubscribeChan` method was added to the\n`JobCompleter` interface to be called at the beginning of each\n`Client.Start()` call.","shortMessageHtmlLink":"extract Client subscriptions into service"}},{"before":"9bd4062bb4efc3fd32a6290f09dfb8a9f8ee9f86","after":"0f44f2bb045868dc1045ed7c9604679a3c6090f8","ref":"refs/heads/bg-broken-test-stop-and-cancel-after-stop","pushedAt":"2024-06-03T16:19:30.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"refactor StopAndCancel tests","shortMessageHtmlLink":"refactor StopAndCancel tests"}},{"before":"98bf5a1bc4b78053cd84d368c49cb69bf7872a23","after":"9bd4062bb4efc3fd32a6290f09dfb8a9f8ee9f86","ref":"refs/heads/bg-broken-test-stop-and-cancel-after-stop","pushedAt":"2024-06-03T15:50:28.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"refactor StopAndCancel tests","shortMessageHtmlLink":"refactor StopAndCancel tests"}},{"before":"be91b7e819065bbeff92c27e7b0adb458026253a","after":"98bf5a1bc4b78053cd84d368c49cb69bf7872a23","ref":"refs/heads/bg-broken-test-stop-and-cancel-after-stop","pushedAt":"2024-06-03T15:50:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"refactor StopAndCancel tests","shortMessageHtmlLink":"refactor StopAndCancel tests"}},{"before":"b2161d571e958097f77b348dea9b87c729eea0d4","after":null,"ref":"refs/heads/brandur-improve-insert-only-docs","pushedAt":"2024-06-03T13:57:31.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"brandur","name":"Brandur Leach","path":"/brandur","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/96890?s=80&v=4"}},{"before":"15a515bb778c2cc6424d9920b41ef9f4b8de3ffa","after":"8edd49c752643248e274667154d57ba7cbae123f","ref":"refs/heads/master","pushedAt":"2024-06-03T13:57:30.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"brandur","name":"Brandur Leach","path":"/brandur","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/96890?s=80&v=4"},"commit":{"message":"Improve documentation for insert-only clients (#375)\n\nTry to address #371 in that it's currently too hard to discover that an\r\ninsert-only client is possible, and how to initialize one. There is some\r\ndocumentation on the `Queues` variable, but it's not that easy to find.\r\n\r\nHere, add docs in a few other places under the principle that some docs\r\nrepetition isn't the worse thing in that it helps make these concepts\r\nmore obvious to find. We put docs in the README and package docs (which\r\nmirror each other), along with some on the `river.Config` struct.\r\n\r\nFixes #371.","shortMessageHtmlLink":"Improve documentation for insert-only clients (#375)"}},{"before":"c2f7956eca02c13cf3d1614c1da4ede1b51be317","after":null,"ref":"refs/heads/bg-always-a-completer-if-running-jobs","pushedAt":"2024-06-03T13:55:30.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"}},{"before":"d2709159cb946e2f379535328cee603aac5fa12e","after":"15a515bb778c2cc6424d9920b41ef9f4b8de3ffa","ref":"refs/heads/master","pushedAt":"2024-06-03T13:55:28.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"remove unnecessary completer nil check (#377)\n\n* remove unnecessary completer nil check\r\n\r\nThe completer must always be non-nil when starting a client (working\r\njobs). The prior check for `willExecuteJobs` provides the required\r\nsafety without this additional nil check.\r\n\r\n* simplify QueueEventCallback propagation\r\n\r\nDon't need a redundant closure here to wrap the callback function.","shortMessageHtmlLink":"remove unnecessary completer nil check (#377)"}},{"before":"980bf1986ae55e3bb3916ce5cc241f9db2f7c652","after":"57d4c036bda6b03c0db6f3398703772e990051dc","ref":"refs/heads/bg-completer-doesnt-need-subscribe-mutex","pushedAt":"2024-05-31T15:26:14.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"extract Client subscriptions into service\n\nThis change extracts the Client subscriptions logic into a separate\n`startstop.Service` which can be started and stopped along with the\nother services. The important change that enables this is switching from\na _callback_ for job events to a _channel_ for job events. The channel\nis passed to the completer during init, and the completer then owns it\nas the sole sender. When the completer is stopped, it must close the\nchannel to indicate that there are no more job completion events to be\nprocessed.\n\nThis moves us closer to having all the key client services be able to\nbe managed as a single pool of services, and they can all have their\nshutdown initiated in parallel. Importantly, this paves the way for\nadditional services to be added (even by external libraries) without\nneeding to deal with more complex startup & shutdown ordering scenarios.\n\nIn order to make this work with a client that can be started and stopped\nrepeatedly, a new `ResetSubscribeChan` method was added to the\n`JobCompleter` interface to be called at the beginning of each\n`Client.Start()` call.","shortMessageHtmlLink":"extract Client subscriptions into service"}},{"before":"1f71d96bd82c131a5c57bb0f896d2f5d3dbbdf30","after":"980bf1986ae55e3bb3916ce5cc241f9db2f7c652","ref":"refs/heads/bg-completer-doesnt-need-subscribe-mutex","pushedAt":"2024-05-31T15:16:21.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"extract Client subscriptions into service\n\nThis change extracts the Client subscriptions logic into a separate\n`startstop.Service` which can be started and stopped along with the\nother services. The important change that enables this is switching from\na _callback_ for job events to a _channel_ for job events. The channel\nis passed to the completer during init, and the completer then owns it\nas the sole sender. When the completer is stopped, it must close the\nchannel to indicate that there are no more job completion events to be\nprocessed.\n\nThis moves us closer to having all the key client services be able to\nbe managed as a single pool of services, and they can all have their\nshutdown initiated in parallel. Importantly, this paves the way for\nadditional services to be added (even by external libraries) without\nneeding to deal with more complex startup & shutdown ordering scenarios.\n\nIn order to make this work with a client that can be started and stopped\nrepeatedly, a new `ResetSubscribeChan` method was added to the\n`JobCompleter` interface to be called at the beginning of each\n`Client.Start()` call.","shortMessageHtmlLink":"extract Client subscriptions into service"}},{"before":"8dc38c52a076eacb0357e7b340e536e97317cf02","after":"1f71d96bd82c131a5c57bb0f896d2f5d3dbbdf30","ref":"refs/heads/bg-completer-doesnt-need-subscribe-mutex","pushedAt":"2024-05-31T15:14:54.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"extract Client subscriptions into service\n\nThis change extracts the Client subscriptions logic into a separate\n`startstop.Service` which can be started and stopped along with the\nother services. The important change that enables this is switching from\na _callback_ for job events to a _channel_ for job events. The channel\nis passed to the completer during init, and the completer then owns it\nas the sole sender. When the completer is stopped, it must close the\nchannel to indicate that there are no more job completion events to be\nprocessed.\n\nThis moves us closer to having all the key client services be able to\nbe managed as a single pool of services, and they can all have their\nshutdown initiated in parallel. Importantly, this paves the way for\nadditional services to be added (even by external libraries) without\nneeding to deal with more complex startup & shutdown ordering scenarios.\n\nIn order to make this work with a client that can be started and stopped\nrepeatedly, a new `ResetSubscribeChan` method was added to the\n`JobCompleter` interface to be called at the beginning of each\n`Client.Start()` call.","shortMessageHtmlLink":"extract Client subscriptions into service"}},{"before":"2c18e0c3173f43156b1f4a578b064390f7347a56","after":"8dc38c52a076eacb0357e7b340e536e97317cf02","ref":"refs/heads/bg-completer-doesnt-need-subscribe-mutex","pushedAt":"2024-05-31T15:11:47.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"extract Client subscriptions into service\n\nThis change extracts the Client subscriptions logic into a separate\n`startstop.Service` which can be started and stopped along with the\nother services. The important change that enables this is switching from\na _callback_ for job events to a _channel_ for job events. The channel\nis passed to the completer during init, and the completer then owns it\nas the sole sender. When the completer is stopped, it must close the\nchannel to indicate that there are no more job completion events to be\nprocessed.\n\nThis moves us closer to having all the key client services be able to\nbe managed as a single pool of services, and they can all have their\nshutdown initiated in parallel. Importantly, this paves the way for\nadditional services to be added (even by external libraries) without\nneeding to deal with more complex startup & shutdown ordering scenarios.\n\nIn order to make this work with a client that can be started and stopped\nrepeatedly, a new `ResetSubscribeChan` method was added to the\n`JobCompleter` interface to be called at the beginning of each\n`Client.Start()` call.","shortMessageHtmlLink":"extract Client subscriptions into service"}},{"before":"e5bfb62664066c27538f33e511c834112aa843d1","after":"2c18e0c3173f43156b1f4a578b064390f7347a56","ref":"refs/heads/bg-completer-doesnt-need-subscribe-mutex","pushedAt":"2024-05-31T02:03:11.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"extract Client subscriptions into service\n\nThis change extracts the Client subscriptions logic into a separate\n`startstop.Service` which can be started and stopped along with the\nother services. The important change that enables this is switching from\na _callback_ for job events to a _channel_ for job events. The channel\nis passed to the completer during init, and the completer then owns it\nas the sole sender. When the completer is stopped, it must close the\nchannel to indicate that there are no more job completion events to be\nprocessed.\n\nThis moves us closer to having all the key client services be able to\nbe managed as a single pool of services, and they can all have their\nshutdown initiated in parallel. Importantly, this paves the way for\nadditional services to be added (even by external libraries) without\nneeding to deal with more complex startup & shutdown ordering scenarios.","shortMessageHtmlLink":"extract Client subscriptions into service"}},{"before":"7984404f70ae85acb6a18a44625a3bae35c1f983","after":"e5bfb62664066c27538f33e511c834112aa843d1","ref":"refs/heads/bg-completer-doesnt-need-subscribe-mutex","pushedAt":"2024-05-31T01:13:30.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"extract Client subscriptions into service\n\nThis change extracts the Client subscriptions logic into a separate\n`startstop.Service` which can be started and stopped along with the\nother services. The important change that enables this is switching from\na _callback_ for job events to a _channel_ for job events. The channel\nis passed to the completer during init, and the completer then owns it\nas the sole sender. When the completer is stopped, it must close the\nchannel to indicate that there are no more job completion events to be\nprocessed.\n\nThis moves us closer to having all the key client services be able to\nbe managed as a single pool of services, and they can all have their\nshutdown initiated in parallel. Importantly, this paves the way for\nadditional services to be added (even by external libraries) without\nneeding to deal with more complex startup & shutdown ordering scenarios.","shortMessageHtmlLink":"extract Client subscriptions into service"}},{"before":"6cf7b203b4564916a9a4075489073728562df9a2","after":"7984404f70ae85acb6a18a44625a3bae35c1f983","ref":"refs/heads/bg-completer-doesnt-need-subscribe-mutex","pushedAt":"2024-05-31T01:12:26.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"extract Client subscriptions into service\n\nThis change extracts the Client subscriptions logic into a separate\n`startstop.Service` which can be started and stopped along with the\nother services. The important change that enables this is switching from\na _callback_ for job events to a _channel_ for job events. The channel\nis passed to the completer during init, and the completer then owns it\nas the sole sender. When the completer is stopped, it must close the\nchannel to indicate that there are no more job completion events to be\nprocessed.\n\nThis moves us closer to having all the key client services be able to\nbe managed as a single pool of services, and they can all have their\nshutdown initiated in parallel. Importantly, this paves the way for\nadditional services to be added (even by external libraries) without\nneeding to deal with more complex startup & shutdown ordering scenarios.","shortMessageHtmlLink":"extract Client subscriptions into service"}},{"before":"06dc1eae6c981b53c0b237ca6a9927d4946357d4","after":"6cf7b203b4564916a9a4075489073728562df9a2","ref":"refs/heads/bg-completer-doesnt-need-subscribe-mutex","pushedAt":"2024-05-31T01:11:51.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"extract Client subscriptions into service\n\nThis change extracts the Client subscriptions logic into a separate\n`startstop.Service` which can be started and stopped along with the\nother services. The important change that enables this is switching from\na _callback_ for job events to a _channel_ for job events. The channel\nis passed to the completer during init, and the completer then owns it\nas the sole sender. When the completer is stopped, it must close the\nchannel to indicate that there are no more job completion events to be\nprocessed.\n\nThis moves us closer to having all the key client services be able to\nbe managed as a single pool of services, and they can all have their\nshutdown initiated in parallel. Importantly, this paves the way for\nadditional services to be added (even by external libraries) without\nneeding to deal with more complex startup & shutdown ordering scenarios.","shortMessageHtmlLink":"extract Client subscriptions into service"}},{"before":null,"after":"06dc1eae6c981b53c0b237ca6a9927d4946357d4","ref":"refs/heads/bg-completer-doesnt-need-subscribe-mutex","pushedAt":"2024-05-30T20:16:23.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"extract Client subscriptions into service\n\nThis change extracts the Client subscriptions logic into a separate\n`startstop.Service` which can be started and stopped along with the\nother services. The important change that enables this is switching from\na _callback_ for job events to a _channel_ for job events. The channel\nis passed to the completer during init, and the completer then owns it\nas the sole sender. When the completer is stopped, it must close the\nchannel to indicate that there are no more job completion events to be\nprocessed.\n\nThis moves us closer to having all the key client services be able to\nbe managed as a single pool of services, and they can all have their\nshutdown initiated in parallel. Importantly, this paves the way for\nadditional services to be added (even by external libraries) without\nneeding to deal with more complex startup & shutdown ordering scenarios.","shortMessageHtmlLink":"extract Client subscriptions into service"}},{"before":"267713901f52cd271aa364b8ba0be55594538a96","after":"c2f7956eca02c13cf3d1614c1da4ede1b51be317","ref":"refs/heads/bg-always-a-completer-if-running-jobs","pushedAt":"2024-05-30T20:15:42.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"simplify QueueEventCallback propagation\n\nDon't need a redundant closure here to wrap the callback function.","shortMessageHtmlLink":"simplify QueueEventCallback propagation"}},{"before":"30c3d0bfa2f5d4beaa5b4f0de5174e0c474d6ace","after":"be91b7e819065bbeff92c27e7b0adb458026253a","ref":"refs/heads/bg-broken-test-stop-and-cancel-after-stop","pushedAt":"2024-05-30T20:14:18.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"fix StopAndTest after ongoing Stop\n\nThis regression was introduced in #272, which I noticed because our demo\napp is not currently cancelling active jobs gracefully before exiting.\n\nThis commit fixes the behavior by always cancelling the work context\nupon `StopAndCancel()`, regardless of whether or not another shutdown is\nin progress.","shortMessageHtmlLink":"fix StopAndTest after ongoing Stop"}},{"before":"23a3960cd10462f9670f883e472ab19ad0b63306","after":"30c3d0bfa2f5d4beaa5b4f0de5174e0c474d6ace","ref":"refs/heads/bg-broken-test-stop-and-cancel-after-stop","pushedAt":"2024-05-30T20:12:04.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"fix StopAndTest after ongoing Stop\n\nThis regression was introduced in #272, which I noticed because our demo\napp is not currently cancelling active jobs gracefully before exiting.\n\nThis commit fixes the behavior by always cancelling the work context\nupon `StopAndCancel()`, regardless of whether or not another shutdown is\nin progress.","shortMessageHtmlLink":"fix StopAndTest after ongoing Stop"}},{"before":"d6053197ed3ae1783d74b9b682e28afebd6f0a1d","after":"23a3960cd10462f9670f883e472ab19ad0b63306","ref":"refs/heads/bg-broken-test-stop-and-cancel-after-stop","pushedAt":"2024-05-30T20:11:28.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"bgentry","name":"Blake Gentry","path":"/bgentry","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/114033?s=80&v=4"},"commit":{"message":"fix StopAndTest after ongoing Stop\n\nThis regression was introduced in #272, which I noticed because our demo\napp is not currently cancelling active jobs gracefully before exiting.\n\nThis commit fixes the behavior by always cancelling the work context\nupon `StopAndCancel()`, regardless of whether or not another shutdown is\nin progress.","shortMessageHtmlLink":"fix StopAndTest after ongoing Stop"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEXLBaBwA","startCursor":null,"endCursor":null}},"title":"Activity ยท riverqueue/river"}