Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rotate compaction output at user key boundary #375

Closed

Commits on May 18, 2016

  1. Rotate compaction output at user key boundary

    so that keys with same user key will not spread over multiple tables in
    same level, level 1 or above.
    
    Level compaction, except for level-0, don't pick overlapping tables. So
    if we produce overlapping tables in user key level, it is possible that
    file with newer version user key got picked and compacted to next level.
    Now, the invariant that Version::Get depends on is broken, Version::Get
    is broken.
    
    The vulnerability of this approach is that a malicious client can retain
    a snapshhot and do large number of writes to same key, which can cause
    huge sorted table generated. LevelDB is a library that embedded in other
    application. I think it should be the application's responsibility to
    keep snapshhot from malicious clients.
    
    Picking overlapping tables in all level compactions is another approach
    to solve this problem. I think this approach may violate the algorithm
    this implementation implies.
    kezhuw committed May 18, 2016
    Configuration menu
    Copy the full SHA
    2546ba5 View commit details
    Browse the repository at this point in the history