{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":247822992,"defaultBranch":"master","name":"lazylru","ownerLogin":"TriggerMail","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2020-03-16T21:48:48.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/3834145?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1718750419.0","currentOid":""},"activityList":{"items":[{"before":"beb671b47342a971b54765b099203a71b89af8ab","after":"70f4b10a3fddeb2fc083ce2374d27e01e63d5658","ref":"refs/heads/master","pushedAt":"2024-06-18T22:40:19.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"},"commit":{"message":"more ignoring the linter (#32)\n\nInsecure random number generation isn't a problem in tests.","shortMessageHtmlLink":"more ignoring the linter (#32)"}},{"before":"9fec5ff33236934eb238d50b4bc4bd642051bff2","after":null,"ref":"refs/heads/dangermike/NOTICKET/nolint_rand","pushedAt":"2024-06-18T22:40:19.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"}},{"before":null,"after":"9fec5ff33236934eb238d50b4bc4bd642051bff2","ref":"refs/heads/dangermike/NOTICKET/nolint_rand","pushedAt":"2024-06-18T22:40:02.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"},"commit":{"message":"more ignoring the linter\n\nInsecure random number generation isn't a problem in tests.","shortMessageHtmlLink":"more ignoring the linter"}},{"before":"5c3039eda7ea4c84602515dfa6f5cb1e7ccf7c3e","after":null,"ref":"refs/heads/dangermike/NOTICKET/goreleaser_v2_fix","pushedAt":"2024-06-18T22:24:49.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"}},{"before":"af71fc449151e69c11a866e92b2c26e4774cd714","after":"beb671b47342a971b54765b099203a71b89af8ab","ref":"refs/heads/master","pushedAt":"2024-06-18T22:24:48.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"},"commit":{"message":"more goreleaser v2 changes (#31)","shortMessageHtmlLink":"more goreleaser v2 changes (#31)"}},{"before":null,"after":"5c3039eda7ea4c84602515dfa6f5cb1e7ccf7c3e","ref":"refs/heads/dangermike/NOTICKET/goreleaser_v2_fix","pushedAt":"2024-06-18T22:24:29.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"},"commit":{"message":"more goreleaser v2 changes","shortMessageHtmlLink":"more goreleaser v2 changes"}},{"before":"1d7f6a75a9ba2e01c8d5fdf07468e2971a35a4be","after":null,"ref":"refs/heads/dangermike/NOTICKET/goreleaser_v2","pushedAt":"2024-06-18T22:13:19.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"}},{"before":"062025bc877a385192b1383973eb60ac3d03c708","after":"af71fc449151e69c11a866e92b2c26e4774cd714","ref":"refs/heads/master","pushedAt":"2024-06-18T22:13:18.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"},"commit":{"message":"goreleaser v2 (#30)\n\nNeeded to update the .goreleaser.yml file to match the new schema. Also ignored some linter warnings","shortMessageHtmlLink":"goreleaser v2 (#30)"}},{"before":null,"after":"1d7f6a75a9ba2e01c8d5fdf07468e2971a35a4be","ref":"refs/heads/dangermike/NOTICKET/goreleaser_v2","pushedAt":"2024-06-18T22:10:04.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"},"commit":{"message":"goreleaser v2\n\nNeeded to update the .goreleaser.yml file to match the new schema. Also ignored some linter warnings","shortMessageHtmlLink":"goreleaser v2"}},{"before":"3d7504b152231f14edbbde5b221824f1b86f7320","after":null,"ref":"refs/heads/dangermike/NOTICKET/races","pushedAt":"2024-06-18T21:48:56.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"}},{"before":"463a294a36f123d063950e85487edadea886efb2","after":"062025bc877a385192b1383973eb60ac3d03c708","ref":"refs/heads/master","pushedAt":"2024-06-18T21:48:55.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"},"commit":{"message":"Fixing data race (#29)\n\nWhen reading and writing the same key simultaneously, there were two races that could occur while escalating the lock from a reader lock to a writer lock in the `get` method.\r\n\r\n* The expiration check in `get` was reading `pqi.expiration`\r\n* The returned value in `get` was reading `pqi.value`\r\n\r\nBoth of happened after the call to `lru.lock.RUnlock()`, which means that set could have modified the item that `pqi` was pointing to. We are now copying the underlying item (`*pqi`) to the stack and referencing that. This is a pessimistic way to approach this problem, but it is safe.\r\n\r\nA test was added that highlighted these races when run with `-race`.\r\n\r\nThanks @coxley for pointing these out and giving me a test that showed the problem.","shortMessageHtmlLink":"Fixing data race (#29)"}},{"before":"3f73f94faab923c04f6ea3be4cdd627a20b1e39a","after":"3d7504b152231f14edbbde5b221824f1b86f7320","ref":"refs/heads/dangermike/NOTICKET/races","pushedAt":"2024-06-18T21:37:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"},"commit":{"message":"explicitly ignore error to make the linter happy","shortMessageHtmlLink":"explicitly ignore error to make the linter happy"}},{"before":null,"after":"3f73f94faab923c04f6ea3be4cdd627a20b1e39a","ref":"refs/heads/dangermike/NOTICKET/races","pushedAt":"2024-06-18T21:33:09.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"},"commit":{"message":"Fixing data race\n\nWhen reading and writing the same key simultaneously, there were two races that could occur while escalating the lock from a reader lock to a writer lock in the `get` method.\n\n* The expiration check in `get` was reading `pqi.expiration`\n* The returned value in `get` was reading `pqi.value`\n\nBoth of happened after the call to `lru.lock.RUnlock()`, which means that set could have modified the item that `pqi` was pointing to. We are now copying the underlying item (`*pqi`) to the stack and referencing that. This is a pessimistic way to approach this problem, but it is safe.\n\nA test was added that highlighted these races when run with `-race`.","shortMessageHtmlLink":"Fixing data race"}},{"before":"13b4fd73a7eca92172a606cb4414d160f1597f7b","after":null,"ref":"refs/heads/dangermike/NOTICKET/on_evict","pushedAt":"2024-05-30T14:49:38.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"}},{"before":"80ff430f96d989e0cc944a4943f0a9d0e8d38118","after":"463a294a36f123d063950e85487edadea886efb2","ref":"refs/heads/master","pushedAt":"2024-05-30T14:49:37.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"},"commit":{"message":"Adding OnEvict callback for when items are removed (#28)\n\nOne or more callbacks can be registered to fire when items are removed from the cache. This is done synchronously to and Delete, Set, or MSet calls, as well as when the reaper thread finds expired items to remove. To keep the cost low, the count of registered callbacks is checked before any action is taken. For existing LazyLRU users, this will add the cost of one `atomic.LoadInt32` to these operations. As compared to the locks that already exist, this is negligible.","shortMessageHtmlLink":"Adding OnEvict callback for when items are removed (#28)"}},{"before":"fb642f45d42900e5712adbf004735e6679e50693","after":"13b4fd73a7eca92172a606cb4414d160f1597f7b","ref":"refs/heads/dangermike/NOTICKET/on_evict","pushedAt":"2024-05-30T14:46:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"},"commit":{"message":"s/int32/atomic.Int32/","shortMessageHtmlLink":"s/int32/atomic.Int32/"}},{"before":"49e47089eae16a1ce68cc8ecf2b58cda011d00a8","after":"fb642f45d42900e5712adbf004735e6679e50693","ref":"refs/heads/dangermike/NOTICKET/on_evict","pushedAt":"2024-05-30T14:18:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"},"commit":{"message":"typo","shortMessageHtmlLink":"typo"}},{"before":null,"after":"49e47089eae16a1ce68cc8ecf2b58cda011d00a8","ref":"refs/heads/dangermike/NOTICKET/on_evict","pushedAt":"2024-05-30T14:13:44.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"},"commit":{"message":"Adding OnEvict callback for when items are removed\n\nOne or more callbacks can be registered to fire when items are removed from the cache. This is done synchronously to and Delete, Set, or MSet calls, as well as when the reaper thread finds expired items to remove. To keep the cost low, the count of registered callbacks is checked before any action is taken. For existing LazyLRU users, this will add the cost of one `atomic.LoadInt32` to these operations. As compared to the locks that already exist, this is negligible.","shortMessageHtmlLink":"Adding OnEvict callback for when items are removed"}},{"before":"1051aafae0932ad6606d1368a13716120f2f2371","after":null,"ref":"refs/heads/dangermike/NOTICKET/math_rand_v2","pushedAt":"2024-05-09T17:05:11.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"}},{"before":"72f841ed61b4ad21b45d5b681e46cdcd64805de8","after":"80ff430f96d989e0cc944a4943f0a9d0e8d38118","ref":"refs/heads/master","pushedAt":"2024-05-09T17:05:09.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"},"commit":{"message":"replacing math/rand with math/rand/v2 (#27)\n\nThere is no reason to use math/rand anymore. Also removed all of the `//nolint:gosec` comments throughout the code.","shortMessageHtmlLink":"replacing math/rand with math/rand/v2 (#27)"}},{"before":null,"after":"1051aafae0932ad6606d1368a13716120f2f2371","ref":"refs/heads/dangermike/NOTICKET/math_rand_v2","pushedAt":"2024-05-09T16:59:39.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"},"commit":{"message":"replacing math/rand with math/rand/v2\n\nThere is no reason to use math/rand anymore. Also removed all of the `//nolint:gosec` comments throughout the code.","shortMessageHtmlLink":"replacing math/rand with math/rand/v2"}},{"before":"d0bfcb79b8318de143c96c4b768ac67fc5e11083","after":null,"ref":"refs/heads/dependabot/go_modules/github.com/stretchr/testify-1.9.0","pushedAt":"2024-04-24T18:41:38.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"}},{"before":"fa7c52017a5139d9bf475239e014d8fd3acd03d5","after":"72f841ed61b4ad21b45d5b681e46cdcd64805de8","ref":"refs/heads/master","pushedAt":"2024-04-24T18:41:36.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"},"commit":{"message":"Bump github.com/stretchr/testify from 1.8.4 to 1.9.0 (#26)\n\n* Bump github.com/stretchr/testify from 1.8.4 to 1.9.0\r\n\r\nBumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.8.4 to 1.9.0.\r\n- [Release notes](https://github.com/stretchr/testify/releases)\r\n- [Commits](https://github.com/stretchr/testify/compare/v1.8.4...v1.9.0)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: github.com/stretchr/testify\r\n dependency-type: direct:production\r\n update-type: version-update:semver-minor\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \r\n\r\n* tidy\r\n\r\n---------\r\n\r\nSigned-off-by: dependabot[bot] \r\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\r\nCo-authored-by: Michael Hurwitz ","shortMessageHtmlLink":"Bump github.com/stretchr/testify from 1.8.4 to 1.9.0 (#26)"}},{"before":"80bed204e4f79569c0ed2a603f4b00ea24b9c4d5","after":"d0bfcb79b8318de143c96c4b768ac67fc5e11083","ref":"refs/heads/dependabot/go_modules/github.com/stretchr/testify-1.9.0","pushedAt":"2024-04-24T18:37:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"},"commit":{"message":"bumping golangci-lint version","shortMessageHtmlLink":"bumping golangci-lint version"}},{"before":"0c9f2504cde2fe5904287d6a0fa7d082a57cb399","after":"80bed204e4f79569c0ed2a603f4b00ea24b9c4d5","ref":"refs/heads/dependabot/go_modules/github.com/stretchr/testify-1.9.0","pushedAt":"2024-04-24T18:28:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"},"commit":{"message":"go 1.22 for testing","shortMessageHtmlLink":"go 1.22 for testing"}},{"before":"ea6b681a6701f9c336214a8b5d2ab8964bed3e00","after":"0c9f2504cde2fe5904287d6a0fa7d082a57cb399","ref":"refs/heads/dependabot/go_modules/github.com/stretchr/testify-1.9.0","pushedAt":"2024-04-24T18:03:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"},"commit":{"message":"tidy","shortMessageHtmlLink":"tidy"}},{"before":null,"after":"ea6b681a6701f9c336214a8b5d2ab8964bed3e00","ref":"refs/heads/dependabot/go_modules/github.com/stretchr/testify-1.9.0","pushedAt":"2024-03-01T17:42:35.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 github.com/stretchr/testify from 1.8.4 to 1.9.0\n\nBumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.8.4 to 1.9.0.\n- [Release notes](https://github.com/stretchr/testify/releases)\n- [Commits](https://github.com/stretchr/testify/compare/v1.8.4...v1.9.0)\n\n---\nupdated-dependencies:\n- dependency-name: github.com/stretchr/testify\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump github.com/stretchr/testify from 1.8.4 to 1.9.0"}},{"before":"ab23cb8b220de302320851081b7662075834550f","after":null,"ref":"refs/heads/dangermike/NOTICKET/promote_generic","pushedAt":"2023-06-27T14:58:49.388Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"}},{"before":"307bd9006b3674e7401fdb62d7c7158f4b8036b0","after":"fa7c52017a5139d9bf475239e014d8fd3acd03d5","ref":"refs/heads/master","pushedAt":"2023-06-27T14:58:48.257Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"},"commit":{"message":"Making lazylru generic, deprecating the lazylru/generic package (#25)\n\nThis was supposed to happen last September. There is no need to support Go <=1.17 at this point, so the generic interface is sufficient for everyone. This will cause deprecation warnings for everyone using the `github.com/TriggerMail/lazylru/genric`, but switching to the `github.com/TriggerMail/lazylru` package should be seamless.","shortMessageHtmlLink":"Making lazylru generic, deprecating the lazylru/generic package (#25)"}},{"before":"e05c6feb02f68b4451e3ac50ab193b77d2c171b2","after":"ab23cb8b220de302320851081b7662075834550f","ref":"refs/heads/dangermike/NOTICKET/promote_generic","pushedAt":"2023-06-27T14:54:03.049Z","pushType":"push","commitsCount":1,"pusher":{"login":"dangermike","name":"Mike Hurwitz","path":"/dangermike","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3886239?s=80&v=4"},"commit":{"message":"ignore deprecation in deprecated generic package","shortMessageHtmlLink":"ignore deprecation in deprecated generic package"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEaPT0TQA","startCursor":null,"endCursor":null}},"title":"Activity ยท TriggerMail/lazylru"}