-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
levels: Expired keys and delete markers are never purged #1354
Conversation
Unfortunately, this is really tricky to test, because I don't see a way to force the engine to purge the memtable. I forced a close/open of the database in the test, which does the trick but it is not extremely pretty. |
@jarifibrahim Thank you for pointing out the obvious :) I cherry-picked the test from the other PR, which looks much better than my attempt. I confirm that it fails before the fix and passes after. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've pushed some more tests @damz! Thank you for fixing this.
Reviewable status: 0 of 2 files reviewed, all discussions resolved (waiting on @ashish-goswami, @jarifibrahim, and @manishrjain)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewable status: 0 of 2 files reviewed, all discussions resolved (waiting on @ashish-goswami and @manishrjain)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewed 2 of 2 files at r3.
Reviewable status: complete! all files reviewed, all discussions resolved (waiting on @ashish-goswami and @manishrjain)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewed 2 of 2 files at r3.
Reviewable status: complete! all files reviewed, all discussions resolved (waiting on @ashish-goswami and @manishrjain)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewed 2 of 2 files at r3.
Reviewable status: complete! all files reviewed, all discussions resolved (waiting on @ashish-goswami)
This PR adds the following changes from **Master branch to the dgraph-maintenance branch**. ``` 25fd0ef Update ristretto to commit f66de99 (#1391) fac972f Update head while replaying value log (#1372) e5fd05a Rework DB.DropPrefix (#1381) adeb842 Fix assert in background compression and encryption. (#1366) ``` The **master and dgraph-maintenace branch** have following difference `+` (in green) means commit missing on dgraph-maintenance `-` (in red) means the commit exists. ```diff + 079f5ae DefaultOptions: Set KeepL0InMemory to false (#1345) + 7e19cac Add immudb to the project list (#1341) + da80eb9 Iterator: Always add key to txn.reads (#1328) + a7e239e StreamWriter: Close head writer (#1347) + 543f353 Fix build on golang tip (#1355) + fd89894 Compaction: Expired keys and delete markers are never purged (#1354) + 056d859 Support disabling conflict detection (#1344) + b762832 Tests: Do not leave behind state goroutines (#1349) + b2267c2 Restore: Account for value size as well (#1358) + 14386ac GC: Consider size of value while rewriting (#1357) + c45d966 Fix assert in background compression and encryption. (#1366) + dd332b0 Avoid panic in filltables() (#1365) + 3f4761d Force KeepL0InMemory to be true when InMemory is true (#1375) + d37ce36 Tests: Use t.Parallel in TestIteratePrefix tests (#1377) + 158d927 Remove second initialization of writech in Open (#1382) + 675efcd Increase default valueThreshold from 32B to 1KB (#1346) + 3042e37 pre allocate cache key for the block cache and the bloom filter cache (#1371) + e013bfd Rework DB.DropPrefix (#1381) + 509de73 Update head while replaying value log (#1372) + 09dfa66 Update ristretto to commit f66de99 (#1391) + 717b89c Enable cross-compiled 32bit tests on TravisCI (#1392) ``` <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/dgraph-io/badger/1398) <!-- Reviewable:end -->
The compaction process accidentally keeps one more version of expired keys and delete markers than it should, because of logic error in *levelsController.compactBuildTables(). When NumVersionsToKeep is 1, it means that expired keys and delete markers are never actually purged from the LSM tables. Co-authored-by: Julian Hegler <julian.hegler@tanium.com> Co-authored-by: Ibrahim Jarif <ibrahim@dgraph.io> (cherry picked from commit fd89894)
…1510) The compaction process accidentally keeps one more version of expired keys and delete markers than it should, because of logic error in *levelsController.compactBuildTables(). When NumVersionsToKeep is 1, it means that expired keys and delete markers are never actually purged from the LSM tables. Co-authored-by: Julian Hegler <julian.hegler@tanium.com> Co-authored-by: Ibrahim Jarif <ibrahim@dgraph.io> (cherry picked from commit fd89894) Co-authored-by: Damien Tournoud <damien@platform.sh>
The compaction process accidentally keeps one more version of expired keys and delete markers than it should, because of logic error in *levelsController.compactBuildTables(). When NumVersionsToKeep is 1, it means that expired keys and delete markers are never actually purged from the LSM tables. Co-authored-by: Julian Hegler <julian.hegler@tanium.com> Co-authored-by: Ibrahim Jarif <ibrahim@dgraph.io>
…io#1354) (dgraph-io#1510) The compaction process accidentally keeps one more version of expired keys and delete markers than it should, because of logic error in *levelsController.compactBuildTables(). When NumVersionsToKeep is 1, it means that expired keys and delete markers are never actually purged from the LSM tables. Co-authored-by: Julian Hegler <julian.hegler@tanium.com> Co-authored-by: Ibrahim Jarif <ibrahim@dgraph.io> (cherry picked from commit fd89894) Co-authored-by: Damien Tournoud <damien@platform.sh>
The compaction process accidentally keeps one more version of expired keys and delete markers than it should, because of logic error in
*levelsController.compactBuildTables()
. WhenNumVersionsToKeep
is 1, it means that expired keys and delete markers are never actually purged from the LSM tables.This change is