{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":518944310,"defaultBranch":"master","name":"cockroach","ownerLogin":"pav-kv","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2022-07-28T17:53:02.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/3757441?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1721305742.0","currentOid":""},"activityList":{"items":[{"before":"4b57f5a22798bdfd38eec2f8c57445721e1a979f","after":"71946caf4e2f28a0472be7dda15bf009038cef44","ref":"refs/heads/async-log-writes-acc-term","pushedAt":"2024-07-18T13:25:25.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"raft: rm offset from TestStableToWithSnap\n\nEpic: none\nRelease note: none","shortMessageHtmlLink":"raft: rm offset from TestStableToWithSnap"}},{"before":"8deb73e7eea1aae6b74269d91b2e807ace79ca66","after":"4b57f5a22798bdfd38eec2f8c57445721e1a979f","ref":"refs/heads/async-log-writes-acc-term","pushedAt":"2024-07-18T12:59:37.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"raft: rm offset from TestStableToWithSnap\n\nEpic: none\nRelease note: none","shortMessageHtmlLink":"raft: rm offset from TestStableToWithSnap"}},{"before":"b26e6a2a166063d57fc1179d0e477575b8baab5f","after":"8deb73e7eea1aae6b74269d91b2e807ace79ca66","ref":"refs/heads/async-log-writes-acc-term","pushedAt":"2024-07-18T12:51:33.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"raft: rm offset from TestStableToWithSnap\n\nEpic: none\nRelease note: none","shortMessageHtmlLink":"raft: rm offset from TestStableToWithSnap"}},{"before":"df876b25b6ad32134de2a6a467ad4b62b1dca900","after":"b26e6a2a166063d57fc1179d0e477575b8baab5f","ref":"refs/heads/async-log-writes-acc-term","pushedAt":"2024-07-18T12:43:44.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"raft: rm offset from TestStableToWithSnap\n\nEpic: none\nRelease note: none","shortMessageHtmlLink":"raft: rm offset from TestStableToWithSnap"}},{"before":null,"after":"df876b25b6ad32134de2a6a467ad4b62b1dca900","ref":"refs/heads/async-log-writes-acc-term","pushedAt":"2024-07-18T12:29:02.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"raft: remove unused Term from MsgStorageAppendResp\n\nEpic: none\nRelease note: none","shortMessageHtmlLink":"raft: remove unused Term from MsgStorageAppendResp"}},{"before":"62940883978ad732e63e5c4d20375c82f1b9c67f","after":"46bc7f9a0890980d4042ca18622ae20df0069717","ref":"refs/heads/fix-raft-mem-tracking","pushedAt":"2024-07-17T21:57:03.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"kvserver: fix memory tracking in raft\n\nThis commit fixes the lifetime of bytes tracked in handleRaftReady.\nPreviously, we would release bytes shortly after acquiring them because\nit was inside a nested func call.\n\nEpic: none\nRelease note: none","shortMessageHtmlLink":"kvserver: fix memory tracking in raft"}},{"before":"0179c39ce12d413fe23b1820c8e8d8e4ef655d04","after":"e5bd31ee3e0849156a5a8579bdd87963ba986f45","ref":"refs/heads/master","pushedAt":"2024-07-10T20:01:51.000Z","pushType":"push","commitsCount":13,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"Merge #122452 #126902\n\n122452: cli: add --shutdown flag to `node drain` r=rafiss a=rafiss\n\nfixes https://github.com/cockroachdb/cockroach/issues/120520\r\n\r\nRelease note (cli change): The `cockroach node drain` command now has an optional --shutdown flag. When set, the node will shutdown after draining successfully completes.\n\n126902: raft: update leader's Next when appending entries r=kvoli,nvanbenschoten a=pav-kv\n\nThis PR makes the leader update its `Progress.Next` when it appends entries to its log. This makes the `Progress.Next` updates symmetric.\r\n\r\nPreviously, we only updated `Next` for followers, when sending a `MsgApp` to them, but updated `Match` symmetrically when getting `MsgAppResp` (both from the leader self-directed messages, and from followers). The leader is a special case: it doesn't send `MsgApp`s to itself. But there is an implicit `MsgApp` that happens in `appendEntry` function. We update `Next` accordingly.\r\n\r\nOn the leader, `Next` is always equal to `log.lastIndex + 1`. This is consistent with the fact that no more `MsgApp`s need to be sent to the local Acceptor.\r\n\r\nEpic: none\r\nRelease note: none\n\nCo-authored-by: Rafi Shamim \nCo-authored-by: Pavel Kalinnikov ","shortMessageHtmlLink":"Merge cockroachdb#122452 cockroachdb#126902"}},{"before":"7da95952b8af0444ee3b8a6d8f35ba38519e9b3c","after":null,"ref":"refs/heads/update-next-on-leader-ready","pushedAt":"2024-07-10T20:01:14.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"}},{"before":"1d2fa4891fb599b26f3a26b7271525d5e8bcf8a3","after":"7da95952b8af0444ee3b8a6d8f35ba38519e9b3c","ref":"refs/heads/update-next-on-leader-ready","pushedAt":"2024-07-10T18:36:47.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"raft: update leader's Next when appending entries\n\nThis commit makes the leader update its Progress.Next when it appends\nentries to its log. This makes the Progress.Next updates symmetric.\n\nPreviously, we only updated Next for followers, when sending a MsgApp to\nthem, but updated Match symmetrically when getting MsgAppResp (both from\nthe leader self-directed messages, and from followers). The leader is a\nspecial case: it doesn't send MsgApps to itself. But there is an\nimplicit MsgApp that happens in appendEntry function. We update Next\naccordingly.\n\nOn the leader, Next is always equal to log.lastIndex + 1. This is\nconsistent with the fact that no more MsgApps need to be sent to the\nlocal Acceptor.\n\nEpic: none\nRelease note: none","shortMessageHtmlLink":"raft: update leader's Next when appending entries"}},{"before":"94d21f3dbefb4b4b1d4753a234d9c86dc31dbf2e","after":"1d2fa4891fb599b26f3a26b7271525d5e8bcf8a3","ref":"refs/heads/update-next-on-leader-ready","pushedAt":"2024-07-10T17:46:22.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"raft: update leader's Next when appending entries\n\nThis commit makes the leader update its Progress.Next when it appends\nentries to its log. This makes the Progress.Next updates symmetric.\n\nPreviously, we only updated Next for followers, when sending a MsgApp to\nthem, but updated Match symmetrically when getting MsgAppResp (both from\nthe leader self-directed messages, and from followers). The leader is a\nspecial case: it doesn't send MsgApps to itself. But there is an\nimplicit MsgApp that happens in appendEntry function. We update Next\naccordingly.\n\nOn the leader, Next is always equal to log.lastIndex + 1. This is\nconsistent with the fact that no more MsgApps need to be sent to the\nlocal Acceptor.\n\nEpic: none\nRelease note: none","shortMessageHtmlLink":"raft: update leader's Next when appending entries"}},{"before":"617b1a9b40226a9cd375cabf2c4dc79f04c2e74f","after":"94d21f3dbefb4b4b1d4753a234d9c86dc31dbf2e","ref":"refs/heads/update-next-on-leader-ready","pushedAt":"2024-07-10T17:43:31.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"raft: update leader's Next when appending entries\n\nThis commit makes the leader update its Progress.Next when it appends\nentries to its log. This makes the Progress.Next updates symmetric.\n\nPreviously, we only updated Next for followers, when sending a MsgApp to\nthem, but updated Match symmetrically when getting MsgAppResp (both from\nthe leader self-directed messages, and from followers). The leader is a\nspecial case: it doesn't send MsgApps to itself. But there is an\nimplicit MsgApp that happens in appendEntry function. We update Next\naccordingly.\n\nOn the leader, Next is always equal to log.lastIndex + 1. This is\nconsistent with the fact that no more MsgApps need to be sent to the\nlocal Acceptor.\n\nEpic: none\nRelease note: none","shortMessageHtmlLink":"raft: update leader's Next when appending entries"}},{"before":"83d65399b89de0fdad4b5c0e678b639e777af314","after":"f8d4ca42e8a83c4b134fd43bcc5daeb7e06fc363","ref":"refs/heads/raft-unstable-refactor","pushedAt":"2024-07-10T16:26:22.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"log writes stab","shortMessageHtmlLink":"log writes stab"}},{"before":"327ad7b33cb81b5b2cadf53cee403843fa40f567","after":"0179c39ce12d413fe23b1820c8e8d8e4ef655d04","ref":"refs/heads/master","pushedAt":"2024-07-10T16:23:56.000Z","pushType":"push","commitsCount":122,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"Merge #126783\n\n126783: raft: make unstable a logSlice r=nvanbenschoten a=pav-kv\n\nThis PR refactors `raft.unstable` data structure to be a type-safe `logSlice`, and equips it with safety checks protecting the log append stack from appends that do not comply with the expected raft behaviours.\r\n\r\nOne immediate benefit of doing so is that `unstable` now knows the `lastEntryID` at all times, whereas previously it would fall back to fetching it from `Storage` interface when empty.\r\n\r\nThe second benefit is introducing the `logSlice.term` field, which carries strong semantics: the log is consistent with the leader log at this term. This allows implementing safety checks in append methods, preventing log truncations when not expected. Log truncations in raft can only happen when accepting a higher-term log append.\r\n\r\nThe `logSlice.term` field replaces `raft.accTerm`.\r\n\r\nPart of #124440\n\nCo-authored-by: Pavel Kalinnikov ","shortMessageHtmlLink":"Merge cockroachdb#126783"}},{"before":"6a948f4d7f043f51f6d8a25ba59ec05bb9afae0e","after":null,"ref":"refs/heads/unstable-logslice","pushedAt":"2024-07-10T16:22:33.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"}},{"before":"37382dc52481413576517c70ef353f4255098d90","after":"617b1a9b40226a9cd375cabf2c4dc79f04c2e74f","ref":"refs/heads/update-next-on-leader-ready","pushedAt":"2024-07-10T13:38:45.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"raft: update leader's Next when sending to storage\n\nThis commit makes the leader update its Progress.Next when it sends\nentries to storage via Ready / MsgStorageAppend. This maintains an\ninvariant that all in-flight entries are in (Match, Next) interval.\nPreviously, the leader wouldn't update Next, and only bump it together\nwith the Match, after it got the self-directed MsgAppResp.\n\nEpic: none\nRelease note: none","shortMessageHtmlLink":"raft: update leader's Next when sending to storage"}},{"before":"011831aed3da04cd1da281053ea83d01ebbb3c30","after":"37382dc52481413576517c70ef353f4255098d90","ref":"refs/heads/update-next-on-leader-ready","pushedAt":"2024-07-10T13:33:24.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"raft: update leader's Next when sending to storage\n\nThis commit makes the leader update its Progress.Next when it sends\nentries to storage via Ready / MsgStorageAppend. This maintains an\ninvariant that all in-flight entries are in (Match, Next) interval.\nPreviously, the leader wouldn't update Next, and only bump it together\nwith the Match, after it got the self-directed MsgAppResp.\n\nEpic: none\nRelease note: none","shortMessageHtmlLink":"raft: update leader's Next when sending to storage"}},{"before":"18884233fa96cc1fbba3c12f49342ee22b241475","after":"011831aed3da04cd1da281053ea83d01ebbb3c30","ref":"refs/heads/update-next-on-leader-ready","pushedAt":"2024-07-09T18:18:57.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"raft: update leader's Next when sending to storage\n\nThis commit makes the leader update its Progress.Next when it sends\nentries to storage via Ready / MsgStorageAppend. This maintains an\ninvariant that all in-flight entries are in (Match, Next) interval.\nPreviously, the leader wouldn't update Next, and only bump it together\nwith the Match, after it got the self-directed MsgAppResp.\n\nEpic: none\nRelease note: none","shortMessageHtmlLink":"raft: update leader's Next when sending to storage"}},{"before":null,"after":"18884233fa96cc1fbba3c12f49342ee22b241475","ref":"refs/heads/update-next-on-leader-ready","pushedAt":"2024-07-09T18:18:25.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"raft: update leader's Next when sending to storage\n\nThis commit makes the leader update its Progress.Next when it sends\nentries to storage via Ready / MsgStorageAppend. This maintains an\ninvariant that all in-flight entries are in (Match, Next) interval.\nPreviously, the leader wouldn't update Next, and only bump it together\nwith the Match, after it got the self-directed MsgAppResp.\n\nEpic: none\nRelease note: none","shortMessageHtmlLink":"raft: update leader's Next when sending to storage"}},{"before":"111fb2d96b6afa6bf67d4db7d772d12ccff6faa8","after":"6a948f4d7f043f51f6d8a25ba59ec05bb9afae0e","ref":"refs/heads/unstable-logslice","pushedAt":"2024-07-08T20:57:00.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"raft: take accTerm from unstable\n\nThe last accepted term is now tracked in the unstable logSlice.term\nfield. This commit removes the redundant raft.accTerm field, and uses\nthe unstable.term instead.\n\nEpic: none\nRelease note: none","shortMessageHtmlLink":"raft: take accTerm from unstable"}},{"before":"029f074e17ed0846f1d3da214be045a4d7ac5a74","after":"111fb2d96b6afa6bf67d4db7d772d12ccff6faa8","ref":"refs/heads/unstable-logslice","pushedAt":"2024-07-08T20:53:20.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"raft: take accTerm from unstable\n\nThe last accepted term is now tracked in the unstable logSlice.term\nfield. This commit removes the redundant raft.accTerm field, and uses\nthe unstable.term instead.\n\nEpic: none\nRelease note: none","shortMessageHtmlLink":"raft: take accTerm from unstable"}},{"before":null,"after":"4417099926cf0fa516aca6080eee54116946bce1","ref":"refs/heads/snap-outdated-term","pushedAt":"2024-07-08T17:57:03.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"kvserver: do not bump MsgSnap.Term\n\nRaft assumes MsgSnap comes from the leader, and updates the lead field\naccordingly. If the Term in MsgSnap is bumped arbitrarily, the node can\nthing that the sender is the leader at a different term than it actually\nis.\n\nEpic: none\nRelease note: none","shortMessageHtmlLink":"kvserver: do not bump MsgSnap.Term"}},{"before":"9cece7c659aa9b9fdf13afe45ed36f01965ed5f4","after":"83d65399b89de0fdad4b5c0e678b639e777af314","ref":"refs/heads/raft-unstable-refactor","pushedAt":"2024-07-07T17:00:04.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"log writes stab","shortMessageHtmlLink":"log writes stab"}},{"before":"b157e9cd208b24a99f3b1869719242df75c0d23a","after":"9cece7c659aa9b9fdf13afe45ed36f01965ed5f4","ref":"refs/heads/raft-unstable-refactor","pushedAt":"2024-07-07T15:56:46.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"log writes stab","shortMessageHtmlLink":"log writes stab"}},{"before":"0af346069ecb92e08f97e21d4cb9a8855a574695","after":"029f074e17ed0846f1d3da214be045a4d7ac5a74","ref":"refs/heads/unstable-logslice","pushedAt":"2024-07-07T15:54:27.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"raft: take accTerm from unstable\n\nThe last accepted term is now tracked in the unstable logSlice.term\nfield. This commit removes the redundant raft.accTerm field, and uses\nthe unstable.term instead.\n\nEpic: none\nRelease note: none","shortMessageHtmlLink":"raft: take accTerm from unstable"}},{"before":"9abf14ee0191ee6f637628a76fa56dd48008b528","after":"b157e9cd208b24a99f3b1869719242df75c0d23a","ref":"refs/heads/raft-unstable-refactor","pushedAt":"2024-07-07T14:50:53.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"log writes stab","shortMessageHtmlLink":"log writes stab"}},{"before":"b4f2ec79524ff104627ff7d3cc297b03b4c86cd5","after":"9abf14ee0191ee6f637628a76fa56dd48008b528","ref":"refs/heads/raft-unstable-refactor","pushedAt":"2024-07-07T14:33:58.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"log writes stab","shortMessageHtmlLink":"log writes stab"}},{"before":"b6dd59f2257f71cb0d47ccccbf41eabf1faada1b","after":null,"ref":"refs/heads/merge-append-and-maybeappend","pushedAt":"2024-07-06T21:41:10.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"}},{"before":null,"after":"0af346069ecb92e08f97e21d4cb9a8855a574695","ref":"refs/heads/unstable-logslice","pushedAt":"2024-07-06T00:51:05.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"raft: add fast-path optimization in maybeAppend\n\nEpic: none\nRelease note: none","shortMessageHtmlLink":"raft: add fast-path optimization in maybeAppend"}},{"before":"873d41927b4d1c8e3d06f1324909f97e7ad4abff","after":"b4f2ec79524ff104627ff7d3cc297b03b4c86cd5","ref":"refs/heads/raft-unstable-refactor","pushedAt":"2024-07-06T00:45:35.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"log writes stab","shortMessageHtmlLink":"log writes stab"}},{"before":"88b36270ae5d4fa97ed331abce7e4c7fae93e0d7","after":"873d41927b4d1c8e3d06f1324909f97e7ad4abff","ref":"refs/heads/raft-unstable-refactor","pushedAt":"2024-07-06T00:38:50.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"pav-kv","name":"Pavel Kalinnikov","path":"/pav-kv","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3757441?s=80&v=4"},"commit":{"message":"log writes stab","shortMessageHtmlLink":"log writes stab"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEgvMLyAA","startCursor":null,"endCursor":null}},"title":"Activity ยท pav-kv/cockroach"}