{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":351806852,"defaultBranch":"main","name":"neon","ownerLogin":"neondatabase","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2021-03-26T14:20:47.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/77690634?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1717191218.0","currentOid":""},"activityList":{"items":[{"before":"1a97da18c7cdbe5a85f98d3d61c29f752e1266a6","after":null,"ref":"refs/heads/sk-partial-backup-limit","pushedAt":"2024-05-31T23:18:57.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"petuhovskiy","name":"Arthur Petukhovsky","path":"/petuhovskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8150127?s=80&v=4"}},{"before":"7e60563910936cf6643edb686a8163b0b03c7108","after":"e98bc4fd2ba3cb4a3fa6d00f98406fb0fdb916a8","ref":"refs/heads/main","pushedAt":"2024-05-31T23:18:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"petuhovskiy","name":"Arthur Petukhovsky","path":"/petuhovskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8150127?s=80&v=4"},"commit":{"message":"Run gc on too many partial backup segments (#7700)\n\nThe general partial backup idea is that each safekeeper keeps only one\r\npartial segment in remote storage at a time. Sometimes this is not true,\r\nfor example if we uploaded object to S3 but got an error when tried to\r\nremove the previous upload. In this case we still keep a list of all\r\npotentially uploaded objects in safekeeper state.\r\n\r\nThis commit prints a warning to logs if there is too many objects in\r\nsafekeeper state. This is not expected and we should try to fix this\r\nstate, we can do this by running gc.\r\n\r\nI haven't seen this being an issue anywhere, but printing a warning is\r\nsomething that I wanted to do and forgot in initial PR.","shortMessageHtmlLink":"Run gc on too many partial backup segments (#7700)"}},{"before":"ee4c91bc2a520d8a4112f4a941e681c7d6d07d55","after":"259f932beb661eed175747d5ed94e6d847bd41e9","ref":"refs/heads/arpad/key_impl","pushedAt":"2024-05-31T21:52:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"arpad-m","name":"Arpad Müller","path":"/arpad-m","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/19521842?s=80&v=4"},"commit":{"message":"Simplify","shortMessageHtmlLink":"Simplify"}},{"before":"4521f51d4af22cac075113436263176d312583e9","after":"ee4c91bc2a520d8a4112f4a941e681c7d6d07d55","ref":"refs/heads/arpad/key_impl","pushedAt":"2024-05-31T21:40:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"arpad-m","name":"Arpad Müller","path":"/arpad-m","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/19521842?s=80&v=4"},"commit":{"message":"Move key_to_* functions into inherent impl","shortMessageHtmlLink":"Move key_to_* functions into inherent impl"}},{"before":null,"after":"4521f51d4af22cac075113436263176d312583e9","ref":"refs/heads/arpad/key_impl","pushedAt":"2024-05-31T21:33:38.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"arpad-m","name":"Arpad Müller","path":"/arpad-m","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/19521842?s=80&v=4"},"commit":{"message":"refactor kind_query macro","shortMessageHtmlLink":"refactor kind_query macro"}},{"before":"950e5d2357d43eec385b33b7c6d12cc0d8950066","after":null,"ref":"refs/heads/jcsp/typed-gc-error","pushedAt":"2024-05-31T21:20:07.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jcsp","name":"John Spray","path":"/jcsp","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/944640?s=80&v=4"}},{"before":"ef83f31e77abf7cf55387635eb3e8ad2191d97a1","after":"7e60563910936cf6643edb686a8163b0b03c7108","ref":"refs/heads/main","pushedAt":"2024-05-31T21:20:06.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jcsp","name":"John Spray","path":"/jcsp","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/944640?s=80&v=4"},"commit":{"message":"pageserver: add GcError type (#7917)\n\n## Problem\r\n\r\n- Because GC exposes all errors as an anyhow::Error, we have\r\nintermittent issues with spurious log errors during shutdown, e.g. in\r\nthis failure of a performance test\r\nhttps://neon-github-public-dev.s3.amazonaws.com/reports/main/9300804302/index.html#suites/07874de07c4a1c9effe0d92da7755ebf/214a2154f6f0217a/\r\n\r\n```\r\nGc failed 1 times, retrying in 2s: shutting down\r\n```\r\n\r\nGC really doesn't do a lot of complicated IO: it doesn't benefit from\r\nthe backtrace capabilities of anyhow::Error, and can be expressed more\r\nrobustly as an enum.\r\n\r\n## Summary of changes\r\n\r\n- Add GcError type and use it instead of anyhow::Error in GC functions\r\n- In `gc_iteration_internal`, return GcError::Cancelled on shutdown\r\nrather than Ok(()) (we only used Ok before because we didn't have a\r\nclear cancellation error variant to use).\r\n- In `gc_iteration_internal`, skip past timelines that are shutting\r\ndown, to avoid having to go through another GC iteration if we happen to\r\nsee a deleting timeline during a GC run.\r\n- In `refresh_gc_info_internal`, avoid an error case where a timeline\r\nmight not be found after being looked up, by carrying an Arc\r\ninstead of a TimelineId between the first loop and second loop in the\r\nfunction.\r\n- In HTTP request handler, handle Cancelled variants as 503 instead of\r\nturning all GC errors into 500s.","shortMessageHtmlLink":"pageserver: add GcError type (#7917)"}},{"before":null,"after":"d831b81c4ad6080ebcb84060276fc3a2e761acc2","ref":"refs/heads/jcsp/heatmap-deletion","pushedAt":"2024-05-31T21:19:46.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jcsp","name":"John Spray","path":"/jcsp","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/944640?s=80&v=4"},"commit":{"message":"pageserver: include heatmap in tenant deletion","shortMessageHtmlLink":"pageserver: include heatmap in tenant deletion"}},{"before":"c16c201e6f6c50847b41fd3caa5fb83e6565c370","after":"fd46dc52200bc142086de19ac1cbf56af1785635","ref":"refs/heads/skyzh/compaction-estimation-tool","pushedAt":"2024-05-31T20:02:14.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"skyzh","name":"Alex Chi Z.","path":"/skyzh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4198311?s=80&v=4"},"commit":{"message":"test(pageserver): quantify compaction outcome\n\nSigned-off-by: Alex Chi Z ","shortMessageHtmlLink":"test(pageserver): quantify compaction outcome"}},{"before":"f03751d34b084eea272acd7f82f400d6b78ee002","after":"9f54d9e872b50acc1467da9fc3b8185bb0882e90","ref":"refs/heads/skyzh/delete-tombstones","pushedAt":"2024-05-31T18:31:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"skyzh","name":"Alex Chi Z.","path":"/skyzh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4198311?s=80&v=4"},"commit":{"message":"resolve comments\n\nSigned-off-by: Alex Chi Z ","shortMessageHtmlLink":"resolve comments"}},{"before":"345c3285bab3aca62a7ab12865cc3f0be51202ba","after":"003c96d1c572d62233b2416303ea2bf1cfe71b30","ref":"refs/heads/jcsp/scrubber-physical-gc-pt1","pushedAt":"2024-05-31T18:22:44.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jcsp","name":"John Spray","path":"/jcsp","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/944640?s=80&v=4"},"commit":{"message":"test: add test_scrubber_physical_gc","shortMessageHtmlLink":"test: add test_scrubber_physical_gc"}},{"before":"804d15b045c4408d6e39fed91a7d67146e8610e2","after":null,"ref":"refs/heads/joonas/pagectl_key","pushedAt":"2024-05-31T18:19:42.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"koivunej","name":"Joonas Koivunen","path":"/koivunej","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1081634?s=80&v=4"}},{"before":"9fda85b4862bccf7e57c1f2fadfd03f1c3c7288b","after":"ef83f31e77abf7cf55387635eb3e8ad2191d97a1","ref":"refs/heads/main","pushedAt":"2024-05-31T18:19:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"koivunej","name":"Joonas Koivunen","path":"/koivunej","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1081634?s=80&v=4"},"commit":{"message":"pagectl: key command for dumping what we know about the key (#7890)\n\nWhat we know about the key via added `pagectl key $key` command:\r\n- debug formatting\r\n- shard placement when `--shard-count` is specified\r\n- different boolean queries in `key.rs`\r\n- aux files v2\r\n\r\nExample:\r\n\r\n```\r\n$ cargo run -qp pagectl -- key 000000063F00004005000060270000100E2C\r\nparsed from hex: 000000063F00004005000060270000100E2C:\r\n\r\nKey { field1: 0, field2: 1599, field3: 16389, field4: 24615, field5: 0, field6: 1052204 }\r\nrel_block: true\r\nrel_vm_block: false\r\nrel_fsm_block: false\r\nslru_block: false\r\ninherited: true\r\nrel_size: false\r\nslru_segment_size: false\r\nrecognized kind: None\r\n```","shortMessageHtmlLink":"pagectl: key command for dumping what we know about the key (#7890)"}},{"before":"672f9cc6332cd4d36088ff4ea112a53e00d85238","after":"804d15b045c4408d6e39fed91a7d67146e8610e2","ref":"refs/heads/joonas/pagectl_key","pushedAt":"2024-05-31T17:40:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"koivunej","name":"Joonas Koivunen","path":"/koivunej","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1081634?s=80&v=4"},"commit":{"message":"Revert \"fix: take key by ref to be aligned with old code\"\n\nturns out not all of them were by value.","shortMessageHtmlLink":"Revert \"fix: take key by ref to be aligned with old code\""}},{"before":"02f225a8a382591e29de68e502e6fd49f03c8eeb","after":"f9ae1e9ec73dd42ebd67bfa227b46f11c0ef4df7","ref":"refs/heads/joonas/rtc_index_uploads","pushedAt":"2024-05-31T17:38:58.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"koivunej","name":"Joonas Koivunen","path":"/koivunej","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1081634?s=80&v=4"},"commit":{"message":"rewrite to be about maintaining a \"clean\" indexpart","shortMessageHtmlLink":"rewrite to be about maintaining a \"clean\" indexpart"}},{"before":"da3618b83bae0889786aefbc469216a4db3fd086","after":"02f225a8a382591e29de68e502e6fd49f03c8eeb","ref":"refs/heads/joonas/rtc_index_uploads","pushedAt":"2024-05-31T17:29:40.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"koivunej","name":"Joonas Koivunen","path":"/koivunej","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1081634?s=80&v=4"},"commit":{"message":"rewrite to be about maintaining a \"clean\" indexpart","shortMessageHtmlLink":"rewrite to be about maintaining a \"clean\" indexpart"}},{"before":"501f585fb802effc505cdaa23c57dbf617a3d516","after":"672f9cc6332cd4d36088ff4ea112a53e00d85238","ref":"refs/heads/joonas/pagectl_key","pushedAt":"2024-05-31T16:41:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"koivunej","name":"Joonas Koivunen","path":"/koivunej","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1081634?s=80&v=4"},"commit":{"message":"fix: take key by ref to be aligned with old code","shortMessageHtmlLink":"fix: take key by ref to be aligned with old code"}},{"before":null,"after":"c75d33cc6b7a8a342d28045b29df06e25f28ecbe","ref":"refs/heads/joonas/another_attempt_at_flushing_and_pgvector","pushedAt":"2024-05-31T16:32:19.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"koivunej","name":"Joonas Koivunen","path":"/koivunej","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1081634?s=80&v=4"},"commit":{"message":"fix: allow layer flushes more often\n\nas seen with the pgvector 0.7.0 index builds, we can sometimes receive\nlarge batches of images. because we are only able to roll the layer\nafter we have witnessed two different Lsn's in a single\nDataDirModification::commit. As the single Lsn batches can span over\nmultiple DataDirModification lifespans, we will rarely get to write two\ndifferent Lsns in single put_batch.\n\nSolution is to instead of eagerly forgetting the TimelineWriterState we\nremember it until we really open the next layer, or someone else\nflushes (while holding the write_guard).","shortMessageHtmlLink":"fix: allow layer flushes more often"}},{"before":"1a50964da91a9a8a5681aeb987529c90af0ebb63","after":"950e5d2357d43eec385b33b7c6d12cc0d8950066","ref":"refs/heads/jcsp/typed-gc-error","pushedAt":"2024-05-31T16:17:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jcsp","name":"John Spray","path":"/jcsp","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/944640?s=80&v=4"},"commit":{"message":"tweak GcError names","shortMessageHtmlLink":"tweak GcError names"}},{"before":"4fc9006112101dcc8ada20bf8dadbb98b9a17698","after":"05ee51a4e07c24d967eea6ba73bdba9a68ca60e6","ref":"refs/heads/repl_origin","pushedAt":"2024-05-31T16:08:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"skyzh","name":"Alex Chi Z.","path":"/skyzh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4198311?s=80&v=4"},"commit":{"message":"add a todo on initdb optimization\n\nSigned-off-by: Alex Chi Z ","shortMessageHtmlLink":"add a todo on initdb optimization"}},{"before":"d570e914c3c69603cb301588057ba1d180675b30","after":"f03751d34b084eea272acd7f82f400d6b78ee002","ref":"refs/heads/skyzh/delete-tombstones","pushedAt":"2024-05-31T16:02:38.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"skyzh","name":"Alex Chi Z.","path":"/skyzh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4198311?s=80&v=4"},"commit":{"message":"resolve comments\n\nSigned-off-by: Alex Chi Z ","shortMessageHtmlLink":"resolve comments"}},{"before":"f4305e7d71e63dcea08caf9b204fae411af268e1","after":null,"ref":"refs/heads/jcsp/no-ancestor-stopping","pushedAt":"2024-05-31T16:02:11.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jcsp","name":"John Spray","path":"/jcsp","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/944640?s=80&v=4"}},{"before":"87afbf6b24313cbfa28809ec7ada2e72911263be","after":"9fda85b4862bccf7e57c1f2fadfd03f1c3c7288b","ref":"refs/heads/main","pushedAt":"2024-05-31T16:02:10.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jcsp","name":"John Spray","path":"/jcsp","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/944640?s=80&v=4"},"commit":{"message":"pageserver: remove AncestorStopping error variants (#7916)\n\n## Problem\r\n\r\nIn all cases, AncestorStopping is equivalent to Cancelled.\r\n\r\nThis became more obvious in\r\nhttps://github.com/neondatabase/neon/pull/7912#discussion_r1620582309\r\nwhen updating these error types.\r\n\r\n## Summary of changes\r\n\r\n- Remove AncestorStopping, always use Cancelled instead","shortMessageHtmlLink":"pageserver: remove AncestorStopping error variants (#7916)"}},{"before":"b12c7052738da1b740a782f0aa1f5e5723b78e75","after":null,"ref":"refs/heads/skyzh/force-create-layers","pushedAt":"2024-05-31T16:00:41.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"skyzh","name":"Alex Chi Z.","path":"/skyzh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4198311?s=80&v=4"}},{"before":"16b2e74037dfcacec2ceeef3bc597e75b435cc1b","after":"87afbf6b24313cbfa28809ec7ada2e72911263be","ref":"refs/heads/main","pushedAt":"2024-05-31T16:00:40.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"skyzh","name":"Alex Chi Z.","path":"/skyzh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4198311?s=80&v=4"},"commit":{"message":"test(pageserver): add test interface to create artificial layers (#7899)\n\nThis pull request adds necessary interfaces to deterministically create\r\nscenarios we want to test. Simplify some test cases to use this\r\ninterface to make it stable + reproducible.\r\n\r\nCompaction test will be able to use this interface. Also the upcoming\r\ndelete tombstone tests will use this interface to make test\r\nreproducible.\r\n\r\n## Summary of changes\r\n\r\n* `force_create_image_layer`\r\n* `force_create_delta_layer`\r\n* `force_advance_lsn`\r\n* `create_test_timeline_with_states`\r\n* `branch_timeline_test_with_states`\r\n\r\n---------\r\n\r\nSigned-off-by: Alex Chi Z ","shortMessageHtmlLink":"test(pageserver): add test interface to create artificial layers (#7899)"}},{"before":"5ac2b16c22f8fb05dbff1410be6bd377e4b66eab","after":"1a080f31fc6c3768f90d2edc0928c1de8c713868","ref":"refs/heads/ci-run/pr-7915","pushedAt":"2024-05-31T15:50:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"vipvap","name":"vipvap","path":"/vipvap","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/91739071?s=80&v=4"},"commit":{"message":"debug","shortMessageHtmlLink":"debug"}},{"before":"5ac2b16c22f8fb05dbff1410be6bd377e4b66eab","after":"1a080f31fc6c3768f90d2edc0928c1de8c713868","ref":"refs/heads/amasterov-pr-copy-labels","pushedAt":"2024-05-31T15:48:51.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"a-masterov","name":null,"path":"/a-masterov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/72613290?s=80&v=4"},"commit":{"message":"debug","shortMessageHtmlLink":"debug"}},{"before":"bac9b3393df60f9cee94463fbf0025d55c329f92","after":"5ac2b16c22f8fb05dbff1410be6bd377e4b66eab","ref":"refs/heads/ci-run/pr-7915","pushedAt":"2024-05-31T15:47:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"vipvap","name":"vipvap","path":"/vipvap","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/91739071?s=80&v=4"},"commit":{"message":"ddebug","shortMessageHtmlLink":"ddebug"}},{"before":"bac9b3393df60f9cee94463fbf0025d55c329f92","after":"5ac2b16c22f8fb05dbff1410be6bd377e4b66eab","ref":"refs/heads/amasterov-pr-copy-labels","pushedAt":"2024-05-31T15:45:27.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"a-masterov","name":null,"path":"/a-masterov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/72613290?s=80&v=4"},"commit":{"message":"ddebug","shortMessageHtmlLink":"ddebug"}},{"before":"a4445ad264eaa53e04ca3b1c4d53bba1ac675614","after":"bac9b3393df60f9cee94463fbf0025d55c329f92","ref":"refs/heads/ci-run/pr-7915","pushedAt":"2024-05-31T15:43:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"vipvap","name":"vipvap","path":"/vipvap","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/91739071?s=80&v=4"},"commit":{"message":"fix","shortMessageHtmlLink":"fix"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEWXWeIgA","startCursor":null,"endCursor":null}},"title":"Activity · neondatabase/neon"}