{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":125234630,"defaultBranch":"main","name":"cachegrand","ownerLogin":"danielealbano","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2018-03-14T15:33:02.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/861162?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1698182458.0","currentOid":""},"activityList":{"items":[{"before":null,"after":"27df42b56820e56e7c7ac3a4d3a9dc1bf3c674f7","ref":"refs/heads/feature/read-transaction-for-non-rmw-commands","pushedAt":"2023-10-24T21:20:58.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"},"commit":{"message":"Update tests","shortMessageHtmlLink":"Update tests"}},{"before":"8188787104bf05c8095fe33a1c8cd447b20cf694","after":null,"ref":"refs/heads/feature/drop-unused-new-ht-and-epoch-gc","pushedAt":"2023-10-19T18:49:58.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"}},{"before":"63ccd88949079eac74d183ebab263f0808e45840","after":"b0e8fe9788b4c2438203da04c47f11704b8887b4","ref":"refs/heads/main","pushedAt":"2023-10-19T18:49:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"},"commit":{"message":"Drop unused new ht and epoch gc (#437)\n\nThis PR drops the more recent implementation of the faster hashtable,\r\nwhich although it's faster, it's not built to support transactions and,\r\neven if they would be \"forced\" into the architecture as the only goal of\r\nthis implementation was to allow parallel access having the transaction\r\nwould negate this core benefit.\r\n\r\nFor this reason I decided to drop all the code related to the new and\r\nfaster hashtable as well as the epoch gc support. There are other bits\r\nthat were implemented to support these two components that aren't\r\nremoved as they are small things that can be useful in the future.","shortMessageHtmlLink":"Drop unused new ht and epoch gc (#437)"}},{"before":"a603414db63ed738b263d987196541f165759381","after":"8188787104bf05c8095fe33a1c8cd447b20cf694","ref":"refs/heads/feature/drop-unused-new-ht-and-epoch-gc","pushedAt":"2023-10-19T18:40:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"},"commit":{"message":"Drop the keyword \"old\" from the benchmarks for the previous hashtable","shortMessageHtmlLink":"Drop the keyword \"old\" from the benchmarks for the previous hashtable"}},{"before":null,"after":"a603414db63ed738b263d987196541f165759381","ref":"refs/heads/feature/drop-unused-new-ht-and-epoch-gc","pushedAt":"2023-10-19T18:39:39.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"},"commit":{"message":"Merge from main","shortMessageHtmlLink":"Merge from main"}},{"before":"32ced386c4914afd4569d89a6a78a75da1b22eb1","after":null,"ref":"refs/heads/feature/update-mimalloc-v212","pushedAt":"2023-10-19T18:37:35.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"}},{"before":"4397ada31e2109ea16a4dfe916641a584242bf14","after":"63ccd88949079eac74d183ebab263f0808e45840","ref":"refs/heads/main","pushedAt":"2023-10-19T18:37:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"},"commit":{"message":"Update mimalloc to v2.1.2 (#436)\n\nUpdate to mimalloc v2.1.2","shortMessageHtmlLink":"Update mimalloc to v2.1.2 (#436)"}},{"before":"1a3037cd9a5e9cf844c1d98d78b9b27ef8ecb135","after":"f1755d1ad97f08d88e9845c7ed38ad5d5016a16b","ref":"refs/heads/feature/integrate-memory-profiling","pushedAt":"2023-10-19T18:28:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"},"commit":{"message":"Switch to use libunwind to get the caller return sip, it's more precise than libbacktrack","shortMessageHtmlLink":"Switch to use libunwind to get the caller return sip, it's more preci…"}},{"before":null,"after":"1a3037cd9a5e9cf844c1d98d78b9b27ef8ecb135","ref":"refs/heads/feature/integrate-memory-profiling","pushedAt":"2023-10-16T06:27:33.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"},"commit":{"message":"Initial implementation of a memory profiler for xalloc, enabled via the TRACK_ALLOCATIONS define","shortMessageHtmlLink":"Initial implementation of a memory profiler for xalloc, enabled via t…"}},{"before":null,"after":"32ced386c4914afd4569d89a6a78a75da1b22eb1","ref":"refs/heads/feature/update-mimalloc-v212","pushedAt":"2023-10-14T09:18:45.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"},"commit":{"message":"Update mimalloc to v2.1.2","shortMessageHtmlLink":"Update mimalloc to v2.1.2"}},{"before":"56d4e3d66b98658eb9e96e97c89e8d760f456f98","after":null,"ref":"refs/heads/feature/drop-ffma","pushedAt":"2023-10-13T22:10:06.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"}},{"before":"f4921c5198a0af8c509c9200f6f0a723c9353f38","after":"4397ada31e2109ea16a4dfe916641a584242bf14","ref":"refs/heads/main","pushedAt":"2023-10-13T22:10:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"},"commit":{"message":"Drop FFMA (#435)\n\nThis PR drops FFMA (Fast-Fixed Memory Allocator), the novel memory\r\nallocator implemented for cachegrand, because mimalloc has improved\r\nenough to drammatically reduce the impact of the fragmentation as well\r\nas allocating and deallocating memory buffer continuously.\r\n\r\nTo simplify the codebase, as the gap is now minimal, I have decided to\r\nremove FFMA and use only one memory allocator instead of two.","shortMessageHtmlLink":"Drop FFMA (#435)"}},{"before":"a6a0ecd5208ed5568a35fba28cec2878e91ed4a3","after":"56d4e3d66b98658eb9e96e97c89e8d760f456f98","ref":"refs/heads/feature/drop-ffma","pushedAt":"2023-10-13T22:01:03.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"},"commit":{"message":"Drop the use_hugepages flag from the configuration","shortMessageHtmlLink":"Drop the use_hugepages flag from the configuration"}},{"before":"b0b4ad35b998593aac4e9c7d74db4ddcbf831bb7","after":"a6a0ecd5208ed5568a35fba28cec2878e91ed4a3","ref":"refs/heads/feature/drop-ffma","pushedAt":"2023-10-13T21:55:00.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"},"commit":{"message":"Fix build warning caused by a missing include","shortMessageHtmlLink":"Fix build warning caused by a missing include"}},{"before":"145fc119ce769b9b36c6d39a3c075cda456e512b","after":"b0b4ad35b998593aac4e9c7d74db4ddcbf831bb7","ref":"refs/heads/feature/drop-ffma","pushedAt":"2023-10-13T21:12:33.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"},"commit":{"message":"Fix headers inclusion (drop ffma, add xalloc as needed)","shortMessageHtmlLink":"Fix headers inclusion (drop ffma, add xalloc as needed)"}},{"before":"85fcc1dea933a080fc2b11e1727c4a1ca52e0820","after":"145fc119ce769b9b36c6d39a3c075cda456e512b","ref":"refs/heads/feature/drop-ffma","pushedAt":"2023-10-13T20:14:50.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"},"commit":{"message":"Fix headers inclusion (drop ffma, add xalloc as needed)","shortMessageHtmlLink":"Fix headers inclusion (drop ffma, add xalloc as needed)"}},{"before":null,"after":"85fcc1dea933a080fc2b11e1727c4a1ca52e0820","ref":"refs/heads/feature/drop-ffma","pushedAt":"2023-10-13T20:14:01.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"},"commit":{"message":"Fix headers inclusion (drop ffma, add xalloc as needed)","shortMessageHtmlLink":"Fix headers inclusion (drop ffma, add xalloc as needed)"}},{"before":"3cca163d031025046274145d1af7b17a1cbb42ef","after":null,"ref":"refs/heads/feature/rely-on-read-tx-for-ht-consistency","pushedAt":"2023-10-12T21:00:34.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"}},{"before":"561ec5aad8bc287e25b786dc7ce4a0ee1a2d5b41","after":"f4921c5198a0af8c509c9200f6f0a723c9353f38","ref":"refs/heads/main","pushedAt":"2023-10-12T21:00:32.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"},"commit":{"message":"Rely on read tx for the hashtable consistency (#434)\n\nNow that every operation on the hashtable is always behind a read or\r\nwrite transaction, it's not necessary to have to rely on a tricky logic\r\nand memory fences to ensure that a read will never cause an issue if a\r\nwrite changes something as they will never run in parallel.\r\n\r\nThe PR drops the memory fences, introduces some minor optimizations now\r\nthat reads are consistent and clean up a lot of unnecessary logging.\r\n\r\nThe PR also contains a minor fix for a build warning when building C++\r\ncode (e.g. benchmarks or tests) and the necessary changes to update the\r\nset benchmark for the hashtable to the new paradigm implemented.","shortMessageHtmlLink":"Rely on read tx for the hashtable consistency (#434)"}},{"before":"c139dbc1b243c044786c211ec25bf7bd5bb0508a","after":"3cca163d031025046274145d1af7b17a1cbb42ef","ref":"refs/heads/feature/rely-on-read-tx-for-ht-consistency","pushedAt":"2023-10-12T20:51:49.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"},"commit":{"message":"Add some extra asserts to catch double releases or cumulative non releases","shortMessageHtmlLink":"Add some extra asserts to catch double releases or cumulative non rel…"}},{"before":"88dc5c257af330f229175e2023ce688613e53540","after":"c139dbc1b243c044786c211ec25bf7bd5bb0508a","ref":"refs/heads/feature/rely-on-read-tx-for-ht-consistency","pushedAt":"2023-10-12T20:18:41.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"},"commit":{"message":"Merge branch 'main' into feature/rely-on-read-tx-for-ht-consistency","shortMessageHtmlLink":"Merge branch 'main' into feature/rely-on-read-tx-for-ht-consistency"}},{"before":"52d5be8e63deb43c81f7fd0015d75b44afecfbbf","after":null,"ref":"refs/heads/bug/fix-stuck-in-prep-when-snapsnot-prep-fails","pushedAt":"2023-10-12T20:15:23.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"}},{"before":"5f682cca4a70ab577eaa81c24164ef0ef575b3a0","after":"561ec5aad8bc287e25b786dc7ce4a0ee1a2d5b41","ref":"refs/heads/main","pushedAt":"2023-10-12T20:15:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"},"commit":{"message":"Mark as not in preparation after a snapshot failure (#433)\n\nThis PR changes the snapshot business logic ensuring that if the\r\npreparation stage fails the status of in_preparation is switched back to\r\nfalse after the failure is internally reported.","shortMessageHtmlLink":"Mark as not in preparation after a snapshot failure (#433)"}},{"before":null,"after":"88dc5c257af330f229175e2023ce688613e53540","ref":"refs/heads/feature/rely-on-read-tx-for-ht-consistency","pushedAt":"2023-10-12T20:14:14.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"},"commit":{"message":"Fix the benchmark to support the new paradigm","shortMessageHtmlLink":"Fix the benchmark to support the new paradigm"}},{"before":null,"after":"52d5be8e63deb43c81f7fd0015d75b44afecfbbf","ref":"refs/heads/bug/fix-stuck-in-prep-when-snapsnot-prep-fails","pushedAt":"2023-10-12T20:07:23.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"},"commit":{"message":"If the snapshot preparation fails, after the operation is marked as failed the in_preparation flag can be switched off","shortMessageHtmlLink":"If the snapshot preparation fails, after the operation is marked as f…"}},{"before":"fdedb6e2d5f7ede74890ce8f58fc62e31df3275e","after":null,"ref":"refs/heads/feature/consistent-reads","pushedAt":"2023-10-11T19:51:03.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"}},{"before":"76bcb0c8279d562bd2bc6b93bcf150f95f82f551","after":"5f682cca4a70ab577eaa81c24164ef0ef575b3a0","ref":"refs/heads/main","pushedAt":"2023-10-11T19:51:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"},"commit":{"message":"Consistent reads (#432)\n\nThis PR implements a mechanism to guarantee consistent reads adding\r\nsupport for read-only transactions and leveraging this new transaction\r\ntype to synchronize the read and write operations.\r\n\r\nA major advantage of this approach is that meanwhile before commands\r\nlike MSET or MSETNX would have allowed a client to read a value of a\r\nsequence being set, breaking the ABI with the Redis interface (where\r\nMSET, MSETNX and all the other commands that operate on the same set of\r\nkeys are atomic), now the new mechanism implemented directly into the\r\ntransaction logic and leveraged internally by the hashtable, ensures\r\nthat the reads will wait any write transaction in progress.\r\n\r\nMeanwhile this is causing a performance penalty, the major advantage is\r\nthat now cachegrand is much more ACID compliant (infact when used with\r\nthe on-disk storage cachegrand is fully ACID compliant) providing\r\ntransaction isolation.\r\n\r\nAnother major advantage is that now a lot of complexity implemented to\r\nallow reads with writes in progress can be dropped, which will lead to\r\n(a) an esamplification of the code and (b) some performance\r\nimprovements.\r\n\r\nThese changes have room for improvement, the locks now might last for\r\nseveral seconds, depending on the type of operation being carried out,\r\nand there is no reason for a fiber to wait spinning, it makes much more\r\nsense to yield after some spinning to let other fibers to carry out\r\ntheir own operations.\r\nAlso, so far all the operation that required access to multiple keys\r\nwere forced to use read-write transaction but for several it's not\r\nreally required and they can switch to read-only transaction.\r\n\r\nBecause there is (plenty) of room for improvement, no benchmark is\r\nincluded to compare the performances.","shortMessageHtmlLink":"Consistent reads (#432)"}},{"before":"b97aafbd2a7095a66a578dee6d5a84d6517eb804","after":"fdedb6e2d5f7ede74890ce8f58fc62e31df3275e","ref":"refs/heads/feature/consistent-reads","pushedAt":"2023-10-11T19:21:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"},"commit":{"message":"Fix a missing header in main.c","shortMessageHtmlLink":"Fix a missing header in main.c"}},{"before":"2d69e146d793a6e4bbdaf76bd854515b974f6929","after":"b97aafbd2a7095a66a578dee6d5a84d6517eb804","ref":"refs/heads/feature/consistent-reads","pushedAt":"2023-10-11T19:13:06.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"},"commit":{"message":"Rename transaction_lock_for_readers in transaction_lock_for_read","shortMessageHtmlLink":"Rename transaction_lock_for_readers in transaction_lock_for_read"}},{"before":"91c02c8cf44d4c842690a35ac5bc4e18cb211d68","after":"2d69e146d793a6e4bbdaf76bd854515b974f6929","ref":"refs/heads/feature/consistent-reads","pushedAt":"2023-10-11T18:21:12.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"danielealbano","name":"Daniele Salvatore Albano","path":"/danielealbano","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/861162?s=80&v=4"},"commit":{"message":"As now the read operations, carried also out by the storage db, require read transactions which in turn require a worker context, the worker context needs to be set for the tests to run properly","shortMessageHtmlLink":"As now the read operations, carried also out by the storage db, requi…"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAADnuYj5wA","startCursor":null,"endCursor":null}},"title":"Activity · danielealbano/cachegrand"}