Git Product home page Git Product logo

Comments (2)

MrCroxx avatar MrCroxx commented on May 24, 2024

Search key in level 2, which is a non-overlap level:

[2022-04-01T07:04:45Z TRACE runkv_wheel::storage::lsm_tree] find key b"k0000000000000000000000000000000000000000000000000000000000004176" in ssts:
    [[], [], [863288426753, 863288426748], []]
thread 'test_concurrent_put_get' panicked at 'assertion failed: `(left == right)`
  left: `None`,
 right: `Some(b"v0000000000000000000000000000000000000000000000000000000000004176")`', tests/integrations/mod.rs:104:17

But actually, the two sstables overlapped in level 2:

[2022-04-01T07:04:42Z TRACE runkv_exhauster::service] build sst: Sstable {
        id: 863288426748,
        meta: SstableMeta {
            block_metas: [
                BlockMeta {
                    offset: 0,
                    len: 4156,
                    first_key: b"k0000000000000000000000000000000000000000000000000000000000004125\xff\xff\xff\xff\xff\xff\xff\xf6",
                    last_key: b"k0000000000000000000000000000000000000000000000000000000000004141\xff\xff\xff\xff\xff\xff\xff\xf6",
                },
                BlockMeta {
                    offset: 4156,
                    len: 4161,
                    first_key: b"k0000000000000000000000000000000000000000000000000000000000004141\xff\xff\xff\xff\xff\xff\xff\xfa",
                    last_key: b"k0000000000000000000000000000000000000000000000000000000000004158\xff\xff\xff\xff\xff\xff\xff\xf6",
                },
                BlockMeta {
                    offset: 8317,
                    len: 4148,
                    first_key: b"k0000000000000000000000000000000000000000000000000000000000004158\xff\xff\xff\xff\xff\xff\xff\xfa",
                    last_key: b"k0000000000000000000000000000000000000000000000000000000000004174\xff\xff\xff\xff\xff\xff\xff\xf6",
                },
                BlockMeta {
                    offset: 12465,
                    len: 4153,
                    first_key: b"k0000000000000000000000000000000000000000000000000000000000004174\xff\xff\xff\xff\xff\xff\xff\xfa",
                    last_key: b"k0000000000000000000000000000000000000000000000000000000000004190\xff\xff\xff\xff\xff\xff\xff\xfe",
                },
                BlockMeta {
                    offset: 16618,
                    len: 4149,
                    first_key: b"k0000000000000000000000000000000000000000000000000000000000004191\xff\xff\xff\xff\xff\xff\xff\xf6",
                    last_key: b"k0000000000000000000000000000000000000000000000000000000000004206\xff\xff\xff\xff\xff\xff\xff\xfa",
                },
                BlockMeta {
                    offset: 20767,
                    len: 4212,
                    first_key: b"k0000000000000000000000000000000000000000000000000000000000004206\xff\xff\xff\xff\xff\xff\xff\xfe",
                    last_key: b"k0000000000000000000000000000000000000000000000000000000000004222\xff\xff\xff\xff\xff\xff\xff\xf6",
                },
                BlockMeta {
                    offset: 24979,
                    len: 4147,
                    first_key: b"k0000000000000000000000000000000000000000000000000000000000004222\xff\xff\xff\xff\xff\xff\xff\xfa",
                    last_key: b"k0000000000000000000000000000000000000000000000000000000000004238\xff\xff\xff\xff\xff\xff\xff\xf6",
                },
                BlockMeta {
                    offset: 29126,
                    len: 4234,
                    first_key: b"k0000000000000000000000000000000000000000000000000000000000004238\xff\xff\xff\xff\xff\xff\xff\xfa",
                    last_key: b"k0000000000000000000000000000000000000000000000000000000000004255\xff\xff\xff\xff\xff\xff\xff\xfe",
                },
                BlockMeta {
                    offset: 33360,
                    len: 4147,
                    first_key: b"k0000000000000000000000000000000000000000000000000000000000004256\xff\xff\xff\xff\xff\xff\xff\xf6",
                    last_key: b"k0000000000000000000000000000000000000000000000000000000000004271\xff\xff\xff\xff\xff\xff\xff\xfa",
                },
                BlockMeta {
                    offset: 37507,
                    len: 4213,
                    first_key: b"k0000000000000000000000000000000000000000000000000000000000004271\xff\xff\xff\xff\xff\xff\xff\xfe",
                    last_key: b"k0000000000000000000000000000000000000000000000000000000000004287\xff\xff\xff\xff\xff\xff\xff\xf6",
                },
                BlockMeta {
                    offset: 41720,
                    len: 4141,
                    first_key: b"k0000000000000000000000000000000000000000000000000000000000004287\xff\xff\xff\xff\xff\xff\xff\xfa",
                    last_key: b"k0000000000000000000000000000000000000000000000000000000000004303\xff\xff\xff\xff\xff\xff\xff\xf6",
                },
                BlockMeta {
                    offset: 45861,
                    len: 4139,
                    first_key: b"k0000000000000000000000000000000000000000000000000000000000004303\xff\xff\xff\xff\xff\xff\xff\xfa",
                    last_key: b"k0000000000000000000000000000000000000000000000000000000000004318\xff\xff\xff\xff\xff\xff\xff\xfe",
                },
                BlockMeta {
                    offset: 50000,
                    len: 4149,
                    first_key: b"k0000000000000000000000000000000000000000000000000000000000004319\xff\xff\xff\xff\xff\xff\xff\xf6",
                    last_key: b"k0000000000000000000000000000000000000000000000000000000000004335\xff\xff\xff\xff\xff\xff\xff\xf6",
                },
                BlockMeta {
                    offset: 54149,
                    len: 4234,
                    first_key: b"k0000000000000000000000000000000000000000000000000000000000004335\xff\xff\xff\xff\xff\xff\xff\xfa",
                    last_key: b"k0000000000000000000000000000000000000000000000000000000000004352\xff\xff\xff\xff\xff\xff\xff\xfe",
                },
                BlockMeta {
                    offset: 58383,
                    len: 4145,
                    first_key: b"k0000000000000000000000000000000000000000000000000000000000004353\xff\xff\xff\xff\xff\xff\xff\xfa",
                    last_key: b"k0000000000000000000000000000000000000000000000000000000000004369\xff\xff\xff\xff\xff\xff\xff\xfe",
                },
                BlockMeta {
                    offset: 62528,
                    len: 4160,
                    first_key: b"k0000000000000000000000000000000000000000000000000000000000004370\xff\xff\xff\xff\xff\xff\xff\xf6",
                    last_key: b"k0000000000000000000000000000000000000000000000000000000000004387\xff\xff\xff\xff\xff\xff\xff\xf6",
                },
                BlockMeta {
                    offset: 66688,
                    len: 160,
                    first_key: b"k0000000000000000000000000000000000000000000000000000000000004387\xff\xff\xff\xff\xff\xff\xff\xfa",
                    last_key: b"k0000000000000000000000000000000000000000000000000000000000004387\xff\xff\xff\xff\xff\xff\xff\xfe",
                },
            ],
            bloom_filter_bytes: [...],
            data_size: 66852,
        },
    }
