{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":141339868,"defaultBranch":"master","name":"pebble","ownerLogin":"cockroachdb","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2018-07-17T20:25:25.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/6748139?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1716610110.0","currentOid":""},"activityList":{"items":[{"before":"8b278ee80af979d334d9d6d4235abab3829796d0","after":"542915b28b7993b7a59a8e1fdec7e726096b68bf","ref":"refs/heads/master","pushedAt":"2024-05-24T13:59:45.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"RaduBerinde","name":null,"path":"/RaduBerinde","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16544120?s=80&v=4"},"commit":{"message":"ingest: perform LSM overlap checks outside of DB.mu\n\nThis change separates the LSM overlap checking from\n`ingestTargetLevel`, with the former now happening without holding\n`DB.mu`.\n\nWe will make more improvements in this area soon, but this change\nshould be a significant improvement on its own.","shortMessageHtmlLink":"ingest: perform LSM overlap checks outside of DB.mu"}},{"before":"cd254003ae6e9d7c246680e54e1299a0093a3c88","after":"8b278ee80af979d334d9d6d4235abab3829796d0","ref":"refs/heads/master","pushedAt":"2024-05-23T22:30:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"RaduBerinde","name":null,"path":"/RaduBerinde","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16544120?s=80&v=4"},"commit":{"message":"metamorphic: bump timeout for Compact/Download/NewSnapshot\n\nBump up the timeout for these ops, which can be very slow if both the\nblock size and target file size are small and we end up with a ton of\ntiny tables.\n\nInforms #3618","shortMessageHtmlLink":"metamorphic: bump timeout for Compact/Download/NewSnapshot"}},{"before":"cfcd825468b5e4a39ddaa8ee73fb1ebd90859bf9","after":"cd254003ae6e9d7c246680e54e1299a0093a3c88","ref":"refs/heads/master","pushedAt":"2024-05-23T21:04:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"RaduBerinde","name":null,"path":"/RaduBerinde","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16544120?s=80&v=4"},"commit":{"message":"fix: add loong64 support #3630","shortMessageHtmlLink":"fix: add loong64 support #3630"}},{"before":"c077435aef13d640fc599ad01d10455f68510d1a","after":"89c542fb73781ed1e3aa6ec2baa1b1e3671c4ad1","ref":"refs/heads/crl-release-24.1","pushedAt":"2024-05-22T15:59:16.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"RaduBerinde","name":null,"path":"/RaduBerinde","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16544120?s=80&v=4"},"commit":{"message":"sstable: handle synthetic prefix when checking bloom filter\n\nFix the sstable iterators to strip the synthetic prefix before\nchecking the bloom filter.\n\nFix the `TestRandomizedPrefixSuffixRewriter` to check `SeekPrefixGE`\nand randomly enable filters.","shortMessageHtmlLink":"sstable: handle synthetic prefix when checking bloom filter"}},{"before":"6195a2cbd48d02adcf6c42e96dea808ad03e4b96","after":"cfcd825468b5e4a39ddaa8ee73fb1ebd90859bf9","ref":"refs/heads/master","pushedAt":"2024-05-22T03:48:55.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"RaduBerinde","name":null,"path":"/RaduBerinde","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16544120?s=80&v=4"},"commit":{"message":"sstable: handle synthetic prefix when checking bloom filter\n\nFix the sstable iterators to strip the synthetic prefix before\nchecking the bloom filter.\n\nFix the `TestRandomizedPrefixSuffixRewriter` to check `SeekPrefixGE`\nand randomly enable filters.","shortMessageHtmlLink":"sstable: handle synthetic prefix when checking bloom filter"}},{"before":"2ac449bbd7e59d2c7a6d1402183fbdc3e02cf3e5","after":"6195a2cbd48d02adcf6c42e96dea808ad03e4b96","ref":"refs/heads/master","pushedAt":"2024-05-17T22:56:28.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"nicktrav","name":"Nick Travers","path":"/nicktrav","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/804457?s=80&v=4"},"commit":{"message":"*: allow compression type to be inferred from initial stats load\n\nCurrently, the compression type for a table is known when the SST is new\n\\- i.e. flushed, compacted, ingested. However, when opening an existing\nDB, the compression types will show as \"unknown\".\n\nAllow the async, background stats loading job that runs on DB open to\ninfer the compression type of existing tables by lifting the compression\nfield from `sstable.Properties` up into `sstable.CommonProperties`. This\nallows `loadTableStats` to use the field and populate the\n`manifest.TableStats` struct.","shortMessageHtmlLink":"*: allow compression type to be inferred from initial stats load"}},{"before":"62fc20d22a8f7d7a8f72c3c9390b1f3d08c1c656","after":"c077435aef13d640fc599ad01d10455f68510d1a","ref":"refs/heads/crl-release-24.1","pushedAt":"2024-05-17T03:06:09.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"RaduBerinde","name":null,"path":"/RaduBerinde","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16544120?s=80&v=4"},"commit":{"message":"ingest: avoid unnecessary I/O when checking overlap\n\nThis commit sets the upper bound on the level iterator used when\nchecking for overlap. This avoids unnecessarily opening a file that\nstarts after the key range of interest.","shortMessageHtmlLink":"ingest: avoid unnecessary I/O when checking overlap"}},{"before":"89116b3ba08b9cff18efd55191044d0bc57336ec","after":"2ac449bbd7e59d2c7a6d1402183fbdc3e02cf3e5","ref":"refs/heads/master","pushedAt":"2024-05-16T16:32:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"RaduBerinde","name":null,"path":"/RaduBerinde","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16544120?s=80&v=4"},"commit":{"message":"manifest: minor cleanup\n\nThis change cleans up a few aspects of the `manifest` package:\n - we move `overlaps` to a method on the `LevelSlice`\n - we simplify the interface and improve the implementation of\n `LevelIterator.Find()`\n - we remove no-op uses of `LevelSlice.Reslice()`","shortMessageHtmlLink":"manifest: minor cleanup"}},{"before":"18bbac531b8a58e83fcf7f9bee5ea9fb57fbcd7c","after":"89116b3ba08b9cff18efd55191044d0bc57336ec","ref":"refs/heads/master","pushedAt":"2024-05-15T20:19:06.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jbowens","name":"Jackson Owens","path":"/jbowens","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/867352?s=80&v=4"},"commit":{"message":"base: add Split.Prefix helper\n\nAdd a Prefix method to base.Split that returns the prefix of a user key, as\ndefined by the Split func.","shortMessageHtmlLink":"base: add Split.Prefix helper"}},{"before":"c1cfad1db48d67133a1120f4a9e786a4806eaaa5","after":"18bbac531b8a58e83fcf7f9bee5ea9fb57fbcd7c","ref":"refs/heads/master","pushedAt":"2024-05-15T18:06:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jbowens","name":"Jackson Owens","path":"/jbowens","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/867352?s=80&v=4"},"commit":{"message":"keyspanimpl: use base.Equal in MergingIter\n\nAdapt keyspanimpl.MergingIter to take a *base.Comparer and use its equals Equal\nmethod when appropriate.","shortMessageHtmlLink":"keyspanimpl: use base.Equal in MergingIter"}},{"before":"864cb26602af0fb45e839c0ed6169e055259a600","after":"c1cfad1db48d67133a1120f4a9e786a4806eaaa5","ref":"refs/heads/master","pushedAt":"2024-05-15T16:58:53.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sumeerbhola","name":null,"path":"/sumeerbhola","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54990988?s=80&v=4"},"commit":{"message":"objstorage,sstable: add read-before for reader creation and iter index/filter blocks\n\nWe consider two use cases for read-before when using a\nobjstorageprovider.remoteReadable, given the high latency (and cost) of\neach read operation:\n\n- When a sstable.Reader is opened, it needs to read the footer, metaindex\n block and meta properties block. It starts by reading the footer which is\n at the end of the table and then proceeds to read the other two. Instead\n of doing 3 tiny reads, we would like to do one read.\n\n- When a single-level or two-level iterator is opened, it reads the\n (top-level) index block first. When the iterator is used, it will\n typically follow this by reading the filter block (since SeeKPrefixGE is\n common in CockroachDB). For a two-level iterator it will also read the\n lower-level index blocks which are after the filter block and before the\n top-level index block. It would be ideal if reading the top-level index\n block read enough to include the filter block. And for two-level\n iterators this would also include the lower-level index blocks.\n\nIn both use-cases we want the first read from the remoteReadable to do a\nlarger read, and read bytes earlier than the requested read, hence\n\"read-before\". Subsequent reads from the remoteReadable can use the usual\nreadahead logic (for the second use-case above, this can help with\nsequential reads of the lower-level index blocks when the read-before was\ninsufficient to satisfy such reads).\n\nSince remoteReadHandle already has a buffer for read-ahead, we utilize\nit for this read-before buffering pattern too.\n\nWhile here, we bump up the read-ahead size for compactions to 8MB, given\nthe lower concurrency (and thereby higher tolerance to memory usage).\n\nInforms #2328","shortMessageHtmlLink":"objstorage,sstable: add read-before for reader creation and iter inde…"}},{"before":"5e941d80f72e392bced6b67c70bcba5d612182c2","after":"864cb26602af0fb45e839c0ed6169e055259a600","ref":"refs/heads/master","pushedAt":"2024-05-15T15:30:28.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sumeerbhola","name":null,"path":"/sumeerbhola","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54990988?s=80&v=4"},"commit":{"message":"tool: add more summaries to manifest summarize\n\nThese were motivated by some disagg storage experimentation. There\nare summaries for compacted in bytes and files. Also, a histogram\nof file lifetimes when the file gets deleted. The classification of\nwhat is a compaction is slightly improved, and there is some small\ncleanup (unused field).\n\nOn a real manifest, in verbose mode (for the lifetime histograms) the\noutput looks like:\n _______L0_______L1_______L2_______L3_______L4_______L5_______L6_____TOTAL\n2024-05-01T12:00:00Z\n Ingest+Flush Bytes 16GB . . . . . . 16GB\n Ingest+Flush Bytes/s 4.5MB/s . . . . . . 4.5MB/s\n Compact Out Bytes 16GB . 32GB 36GB 36GB 32GB . 151GB\n Compact Out Bytes/s 4.5MB/s . 9.0MB/s 10MB/s 10MB/s 9.1MB/s . 43MB/s\n Compact In Bytes/s . . 9.0MB/s 10MB/s 10MB/s 9.5MB/s 7.7MB/s 47MB/s\n Compact In Files/s . . 2.8/s 2.1/s 1.2/s 0.6/s 0.2/s 6.8/s\n\nLifetime histograms\n2024-05-01T12:00:00Z\n L0: mean: 15s p25: 10s p50: 15s p75: 21s p90: 26s\n L2: mean: 14s p25: 6s p50: 13s p75: 22s p90: 28s\n L3: mean: 1m7s p25: 13s p50: 1m3s p75: 1m39s p90: 2m23s\n L4: mean: 5m53s p25: 15s p50: 5m19s p75: 10m7s p90: 14m23s\n L5: mean: 34m10s p25: 35s p50: 30m55s p75: 59m43s p90: 1h21m3s\n L6: mean: 3h34m3s p25: 2h42m7s p50: 4h24m31s p75: 5h7m11s p90: 5h41m19s\n","shortMessageHtmlLink":"tool: add more summaries to manifest summarize"}},{"before":"5597cf1ed07974489cbf13b2c6481be08784a4ac","after":"5e941d80f72e392bced6b67c70bcba5d612182c2","ref":"refs/heads/master","pushedAt":"2024-05-14T16:47:23.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jbowens","name":"Jackson Owens","path":"/jbowens","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/867352?s=80&v=4"},"commit":{"message":"metamorphic: fix WAL failover config generation\n\nPreviously it was possible for the metamorphic test to generate an invalid WAL\nfailover configuration where the healthy interval was too long for the given\nprobe interval, resulting in a healthy interval that could never be satisfied\nwith the fixed 120-entry probe history.\n\nInforms #3618.","shortMessageHtmlLink":"metamorphic: fix WAL failover config generation"}},{"before":"a1142afe81284c3d4f0972dd03184166c3cdce93","after":"5597cf1ed07974489cbf13b2c6481be08784a4ac","ref":"refs/heads/master","pushedAt":"2024-05-14T16:37:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"RaduBerinde","name":null,"path":"/RaduBerinde","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16544120?s=80&v=4"},"commit":{"message":"tool: add `db lsm` flag to show LSM viewer URL\n\nWe add a `--url` flag to the `pebble db lsm` command which prints out\nan LSM viewer URL.","shortMessageHtmlLink":"tool: add db lsm flag to show LSM viewer URL"}},{"before":"8e556e810df1bfe619a8ae33a3757fe3c7e00787","after":"a1142afe81284c3d4f0972dd03184166c3cdce93","ref":"refs/heads/master","pushedAt":"2024-05-14T15:32:56.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"RaduBerinde","name":null,"path":"/RaduBerinde","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16544120?s=80&v=4"},"commit":{"message":"db: more readable iterator stats\n\nThis change reformats the output of iterator stats which are very hard\nto read. We omit reverse counts when they are zero and remove\nredundant information.","shortMessageHtmlLink":"db: more readable iterator stats"}},{"before":"fe0c6e49f4be1b04268e9834d21c67023957e92a","after":"8e556e810df1bfe619a8ae33a3757fe3c7e00787","ref":"refs/heads/master","pushedAt":"2024-05-13T23:06:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jbowens","name":"Jackson Owens","path":"/jbowens","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/867352?s=80&v=4"},"commit":{"message":"db: avoid unnecessary second opening of range deletion iter\n\nSince #3596 the levelIter began opening a file's range deletion iterator twice:\nonce to pass off to the mergingIter and once to interleave range deletion\nboundaries among the levelIter output to ensure we don't advance to a\nsubsequent file until the file's range deletions are irrelevant. The\nimplementation in #3596 naively always requested the range deletion iterator\nfrom the table cache a second time, even when it already discovered the file\ncontained no range deletions. This caused a small regression in the Pebble YCSB\nbenchmarks.","shortMessageHtmlLink":"db: avoid unnecessary second opening of range deletion iter"}},{"before":"c9692410f388d5227a544d8d136dba34f1f63126","after":"fe0c6e49f4be1b04268e9834d21c67023957e92a","ref":"refs/heads/master","pushedAt":"2024-05-13T20:06:39.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"jbowens","name":"Jackson Owens","path":"/jbowens","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/867352?s=80&v=4"},"commit":{"message":"db: simplify makeRoomForWrite\n\nRefactor makeRoomForWrite to take advantage of the fact that it is now only\ncalled with a non-nil Batch when the current mutable memtable is known to have\ninsufficient available space to index the Batch.","shortMessageHtmlLink":"db: simplify makeRoomForWrite"}},{"before":"c4b8017ec27a3f551b6004d91c6f241d18e86390","after":"c9692410f388d5227a544d8d136dba34f1f63126","ref":"refs/heads/master","pushedAt":"2024-05-13T18:48:51.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sumeerbhola","name":null,"path":"/sumeerbhola","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54990988?s=80&v=4"},"commit":{"message":"objstorageprovider: small readahead improvements\n\n- The limit was not being updated in certain cases, which delayed\n when readahead would occur. This is fixed, and new test case\n exercises this.\n- The code in recordCacheHit is almost identical to the one in\n maybeReadahead and the main comprehension challenge of the code\n is the various predicates (and their code comments with examples),\n which are repeated (without the examples). These are now merged\n into a single helper method.\n- A small side-effect of the previous change is that numReads is\n incremented on a cache hit when we are already above the threshold.\n This has no actual effect on when readahead will happen. And\n arguably, this new behavior is more principled.\n- One of the test cases had a missing - and was not being exercised,\n and resulting in an incorrect error in a later test case. This is\n fixed.\n- There is additional invariant documentation.","shortMessageHtmlLink":"objstorageprovider: small readahead improvements"}},{"before":"5ee10bd4b99251f866c659a3cee2a5ac8791bbb9","after":"c4b8017ec27a3f551b6004d91c6f241d18e86390","ref":"refs/heads/master","pushedAt":"2024-05-13T18:25:48.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jbowens","name":"Jackson Owens","path":"/jbowens","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/867352?s=80&v=4"},"commit":{"message":"db: avoid stepping beyond iteration prefix in levelIter\n\nDuring prefix iteration mode, avoid stepping the levelIter beyond the current\niteration prefix. This fixes a bug whereby a levelIter.Next may position a\nlevelIter to a file beyond the iteration prefix and a subsequent SeekPrefixGE\nto a later key with TrySeekUsingNext would fail to observe keys in the skipped\nfile.\n\nFix #3610.","shortMessageHtmlLink":"db: avoid stepping beyond iteration prefix in levelIter"}},{"before":"9a0448affd7e1e92927f53633b475b4659d58af7","after":"3622ade60459e2b3b9c6f3b36be3a212fa07b848","ref":"refs/heads/crl-release-23.2","pushedAt":"2024-05-13T15:59:19.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jbowens","name":"Jackson Owens","path":"/jbowens","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/867352?s=80&v=4"},"commit":{"message":"db: ensure Metrics.WAL.BytesWritten is nondecreasing\n\nThe Metrics.WAL.BytesWritten metric is intended to be a monotonically\nincreasing counter of all bytes written to the write-ahead log. Previously, it\nwas possible for this metric to violate monotonicity immediately after a WAL\nrotation. The d.logSize value—which corresponds to the size of the current\nWAL—was not reset to zero. It was only reset after the first write to the new\nWAL.\n\nClose #3505.","shortMessageHtmlLink":"db: ensure Metrics.WAL.BytesWritten is nondecreasing"}},{"before":"f75ed446c629032a95c7f47e5a433694f3bdc9e2","after":"5ee10bd4b99251f866c659a3cee2a5ac8791bbb9","ref":"refs/heads/master","pushedAt":"2024-05-12T01:56:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"RaduBerinde","name":null,"path":"/RaduBerinde","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16544120?s=80&v=4"},"commit":{"message":"db: tolerate empty external ingestions\n\nWe now tolerate empty external ingestions.\n\nWhen we encounter an empty table in a download compaction, we just\ndelete the table.\n\nThe iterator correctness issues that occurred before seem to no longer\napply, very likely thanks to the recent refactoring and cleanup of the\niterator stack.","shortMessageHtmlLink":"db: tolerate empty external ingestions"}},{"before":"1a2a77b88235f87b4a4749ccb1e963b80f76858c","after":"f75ed446c629032a95c7f47e5a433694f3bdc9e2","ref":"refs/heads/master","pushedAt":"2024-05-10T17:15:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"RaduBerinde","name":null,"path":"/RaduBerinde","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16544120?s=80&v=4"},"commit":{"message":"metrics: count copy compactions\n\nCurrently copy compactions don't count towards the total number of\ncompactions, even though the bytes they write do count towards the\ntotal bytes written by compactions.\n\nThis change fixes this and adds a copy compaction metric.","shortMessageHtmlLink":"metrics: count copy compactions"}},{"before":"a43bb5d5a335eb6a663a258a6cd58e757a09368b","after":"1a2a77b88235f87b4a4749ccb1e963b80f76858c","ref":"refs/heads/master","pushedAt":"2024-05-10T14:34:30.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jbowens","name":"Jackson Owens","path":"/jbowens","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/867352?s=80&v=4"},"commit":{"message":"db: interleave range deletion boundaries in levelIter\n\nPreviously, levelIter would sometimes interleave fake keys at file boundaries\nor user-provided iteration boundaries when a file contains range deletions.\nThis commit reworks the levelIter to instead interleave the individual bounds\nof the range deletions themselves, using an interleaving iterator. This\nsimplifies the levelIter. Because range deletions are now read in two places:\nonce for interleaving bounds and once to expose a rangeDelIter to the\nmergingIter, this commit requires opening a file's range deletion iterator\ntwice. This is an intermediary state until #2863 is completed when the\nmergingIter will consult the levelIter's interleaving iterator to determine\nwhich range deletions overlap the current iterator position.\n\nInforms #2863.","shortMessageHtmlLink":"db: interleave range deletion boundaries in levelIter"}},{"before":"8633593cf64502623de72d6f74386158f938db5c","after":"a43bb5d5a335eb6a663a258a6cd58e757a09368b","ref":"refs/heads/master","pushedAt":"2024-05-09T21:51:28.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jbowens","name":"Jackson Owens","path":"/jbowens","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/867352?s=80&v=4"},"commit":{"message":"db: adjust Iterator.NextPrefix to error if in error state\n\nRevert the changes to Iterator.nextPrefix in bfd3ee2. Instead, adjust\nIterator.NextPrefix to error if the iterator is already an error state. This\nmirrors the behavior of Iterator.Next.\n\nFix #3597.","shortMessageHtmlLink":"db: adjust Iterator.NextPrefix to error if in error state"}},{"before":"2b26224afc95097f6840d32c2854970fce95196e","after":"8633593cf64502623de72d6f74386158f938db5c","ref":"refs/heads/master","pushedAt":"2024-05-09T19:13:37.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"RaduBerinde","name":null,"path":"/RaduBerinde","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16544120?s=80&v=4"},"commit":{"message":"metamorphic: use 12 as the minimum target file size\n\nBefore the recent compaction cleanup, the output table writer was\ninitialized lazily, which means that until the first key was written\nthe estimated size was 0. So even with a tiny target size, we will get\nat least one point key and any associated spans.\n\nNow the table writer is initialized up front and the estimated size of\nan empty table writer is 8. When the target file size is less than\nthat, we try to split the table as soon as possible (and emit just a\nsmall piece of a span in many cases). These many tiny tables slow down\nthe tests a lot, to the point of timing out certain operations.\n\nThis change sets the minimum target file size in the metamorphic\ntests to 12.\n\nFixes #3594\nFixes #3595","shortMessageHtmlLink":"metamorphic: use 12 as the minimum target file size"}},{"before":"4301b8f511d92fb1ecbd9cec0a01b9a4d9ed9193","after":"2b26224afc95097f6840d32c2854970fce95196e","ref":"refs/heads/master","pushedAt":"2024-05-09T16:08:11.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"RaduBerinde","name":null,"path":"/RaduBerinde","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16544120?s=80&v=4"},"commit":{"message":"metamorphic: make a reduce parameter configurable\n\nMake the number of attempts for each probability configurable. When\nthe problem doesn't reproduce most of the time, we need more attempts.","shortMessageHtmlLink":"metamorphic: make a reduce parameter configurable"}},{"before":"98cadc9f9bcdb0150bd4f5a6072dd6c2504e63ad","after":"4301b8f511d92fb1ecbd9cec0a01b9a4d9ed9193","ref":"refs/heads/master","pushedAt":"2024-05-08T23:32:59.000Z","pushType":"pr_merge","commitsCount":4,"pusher":{"login":"RaduBerinde","name":null,"path":"/RaduBerinde","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16544120?s=80&v=4"},"commit":{"message":"compaction: clean up runCompaction\n\nIn this change we separate the code that deals with the \"data\" portion\nof the compaction from the code that deals with the \"metadata\"\nportion. These were intertwined in the old code, leading to a lot of\nclutter.\n\nWe move the \"inner\" loop of the compaction (writing one output table)\nto `compact.Runner`. We then use the tables in `compact.Result` to\ncreate the version edit.","shortMessageHtmlLink":"compaction: clean up runCompaction"}},{"before":"f03e7efeebfd3ffbe4e870b915e4897a0a9d02b4","after":"98cadc9f9bcdb0150bd4f5a6072dd6c2504e63ad","ref":"refs/heads/master","pushedAt":"2024-05-07T20:07:00.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jbowens","name":"Jackson Owens","path":"/jbowens","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/867352?s=80&v=4"},"commit":{"message":"db: fix ingested flushable range deletion iterator\n\nWhen an ingested flushable creates a range deletion iterator, it uses the\nkeyspanimpl.LevelIter to expose a unified view of all the range deletions\nacross the files of the atomically ingested sstables. When loading a sstable's\nrange deletion iterator failed, it returned a non-nil iterator to work around\nidiosyncroncies of the keyspanimpl.LevelIter. This could cause the LevelIter to\nmistakenly think it had already loaded a file's range deletions. This commit\nfixes ingestedFlushable.constructRangeDelIter to return a nil FragmentIterator\nif there's an error, and refactors (keyspanimpl.LevelIter).loadFile.\n\nFix #3592.","shortMessageHtmlLink":"db: fix ingested flushable range deletion iterator"}},{"before":"c58ac88579f6e7c50240280176c9ebb55b0a9c32","after":"f03e7efeebfd3ffbe4e870b915e4897a0a9d02b4","ref":"refs/heads/master","pushedAt":"2024-05-06T18:19:43.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"RaduBerinde","name":null,"path":"/RaduBerinde","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16544120?s=80&v=4"},"commit":{"message":"compact: some Iter cleanup\n\nRemove the `Valid`, `Key`, `Value` methods which were only used during\ntests (and the `valid` field which is now unused).","shortMessageHtmlLink":"compact: some Iter cleanup"}},{"before":"fdba3c909253420e046f97ce08cb826abe704506","after":"c58ac88579f6e7c50240280176c9ebb55b0a9c32","ref":"refs/heads/master","pushedAt":"2024-05-06T18:05:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jbowens","name":"Jackson Owens","path":"/jbowens","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/867352?s=80&v=4"},"commit":{"message":"internal/keyspan: prohibit NextPrefix at span boundary\n\nPreviously when the interleaving iterator interleaved a span boundary, the\nsemantics of calling NextPrefix were indeterminate. Ordinarily NextPrefix\nguarantees that it advances to a key with a new prefix. The existing\ninterleaving iterator implementation didn't guarantee this when positioned on a\nspan boundary. Guaranteeing it would require otherwise unnecessary key\ncomparisons.\n\nIn existing use cases (for range keys, which always begin and end at prefix\nkeys), we never call NextPrefix while positioned at a span boundary. With the\nplanned refactor of #2863, we'll begin to use the interleaving iterator to\ninterleave range deletions which may have bounds within the keys of a prefix.\nThis assertion will ensure we don't unintentionally rely on currently undefined\nbehavior of calling NextPrefix on a span boundary.","shortMessageHtmlLink":"internal/keyspan: prohibit NextPrefix at span boundary"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEUxn0uAA","startCursor":null,"endCursor":null}},"title":"Activity · cockroachdb/pebble"}