{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":35581334,"defaultBranch":"master","name":"tasktiger","ownerLogin":"closeio","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2015-05-14T00:26:32.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/437267?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1716199909.0","currentOid":""},"activityList":{"items":[{"before":"9f01ac37246f1c722ba477ee1bb29e47e23827ee","after":null,"ref":"refs/heads/dependabot-pip-pytest-8.2.0","pushedAt":"2024-05-20T10:11:49.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":null,"after":"e85e499cc73ecc52a6a983abaa37ef1456da47e8","ref":"refs/heads/dependabot-pip-pytest-8.2.1","pushedAt":"2024-05-20T10:11:44.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 pytest from 8.1.1 to 8.2.1\n\nBumps [pytest](https://github.com/pytest-dev/pytest) from 8.1.1 to 8.2.1.\n- [Release notes](https://github.com/pytest-dev/pytest/releases)\n- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)\n- [Commits](https://github.com/pytest-dev/pytest/compare/8.1.1...8.2.1)\n\n---\nupdated-dependencies:\n- dependency-name: pytest\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump pytest from 8.1.1 to 8.2.1"}},{"before":"9b5da9952de13a4eaac0617ccb531dc58c996ac6","after":null,"ref":"refs/heads/dependabot-pip-redis-5.0.3","pushedAt":"2024-04-29T10:22:22.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":null,"after":"cdc3d11a67ba8e7014b401af9cf9302e06d73050","ref":"refs/heads/dependabot-pip-redis-5.0.4","pushedAt":"2024-04-29T10:22:18.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 redis from 4.5.2 to 5.0.4\n\nBumps [redis](https://github.com/redis/redis-py) from 4.5.2 to 5.0.4.\n- [Release notes](https://github.com/redis/redis-py/releases)\n- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)\n- [Commits](https://github.com/redis/redis-py/compare/v4.5.2...v5.0.4)\n\n---\nupdated-dependencies:\n- dependency-name: redis\n dependency-type: direct:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump redis from 4.5.2 to 5.0.4"}},{"before":null,"after":"9f01ac37246f1c722ba477ee1bb29e47e23827ee","ref":"refs/heads/dependabot-pip-pytest-8.2.0","pushedAt":"2024-04-29T10:22:10.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 pytest from 8.1.1 to 8.2.0\n\nBumps [pytest](https://github.com/pytest-dev/pytest) from 8.1.1 to 8.2.0.\n- [Release notes](https://github.com/pytest-dev/pytest/releases)\n- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)\n- [Commits](https://github.com/pytest-dev/pytest/compare/8.1.1...8.2.0)\n\n---\nupdated-dependencies:\n- dependency-name: pytest\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump pytest from 8.1.1 to 8.2.0"}},{"before":"d6291ddb5add18647f2ca40a31b483e3e8ee4280","after":"af46a08bf97f2751f77903c03e974ebb48be6e6c","ref":"refs/heads/master","pushedAt":"2024-04-25T13:57:51.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"thomasst","name":"Thomas Steinacher","path":"/thomasst","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/68381?s=80&v=4"},"commit":{"message":"Add test for unhandled exception in sync worker (#338)","shortMessageHtmlLink":"Add test for unhandled exception in sync worker (#338)"}},{"before":null,"after":"b90593ebfcb0479bda0373224d58efe5e90ea9ff","ref":"refs/heads/test-heartbeat-unhandled-exc","pushedAt":"2024-04-25T13:07:38.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"thomasst","name":"Thomas Steinacher","path":"/thomasst","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/68381?s=80&v=4"},"commit":{"message":"Add test for unhandled exception in sync worker","shortMessageHtmlLink":"Add test for unhandled exception in sync worker"}},{"before":"7b5bf71b38a43cc1ac392efc09345b3715c2bae8","after":"d6291ddb5add18647f2ca40a31b483e3e8ee4280","ref":"refs/heads/master","pushedAt":"2024-04-25T12:49:14.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"thomasst","name":"Thomas Steinacher","path":"/thomasst","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/68381?s=80&v=4"},"commit":{"message":"Release v0.19.3 (#337)","shortMessageHtmlLink":"Release v0.19.3 (#337)"}},{"before":null,"after":"303afa7ffb4f0f54d8f0b4e5eaf7d05351b5dc9b","ref":"refs/heads/v0.19.3","pushedAt":"2024-04-25T12:48:09.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"thomasst","name":"Thomas Steinacher","path":"/thomasst","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/68381?s=80&v=4"},"commit":{"message":"Release v0.19.3","shortMessageHtmlLink":"Release v0.19.3"}},{"before":"797a013f716c1e40f29b30218e0207ea2eb1590f","after":"7b5bf71b38a43cc1ac392efc09345b3715c2bae8","ref":"refs/heads/master","pushedAt":"2024-04-25T12:46:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"thomasst","name":"Thomas Steinacher","path":"/thomasst","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/68381?s=80&v=4"},"commit":{"message":"Stop heartbeat thread in case of unhandled exceptions. (#335)\n\nFixes process hanging due to heartbeat thread not being stopped if a task raises `SystemExit` or something else derived from `BaseException` that isn't `JobTimeoutException`. Or if something goes wrong after task execution completed.","shortMessageHtmlLink":"Stop heartbeat thread in case of unhandled exceptions. (#335)"}},{"before":"833606621b216a914f8283b202b89a302e07a0aa","after":"797a013f716c1e40f29b30218e0207ea2eb1590f","ref":"refs/heads/master","pushedAt":"2024-04-25T12:46:00.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"thomasst","name":"Thomas Steinacher","path":"/thomasst","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/68381?s=80&v=4"},"commit":{"message":"Remove no longer needed __future__ imports (#336)\n\nNot needed in Python 3.","shortMessageHtmlLink":"Remove no longer needed __future__ imports (#336)"}},{"before":null,"after":"bb8a5ab5888800c4adaa877653a9dcc5183ff03e","ref":"refs/heads/remove-future-imports","pushedAt":"2024-04-25T10:53:45.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"thomasst","name":"Thomas Steinacher","path":"/thomasst","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/68381?s=80&v=4"},"commit":{"message":"Remove no longer needed __future__ imports","shortMessageHtmlLink":"Remove no longer needed __future__ imports"}},{"before":null,"after":"e440d8fae1f50eef5dcdc90389e585016c9586b6","ref":"refs/heads/always-stop-heartbeat-thread","pushedAt":"2024-04-25T10:51:14.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"thomasst","name":"Thomas Steinacher","path":"/thomasst","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/68381?s=80&v=4"},"commit":{"message":"Stop heartbeat thread in case of unhandled exceptions.","shortMessageHtmlLink":"Stop heartbeat thread in case of unhandled exceptions."}},{"before":"6626754b5980a1290e4eec121f267f954db5ad8d","after":"833606621b216a914f8283b202b89a302e07a0aa","ref":"refs/heads/master","pushedAt":"2024-04-24T12:50:16.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"thomasst","name":"Thomas Steinacher","path":"/thomasst","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/68381?s=80&v=4"},"commit":{"message":"Release v0.19.2 (#334)","shortMessageHtmlLink":"Release v0.19.2 (#334)"}},{"before":null,"after":"f531d52a1d2d678d179550813414832ea91d4bcf","ref":"refs/heads/v0.19.2","pushedAt":"2024-04-24T12:42:49.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"thomasst","name":"Thomas Steinacher","path":"/thomasst","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/68381?s=80&v=4"},"commit":{"message":"Release v0.19.2","shortMessageHtmlLink":"Release v0.19.2"}},{"before":"937d5576c7520f09ac4653fe756eaac8b938fe1c","after":"6626754b5980a1290e4eec121f267f954db5ad8d","ref":"refs/heads/master","pushedAt":"2024-04-24T12:40:26.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"thomasst","name":"Thomas Steinacher","path":"/thomasst","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/68381?s=80&v=4"},"commit":{"message":"Task lock should be non-local (#333)\n\nAnalyzing the thread safety of the heartbeat function in the sync executor:\r\n- Redis-py should by threadsafe by default unless `single_connection_client` is given, which is false by default.\r\n- When doing a `heartbeat()` we update the task timestamp, renew any task locks and any queue lock.\r\n- The queue lock ([`Semaphore`](https://github.com/closeio/tasktiger/blob/master/tasktiger/redis_semaphore.py)) does not care about threads so we can therefore renew it from a different thread.\r\n- Redis locks, which we use for locking tasks, are thread-local by default, we therefore need to set `thread_local=False`.\r\n- We use Redis locks in a couple other places but these are not being accessed by the heartbeat thread.\r\n\r\nAlso:\r\n- Improved heartbeat so we don't need to do a heartbeat if the task already completed after the wait, and added exception handling.\r\n- Fixed test to give it a bit more time to start (had some failures locally) + have at least one task & queue lock that should be renewed.","shortMessageHtmlLink":"Task lock should be non-local (#333)"}},{"before":"b86d4691986487d8d2aec8566d23a1901e0f0331","after":"d8d0c725a21cb379c7b9169d597b580c5cae093c","ref":"refs/heads/fix-thread-local-lock","pushedAt":"2024-04-24T12:33:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"thomasst","name":"Thomas Steinacher","path":"/thomasst","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/68381?s=80&v=4"},"commit":{"message":"Update test","shortMessageHtmlLink":"Update test"}},{"before":"045c50718b8952a1480550cf8076d1e240456302","after":"b86d4691986487d8d2aec8566d23a1901e0f0331","ref":"refs/heads/fix-thread-local-lock","pushedAt":"2024-04-24T11:32:30.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"thomasst","name":"Thomas Steinacher","path":"/thomasst","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/68381?s=80&v=4"},"commit":{"message":"Give thread a bit more time to start\n\nIn rare cases I saw the test fail locally.","shortMessageHtmlLink":"Give thread a bit more time to start"}},{"before":null,"after":"045c50718b8952a1480550cf8076d1e240456302","ref":"refs/heads/fix-thread-local-lock","pushedAt":"2024-04-24T11:07:06.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"thomasst","name":"Thomas Steinacher","path":"/thomasst","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/68381?s=80&v=4"},"commit":{"message":"Task lock should be non-local","shortMessageHtmlLink":"Task lock should be non-local"}},{"before":"5a2bb93ac97c31bd8d601e34a22f8b9a20356b31","after":"937d5576c7520f09ac4653fe756eaac8b938fe1c","ref":"refs/heads/master","pushedAt":"2024-04-23T17:10:48.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"thomasst","name":"Thomas Steinacher","path":"/thomasst","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/68381?s=80&v=4"},"commit":{"message":"Release v0.19.1 (#332)\n\n* Release v0.19.1\r\n\r\n* README improvements","shortMessageHtmlLink":"Release v0.19.1 (#332)"}},{"before":"dd8a365669a8c2114c31c3006553fa7f67af6229","after":"5d7f905eda3f79a2a2628fa43238697f0eb6c4cc","ref":"refs/heads/v0.19.1","pushedAt":"2024-04-23T16:10:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"thomasst","name":"Thomas Steinacher","path":"/thomasst","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/68381?s=80&v=4"},"commit":{"message":"README improvements","shortMessageHtmlLink":"README improvements"}},{"before":null,"after":"dd8a365669a8c2114c31c3006553fa7f67af6229","ref":"refs/heads/v0.19.1","pushedAt":"2024-04-23T16:02:57.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"thomasst","name":"Thomas Steinacher","path":"/thomasst","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/68381?s=80&v=4"},"commit":{"message":"Release v0.19.1","shortMessageHtmlLink":"Release v0.19.1"}},{"before":"f8237dcab7cfbd2f9e2efb7b434d1b5a2deb0152","after":null,"ref":"refs/heads/dependabot-pip-structlog-24.1.0","pushedAt":"2024-04-23T16:02:08.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":"192f6634352c8c4c012ee089c1264408e49a3b03","after":"5a2bb93ac97c31bd8d601e34a22f8b9a20356b31","ref":"refs/heads/master","pushedAt":"2024-04-23T16:02:02.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"thomasst","name":"Thomas Steinacher","path":"/thomasst","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/68381?s=80&v=4"},"commit":{"message":"Bump structlog from 22.3.0 to 24.1.0 (#315)\n\nBumps [structlog](https://github.com/hynek/structlog) from 22.3.0 to 24.1.0.\r\n- [Release notes](https://github.com/hynek/structlog/releases)\r\n- [Changelog](https://github.com/hynek/structlog/blob/main/CHANGELOG.md)\r\n- [Commits](https://github.com/hynek/structlog/compare/22.3.0...24.1.0)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: structlog\r\n dependency-type: direct:production\r\n update-type: version-update:semver-major\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \r\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Bump structlog from 22.3.0 to 24.1.0 (#315)"}},{"before":"c30a761e84cc5f57d0a403e050d7a9dc97bc61b9","after":"f8237dcab7cfbd2f9e2efb7b434d1b5a2deb0152","ref":"refs/heads/dependabot-pip-structlog-24.1.0","pushedAt":"2024-04-23T15:40:46.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 structlog from 22.3.0 to 24.1.0\n\nBumps [structlog](https://github.com/hynek/structlog) from 22.3.0 to 24.1.0.\n- [Release notes](https://github.com/hynek/structlog/releases)\n- [Changelog](https://github.com/hynek/structlog/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/hynek/structlog/compare/22.3.0...24.1.0)\n\n---\nupdated-dependencies:\n- dependency-name: structlog\n dependency-type: direct:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump structlog from 22.3.0 to 24.1.0"}},{"before":"871c854becda232c7519807588c4d07e71c999b4","after":null,"ref":"refs/heads/dependabot-pip-psutil-5.9.8","pushedAt":"2024-04-23T15:36:08.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":"3b65f8b1926e8af1b2a5c80123657493d62c1252","after":"192f6634352c8c4c012ee089c1264408e49a3b03","ref":"refs/heads/master","pushedAt":"2024-04-23T15:36:00.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"thomasst","name":"Thomas Steinacher","path":"/thomasst","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/68381?s=80&v=4"},"commit":{"message":"Bump psutil from 5.9.0 to 5.9.8 (#317)\n\nBumps [psutil](https://github.com/giampaolo/psutil) from 5.9.0 to 5.9.8.\r\n- [Changelog](https://github.com/giampaolo/psutil/blob/master/HISTORY.rst)\r\n- [Commits](https://github.com/giampaolo/psutil/compare/release-5.9.0...release-5.9.8)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: psutil\r\n dependency-type: direct:production\r\n update-type: version-update:semver-patch\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \r\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Bump psutil from 5.9.0 to 5.9.8 (#317)"}},{"before":"e7a95548c6e5fbbfdf3a4972063a6547a426be6e","after":"871c854becda232c7519807588c4d07e71c999b4","ref":"refs/heads/dependabot-pip-psutil-5.9.8","pushedAt":"2024-04-23T15:35:39.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 psutil from 5.9.0 to 5.9.8\n\nBumps [psutil](https://github.com/giampaolo/psutil) from 5.9.0 to 5.9.8.\n- [Changelog](https://github.com/giampaolo/psutil/blob/master/HISTORY.rst)\n- [Commits](https://github.com/giampaolo/psutil/compare/release-5.9.0...release-5.9.8)\n\n---\nupdated-dependencies:\n- dependency-name: psutil\n dependency-type: direct:production\n update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump psutil from 5.9.0 to 5.9.8"}},{"before":"c7b44a5992da784b6072c795b431bc93c5e89d53","after":null,"ref":"refs/heads/dependabot-pip-click-8.1.7","pushedAt":"2024-04-23T15:35:28.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":"0339d3acfe640559b8d128e4fd0b4c4b6006fbda","after":"3b65f8b1926e8af1b2a5c80123657493d62c1252","ref":"refs/heads/master","pushedAt":"2024-04-23T15:35:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"thomasst","name":"Thomas Steinacher","path":"/thomasst","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/68381?s=80&v=4"},"commit":{"message":"Bump click from 8.1.3 to 8.1.7 (#294)\n\nBumps [click](https://github.com/pallets/click) from 8.1.3 to 8.1.7.\r\n- [Release notes](https://github.com/pallets/click/releases)\r\n- [Changelog](https://github.com/pallets/click/blob/main/CHANGES.rst)\r\n- [Commits](https://github.com/pallets/click/compare/8.1.3...8.1.7)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: click\r\n dependency-type: direct:production\r\n update-type: version-update:semver-patch\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \r\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Bump click from 8.1.3 to 8.1.7 (#294)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAETqfVywA","startCursor":null,"endCursor":null}},"title":"Activity ยท closeio/tasktiger"}