darinm223 / disk-utils Goto Github PK
View Code? Open in Web Editor NEWDisk based structures like logs and stuff
Disk based structures like logs and stuff
Right now tests are in the same file as the modules tested but the tests itself are large so they should be separated into a separate directory.
Also right now the code is using panic::catch_unwind
in order to reliably remove test files when the code panics but it causes a lot of code bloat in each test case. Should look into either creating own temporary file wrapper (overloading Drop to remove the file) or using an existing temporary file library like:
Building the API docs and flipping between disk_utils::wal::undo_log::UndoLog and disk_utils::wal::redo_log::RedoLog they have the same API. What exactly are the differences between these two log implementations? Thanks!
Log records are supposed to use crc checksums in order to detect corruptions. The crc algorithm needs to be implemented and the record test cases need to be modified to test for corruptions on read.
Add tests for the redo log similar to that of the undo log except that they test more exactly what changes are flushed to disk on recover. One way is by making a store implementation that uses flush() and flush_change() to log all changes made in memory and on disk so that they can be tested against.
Right now there are only mutexes to allow a single UndoLog instance to be shared among multiple threads but there is nothing to prevent other processes from tampering with the log files. Look into file level locking to hopefully allow multiple processes to write to the same log without race conditions.
disk-utils/src/wal/undo_log.rs
Lines 92 to 101 in c27ec9b
Right now this code doesn't set the tid of the latest committed transaction when recovery mode is set.
disk-utils/src/wal/undo_log.rs
Line 98 in c27ec9b
Needs to be modified so that the iterator reads backward until it finds a COMMIT or ABORT record and sets the latest tid to the tid of that record.
Right now the undo log has no checkpointing feature, so nonquiescent checkpointing should be implemented since it allows for checkpointing without refusing new transactions.
List of changes needed:
Right now the undo log only allows for one transaction at a time. Update the api so that it allows for multiple transactions. What is necessary is:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.