[2022-04-01T07:04:42Z DEBUG runkv_exhauster::service] sst 863288426748 uploaded


[2022-04-01T07:04:44Z TRACE runkv_exhauster::service] build sst: Sstable {
    id: 863288426753,
    meta: SstableMeta {
        block_metas: [
            BlockMeta {
                offset: 0,
                len: 4157,
                first_key: b"k0000000000000000000000000000000000000000000000000000000000003615\xff\xff\xff\xff\xff\xff\xff\xf6",
                last_key: b"k0000000000000000000000000000000000000000000000000000000000003631\xff\xff\xff\xff\xff\xff\xff\xf6",
            },
            BlockMeta {
                offset: 4157,
                len: 4241,
                first_key: b"k0000000000000000000000000000000000000000000000000000000000003631\xff\xff\xff\xff\xff\xff\xff\xfa",
                last_key: b"k0000000000000000000000000000000000000000000000000000000000003648\xff\xff\xff\xff\xff\xff\xff\xfe",
            },
            BlockMeta {
                offset: 8398,
                len: 4140,
                first_key: b"k0000000000000000000000000000000000000000000000000000000000003649\xff\xff\xff\xff\xff\xff\xff\xf6",
                last_key: b"k0000000000000000000000000000000000000000000000000000000000003664\xff\xff\xff\xff\xff\xff\xff\xfe",
            },
            BlockMeta {
                offset: 12538,
                len: 4099,
                first_key: b"k0000000000000000000000000000000000000000000000000000000000003665\xff\xff\xff\xff\xff\xff\xff\xf6",
                last_key: b"k0000000000000000000000000000000000000000000000000000000000003681\xff\xff\xff\xff\xff\xff\xff\xfa",
            },
            BlockMeta {
                offset: 16637,
                len: 4148,
                first_key: b"k0000000000000000000000000000000000000000000000000000000000003681\xff\xff\xff\xff\xff\xff\xff\xfe",
                last_key: b"k0000000000000000000000000000000000000000000000000000000000003697\xff\xff\xff\xff\xff\xff\xff\xfa",
            },
            BlockMeta {
                offset: 20785,
                len: 4142,
                first_key: b"k0000000000000000000000000000000000000000000000000000000000003697\xff\xff\xff\xff\xff\xff\xff\xfe",
                last_key: b"k0000000000000000000000000000000000000000000000000000000000003713\xff\xff\xff\xff\xff\xff\xff\xfe",
            },
            BlockMeta {
                offset: 24927,
                len: 4099,
                first_key: b"k0000000000000000000000000000000000000000000000000000000000003714\xff\xff\xff\xff\xff\xff\xff\xf6",
                last_key: b"k0000000000000000000000000000000000000000000000000000000000003730\xff\xff\xff\xff\xff\xff\xff\xfa",
            },
            BlockMeta {
                offset: 29026,
                len: 4147,
                first_key: b"k0000000000000000000000000000000000000000000000000000000000003730\xff\xff\xff\xff\xff\xff\xff\xfe",
                last_key: b"k0000000000000000000000000000000000000000000000000000000000003746\xff\xff\xff\xff\xff\xff\xff\xfa",
            },
            BlockMeta {
                offset: 33173,
                len: 4149,
                first_key: b"k0000000000000000000000000000000000000000000000000000000000003746\xff\xff\xff\xff\xff\xff\xff\xfe",
                last_key: b"k0000000000000000000000000000000000000000000000000000000000003762\xff\xff\xff\xff\xff\xff\xff\xfa",
            },
            BlockMeta {
                offset: 37322,
                len: 4148,
                first_key: b"k0000000000000000000000000000000000000000000000000000000000003762\xff\xff\xff\xff\xff\xff\xff\xfe",
                last_key: b"k0000000000000000000000000000000000000000000000000000000000003779\xff\xff\xff\xff\xff\xff\xff\xf6",
            },
            BlockMeta {
                offset: 41470,
                len: 4139,
                first_key: b"k0000000000000000000000000000000000000000000000000000000000003779\xff\xff\xff\xff\xff\xff\xff\xfa",
                last_key: b"k0000000000000000000000000000000000000000000000000000000000003795\xff\xff\xff\xff\xff\xff\xff\xf6",
            },
            BlockMeta {
                offset: 45609,
                len: 4098,
                first_key: b"k0000000000000000000000000000000000000000000000000000000000003795\xff\xff\xff\xff\xff\xff\xff\xfa",
                last_key: b"k0000000000000000000000000000000000000000000000000000000000003812\xff\xff\xff\xff\xff\xff\xff\xfa",
            },
            BlockMeta {
                offset: 49707,
                len: 4155,
                first_key: b"k0000000000000000000000000000000000000000000000000000000000003812\xff\xff\xff\xff\xff\xff\xff\xfe",
                last_key: b"k0000000000000000000000000000000000000000000000000000000000003829\xff\xff\xff\xff\xff\xff\xff\xf6",
            },
            BlockMeta {
                offset: 53862,
                len: 4139,
                first_key: b"k0000000000000000000000000000000000000000000000000000000000003829\xff\xff\xff\xff\xff\xff\xff\xfa",
                last_key: b"k0000000000000000000000000000000000000000000000000000000000003844\xff\xff\xff\xff\xff\xff\xff\xfe",
            },
            BlockMeta {
                offset: 58001,
                len: 4148,
                first_key: b"k0000000000000000000000000000000000000000000000000000000000003845\xff\xff\xff\xff\xff\xff\xff\xf6",
                last_key: b"k0000000000000000000000000000000000000000000000000000000000004656\xff\xff\xff\xff\xff\xff\xff\xfe",
            },
            BlockMeta {
                offset: 62149,
                len: 4157,
                first_key: b"k0000000000000000000000000000000000000000000000000000000000004657\xff\xff\xff\xff\xff\xff\xff\xf6",
                last_key: b"k0000000000000000000000000000000000000000000000000000000000004673\xff\xff\xff\xff\xff\xff\xff\xf6",
            },
            BlockMeta {
                offset: 66306,
                len: 160,
                first_key: b"k0000000000000000000000000000000000000000000000000000000000004673\xff\xff\xff\xff\xff\xff\xff\xfa",
                last_key: b"k0000000000000000000000000000000000000000000000000000000000004673\xff\xff\xff\xff\xff\xff\xff\xfe",
            },
        ],
        bloom_filter_bytes: [...],
        data_size: 66470,
    },
}
[2022-04-01T07:04:44Z DEBUG runkv_exhauster::service] sst 863288426753 uploaded

