{"push_id":604630207,"size":1,"distinct_size":0,"ref":"refs/heads/master","head":"8e3b2fa9090263d8a7632c494710f4ec5d04240c","before":"9b3bad6f18428587848c19df2c1c9dd5140c2355","commits":[{"sha":"8e3b2fa9090263d8a7632c494710f4ec5d04240c","author":{"email":"318a461a071e31032a72f05ecddd4a47cf7bc648@treode.com","name":"Topher"},"message":"Rewrite StubDisk and add first use case.\n\nThis makes two significant changes to StubDisk: it changes from the old disk cleaning scheme to the new one, and it makes testing of checkpoint definite rather than probabilistic.\n\nThe old cleaning scheme involves probing objects to find what generations are still reachable. The new cleaning scheme involves releasing generations as soon as they become unreachable.\n\nThe old StubDisk would trigger checkpoint and compaction after thresholds; it was slow because one needed to write enough to trigger the thresholds. The new StubDisk and StubDiskChecks provides testing scenarios that force checkpoint and compaction; it's much more efficient.\n\nThis also adds the first use case of the StubDiskChecks: the test of the SegmentLedger. The old cleaning scheme tracked allocations in a ledger per segment, and wrote that ledger at the start of each segment. Making that ledger durable across crash and restart was messy, and probing it involved a disk seek per segment. The new cleaning scheme keeps a single global ledger. Making it durable is more straightforward, and we know immediately when we can reclaim a segment.","distinct":false,"url":"https://api.github.com/repos/Treode/store/commits/8e3b2fa9090263d8a7632c494710f4ec5d04240c"}]}