| 18 Mar 2025 |
John Ericson | I am happy to redo the file split after your stuff is landed | 18:40:00 |
John Ericson | Also I am unsure whether the cleanup change is correct | 18:40:18 |
John Ericson | because exceptions and things can cause the destructure to run in other cases | 18:40:28 |
Las | If you include that then I think 12668 first is easier because it’s more mechanical. | 18:41:08 |
Las | In reply to @Ericson2314:matrix.org Also I am unsure whether the cleanup change is correct I don’t think it was ever used | 18:41:31 |
Las | Was it? | 18:41:37 |
Las | If you think for a test of it I’ll implement it | 18:42:16 |
Las | * | 18:42:24 |
Las | * | 18:42:31 |
John Ericson | I am not sure, I am just saying that https://github.com/NixOS/nix/pull/12668/commits/ece3823c258e688b329f75886fe04659a2ea6175 is not mechanical | 18:43:32 |
John Ericson | wait | 18:43:50 |
John Ericson | oh it was never called from a destructure | 18:43:58 |
John Ericson | Las: not sure if this is necessary, but if you split the coroutine part at the end of amDone | 18:45:29 |
John Ericson | make two functions on Goal and amDone calls both | 18:45:37 |
John Ericson | then this change can be 100% mechanical | 18:45:47 |
Las | In reply to @Ericson2314:matrix.org Las: not sure if this is necessary, but if you split the coroutine part at the end of amDone You mean the bug workaround? | 18:46:09 |
John Ericson | well the large point is I think we should live review both PRs commit by commit, take commits from each and land them | 18:46:53 |
John Ericson | so interview as necessary | 18:47:00 |
John Ericson | I mean split amDone where cleanup used to be called | 18:47:24 |
John Ericson | amDonePart1 (returns void), amDonePart2 (co_return Done {}) | 18:48:10 |
Las | But why | 18:48:20 |
John Ericson | it might not be necessary, but see it could be important to call worker.removeGoal(shared_from_this()) before putting the goal in an invalid state | 18:49:08 |
John Ericson | it is unclear to me whether it is possible for two threads to be messing with a goal at once | 18:49:24 |
John Ericson | but if the goal is removed from worker, and from waitees/waiters, then I don't think another thread can find the goal very easily | 18:49:50 |
John Ericson | If Robert is busy today, well we at least have the Nix meeting tomorrow | 18:50:11 |
Las | You can’t move around the worker interactions freely because you might mutate the data structures that are being iterated over at the same time | 18:50:38 |
Las | Maybe not an issue there though | 18:50:48 |
Las | Goals are single threaded | 18:51:12 |
Las | Maybe in 2035 Mobile Element will support threads so I can respond it a thread | 18:52:03 |
Las | * | 18:52:12 |