from runkv.

MrCroxx avatar MrCroxx commented on May 24, 2024

Reason:

Previously, during compaction, next level overlapping sstables are picked file by file with the base level sstables, which may miss some sstables that fit the gap between two sstables.

e.g.

[2022-04-01T10:17:34Z TRACE runkv_storage::lsm_tree::manifest::version] updated levels: [
    [], 
    [863288426682, 863288426715, 863288426718, 863288426719, 863288426720, 863288426721, 863288426722, 863288426723, 863288426726, 863288426727, 863288426728, 863288426729, 863288426732, 863288426733, 863288426734, 863288426735, 863288426736, 863288426737, 863288426738, 863288426739, 863288426740], 
    [863288426678, 863288426679, 863288426748, 863288426749, 863288426750, 863288426527, 863288426741, 863288426742, 863288426743, 863288426744, 863288426747, 863288426632, 863288426710, 863288426711, 863288426712, 863288426713, 863288426572, 863288426754, 863288426755, 863288426756, 863288426757, 863288426598, 863288426599, 863288426528, 863288426529], 
    [863288426714, 863288426751, 863288426752, 863288426680, 863288426708, 863288426709, 863288426606, 863288426753]
]



863288426752
                    first_key: b"k0000000000000000000000000000000000000000000000000000000000003096\xff\xff\xff\xff\xff\xff\xff\xf6",
                    last_key: b"k0000000000000000000000000000000000000000000000000000000000003613\xff\xff\xff\xff\xff\xff\xff\xfe",


