{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":818655844,"defaultBranch":"main","name":"poolparty","ownerLogin":"JuxhinDB","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2024-06-22T13:17:03.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/8005101?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1726602004.0","currentOid":""},"activityList":{"items":[{"before":"68acc092f7da8b642b2471efe061b7ae34eff666","after":"5b413a9d5c7ad0889025879382f369e3c5fbb2b0","ref":"refs/heads/main","pushedAt":"2024-09-19T19:46:07.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"misc: update examples to new interface\n\nMinor fix to how worker ids were being generated during\nspawn which was causing `n-1` workers to drop as soon as\nthey were spawned due to have the same id (thus being\noverwritten in the `BoundedBTreeMap`).","shortMessageHtmlLink":"misc: update examples to new interface"}},{"before":"4eef9620c3833663b51c3831293065422bfcbcc3","after":"68acc092f7da8b642b2471efe061b7ae34eff666","ref":"refs/heads/main","pushedAt":"2024-09-18T20:35:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"misc: adding `BoundedBTreeMap` and cleaning up spawning\n\nStill WIP, but wanted to introduce bounded maps to ensure\nthat thereis no way to exceed the pool limit. The design\nquestion that we have right now is that we have the `pool`\ncontaining all the workers ready to take a task and the\n`checked` with all the workers currently in a non-`Idle`\nstate. This means that we _still_ need to perform bound\nchecks when spawning across both maps.\n\nOne solution may be to merge the two into a single map and\nadd a flag to the `WorkerCtx` indicating if a worker is\ncurrently checked in or not.","shortMessageHtmlLink":"misc: adding BoundedBTreeMap and cleaning up spawning"}},{"before":null,"after":"49e79f8c0721ccf3f45aaaa2191dd1ad8fdc5a0d","ref":"refs/heads/potential-refactor","pushedAt":"2024-09-17T19:40:04.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"misc: initial message refactor","shortMessageHtmlLink":"misc: initial message refactor"}},{"before":"d2b9974caf32f03afae43b3ed523533e81dc7fd7","after":"4eef9620c3833663b51c3831293065422bfcbcc3","ref":"refs/heads/main","pushedAt":"2024-09-13T16:14:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"misc: small cleanup just slowly getting back","shortMessageHtmlLink":"misc: small cleanup just slowly getting back"}},{"before":"efa4576256cfe43ee680289d675f54cf81412121","after":"d2b9974caf32f03afae43b3ed523533e81dc7fd7","ref":"refs/heads/main","pushedAt":"2024-08-23T16:01:16.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"misc: minor updates to README.md","shortMessageHtmlLink":"misc: minor updates to README.md"}},{"before":"1a3b2528165e04b3eff23a814acda58623796dce","after":"efa4576256cfe43ee680289d675f54cf81412121","ref":"refs/heads/main","pushedAt":"2024-08-22T20:03:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"fix: url-fetcher input handling\n\nPrevious implementation was restarting the supervisor\non each result received. Not smart.","shortMessageHtmlLink":"fix: url-fetcher input handling"}},{"before":"b7b8bec15ce9f0b0d5568d05f10f3c6437bc5e14","after":"1a3b2528165e04b3eff23a814acda58623796dce","ref":"refs/heads/main","pushedAt":"2024-08-21T16:07:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"misc: move results buffer out of supervisor ownership\n\nDealing with shared access has been a pain. For the time being in order\nto ensure ownership, the supervisor accepts a reference to the buffer\nthat is created by clients.\n\nIn the future I'd like to make this internal and expose it to clients\nwithout worrying about locks/ownership.","shortMessageHtmlLink":"misc: move results buffer out of supervisor ownership"}},{"before":"dde4a6db05e1148afe5f3425773f3a58b8c765c7","after":"b7b8bec15ce9f0b0d5568d05f10f3c6437bc5e14","ref":"refs/heads/main","pushedAt":"2024-08-20T20:01:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"misc: first half-baked attempt at view structs\n\nVery much work in progress, likely not the final solution.\n\nSee:\nhttps://smallcultfollowing.com/babysteps/blog/2018/11/01/after-nll-interprocedural-conflicts/#factoring-as-a-possible-fix\n\nSee:\nhttps://users.rust-lang.org/t/how-to-safely-access-mutable-and-immutable-disjoint-fields/116288/3","shortMessageHtmlLink":"misc: first half-baked attempt at view structs"}},{"before":"cf1eed935374102e9d487b9d873ae21dea807e5e","after":"dde4a6db05e1148afe5f3425773f3a58b8c765c7","ref":"refs/heads/main","pushedAt":"2024-08-20T18:04:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"misc: break url-fetcher example\n\nTrying to figure out how to support `supervisor.run()` and\n`supervisor.results.recv()` simultaneously given that the\nformer takes `&mut self`.\n\nPin projection leaks the dependency to clients which I do\nnot want. Mutex locking is not ideal and makes things\nunergonomic.","shortMessageHtmlLink":"misc: break url-fetcher example"}},{"before":"fce2b9ffb6997f72022c1079df220c5b9f4b5c17","after":"cf1eed935374102e9d487b9d873ae21dea807e5e","ref":"refs/heads/main","pushedAt":"2024-08-19T18:26:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"misc: initial work in results buffer\n\nAdded a `RingBuffer` that aims to propagate worker results to the\nclient.\n\nThe current pending issue is the move semantics, as in a typical\nuse-case you would need to support both `Supervisor::run` and\n`RingBuffer::recv` simulatensouly (former requires &mut self which\nimpedes this).","shortMessageHtmlLink":"misc: initial work in results buffer"}},{"before":"a28ed5d77e7500e5f1f812525f065c180bc55325","after":"fce2b9ffb6997f72022c1079df220c5b9f4b5c17","ref":"refs/heads/main","pushedAt":"2024-08-16T17:23:12.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"misc: improve url-fetcher example\n\nMake input fetching async such that we can run the\nsupervisor async without blocking the executor.","shortMessageHtmlLink":"misc: improve url-fetcher example"}},{"before":"c7c278930941325e39d03a9274ae177dc6c1c30d","after":"a28ed5d77e7500e5f1f812525f065c180bc55325","ref":"refs/heads/main","pushedAt":"2024-08-12T15:45:13.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"misc: rewrite url fetch example\n\nStill work-in-progress, the `url-fetch` example is rewritten\nto better highlight the pooling capabilities.\n\nMultiple other miscellaneous changes.","shortMessageHtmlLink":"misc: rewrite url fetch example"}},{"before":"850217fc049c4b4d194b5e4518f8a6d06a03f019","after":"c7c278930941325e39d03a9274ae177dc6c1c30d","ref":"refs/heads/main","pushedAt":"2024-08-07T19:11:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"refactor project layout and add example\n\nstarting to add a simple use-case to be solved\nby poolparty. the goal being to discover anti-patterns\nor constraints to overcome.\n\n* `Supervisor::enqueue` was not flexible enough as\n it required the caller having `&mut Supervisor`. for\n the time being I'm simply exposing the internal\n queue tx/rx to emit tasks to\n\n* refactored the project layout to better allow for\n inclusion of examples without polluting the lib.rs\n\n* started adding a url fetcher example with ratatui. still\n very much a wip and needs to be rewritten to use async\n ratatui to better work with the supervisor. overall it's\n making some progress, but there are some api design changes\n that need to be made around `Workable` trait to make it\n more complete.","shortMessageHtmlLink":"refactor project layout and add example"}},{"before":"1ee066fa07969bf8d9d64f32a4a9629f6b7cb9ba","after":"850217fc049c4b4d194b5e4518f8a6d06a03f019","ref":"refs/heads/main","pushedAt":"2024-08-04T20:02:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"misc: missing comment","shortMessageHtmlLink":"misc: missing comment"}},{"before":"8c262418e816dcc92d6c8af48c0eb2a4f00aa2db","after":"1ee066fa07969bf8d9d64f32a4a9629f6b7cb9ba","ref":"refs/heads/main","pushedAt":"2024-08-04T19:57:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"misc: refactor supervisor shutdown\n\nrather than relying on joinset/joinhandle we emit\n`Shutdown` messages and wait for `ShutdownAck`\nacknowledgements from all workers (both pooled and\nchecked workers).\n\nThis is done in anticipation of supporting workers\nthat are not on the same binary as the supervisor\n(i.e., running as tasks) but can be elsewhere, such\nas a different network.","shortMessageHtmlLink":"misc: refactor supervisor shutdown"}},{"before":"386e64f1da50691e3419af28898ea78a6bbdfd6d","after":"8c262418e816dcc92d6c8af48c0eb2a4f00aa2db","ref":"refs/heads/main","pushedAt":"2024-08-02T19:31:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"back from medical leave\n\njust tring to get back into\nthe groove of things. fixed\nupper bound on worker capacity\nand added a multi-worker test\ncase","shortMessageHtmlLink":"back from medical leave"}},{"before":"a063866a309875db0c452d3c91a2ecb166038705","after":"386e64f1da50691e3419af28898ea78a6bbdfd6d","ref":"refs/heads/main","pushedAt":"2024-07-23T15:48:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"misc: simplify worker loop\n\n- Make `Task` require `Clone` to get around move\n issues temporarily.\n- Add failure worker test\n- Add some `tx` to workers to send responses back\n to supervisor","shortMessageHtmlLink":"misc: simplify worker loop"}},{"before":"d384d836eee059adb11d4944e5dcbd654f00e51d","after":"a063866a309875db0c452d3c91a2ecb166038705","ref":"refs/heads/main","pushedAt":"2024-07-22T16:14:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"misc: clean up small parts","shortMessageHtmlLink":"misc: clean up small parts"}},{"before":"140a74496d9a04146ec2c12922febf865e204937","after":"d384d836eee059adb11d4944e5dcbd654f00e51d","ref":"refs/heads/main","pushedAt":"2024-07-21T13:41:51.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"misc: add basic shutdown signal","shortMessageHtmlLink":"misc: add basic shutdown signal"}},{"before":"3f6c2637c7c9f0687462741c81cd0723b3b0679e","after":"140a74496d9a04146ec2c12922febf865e204937","ref":"refs/heads/main","pushedAt":"2024-07-14T14:47:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"incorporate basic worker fsm\n\nThe worker fsm is designed to prevent the worker from\neither getting caught in a loop or accepting more tasks\nthan it should at any given time.\n\nThe goal is to also allow Worker(s) to remain in a suspended\nstate once something goes wrong, delegating control to the\nsupervisor to determine if it should restart the worker or\nnot, for the same task.\n\nIt's still very much wip, there's a lot I don't like about\nthis design, but the client interface is getting closer to\nwhat I'm expecting it to be -- a simple implementation of\na worker against a task with some context, which you wrap\nin a `Worker` such that it can be input as part of the\nsupervisor pool.","shortMessageHtmlLink":"incorporate basic worker fsm"}},{"before":"b471b567325a6ab4a3705ec6b7e8e3136bcc9d88","after":"3f6c2637c7c9f0687462741c81cd0723b3b0679e","ref":"refs/heads/main","pushedAt":"2024-07-13T17:55:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"wip: worker state machine\n\nInitial ideas on how to embed state machine\ninside of workers. This is still WIP and very\nlikely to change significantly.\n\nThe goals are to abstract the state entirely\nfrom the implementer, which is used to run\nthe main eval loop and messages.","shortMessageHtmlLink":"wip: worker state machine"}},{"before":"9931b75bfca84a9110c8f4392588507f03165276","after":"b471b567325a6ab4a3705ec6b7e8e3136bcc9d88","ref":"refs/heads/main","pushedAt":"2024-07-12T19:44:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"misc: move to tokio","shortMessageHtmlLink":"misc: move to tokio"}},{"before":"3668fbc6664be2fca219b29a5acfd384085d0f16","after":"9931b75bfca84a9110c8f4392588507f03165276","ref":"refs/heads/main","pushedAt":"2024-07-07T19:59:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"misc: rework yet again\n\nMove away from central broadcast bust back to\na dedicated channel between supervisor/worker.\n\nThis more closely emulates poolboy's impl and\nsimplifies communication (at the cost of more\nupfront complexity).","shortMessageHtmlLink":"misc: rework yet again"}},{"before":"fce2e0e96420fa535e13f389468cfa02295d4d90","after":"3668fbc6664be2fca219b29a5acfd384085d0f16","ref":"refs/heads/main","pushedAt":"2024-07-05T21:45:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"misc: update supervisor and worker structure\n\nA number of changes to how workers are spawned and\nhandled by the supervisor. Currently the worker pool\nis pre-allocated with long-lived workers, rather than\nshort-lived workers that run for a single task. This\ndesign choice aims to follow Erlang's poolboy impl\nmore closely.\n\n- adjusted workers to spawn in background thread\n- adjust workers and supervisor to user `bus::Bus`,\n which is currently just a simple wrapper around\n `crossbeam::channel`. The aim being to act as a\n broadcast channel between supervisor and workers.\n\n in the future this will likely change to adopt\n something closer to erlang's message-passing where\n spawning provides us with a pid, to which the\n supervisor can send messages directly to (i.e.,\n via mpsc). this would require some structural\n changes in order for the supervisor to maintain\n additional worker state","shortMessageHtmlLink":"misc: update supervisor and worker structure"}},{"before":"dfc1ebe1aacdb5e9ed4fad70ad5c81ef08d67939","after":"fce2e0e96420fa535e13f389468cfa02295d4d90","ref":"refs/heads/main","pushedAt":"2024-06-23T19:08:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"misc: initial terrible attempt","shortMessageHtmlLink":"misc: initial terrible attempt"}},{"before":null,"after":"dfc1ebe1aacdb5e9ed4fad70ad5c81ef08d67939","ref":"refs/heads/main","pushedAt":"2024-06-22T13:17:03.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"JuxhinDB","name":"Juxhin","path":"/JuxhinDB","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8005101?s=80&v=4"},"commit":{"message":"Initial commit","shortMessageHtmlLink":"Initial commit"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEu0J7jAA","startCursor":null,"endCursor":null}},"title":"Activity ยท JuxhinDB/poolparty"}