[2022-04-01T10:17:34Z TRACE runkv_rudder::worker::compaction_detector] compaction version diff:
    VersionDiff {
        id: 0,
        sstable_diffs: [
            SstableDiff {
                id: 863288426744,
                level: 2,
                op: Delete,
                data_size: 66598,
                first_key: b"k0000000000000000000000000000000000000000000000000000000000002834\xff\xff\xff\xff\xff\xff\xff\xf6",
                last_key: b"k0000000000000000000000000000000000000000000000000000000000003094\xff\xff\xff\xff\xff\xff\xff\xfe",
            },
            SstableDiff {
                id: 863288426747,
                level: 2,
                op: Delete,
                data_size: 62994,
                first_key: b"k0000000000000000000000000000000000000000000000000000000000003614\xff\xff\xff\xff\xff\xff\xff\xf6",
                last_key: b"k0000000000000000000000000000000000000000000000000000000000003899\xff\xff\xff\xff\xff\xff\xff\xf6",
            },
            SstableDiff {
                id: 863288426680,
                level: 3,
                op: Delete,
                data_size: 67,
            },
            SstableDiff {
                id: 863288426708,
                level: 3,
                op: Delete,
                data_size: 67,
            },
            SstableDiff {
                id: 863288426709,
                level: 3,
                op: Delete,
                data_size: 7776,
            },



            SstableDiff {
                id: 863288426758,
                level: 3,
                op: Insert,
                data_size: 80,
            },
            SstableDiff {
                id: 863288426759,
                level: 3,
                op: Insert,
                data_size: 22222,
            },
        ],
    }

from runkv.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.