Skip to content
Snippets Groups Projects
Commit dfa8666a authored by keleher's avatar keleher
Browse files

auto

parent 08341b20
No related branches found
No related tags found
No related merge requests found
......@@ -60,14 +60,17 @@ Currently the only way to stop a runaway `testingX` is through killing it throug
### Your Tasks
Your task is to finish a few of the unfinished pieces in the two files (10
points for each). Search for **TO BE IMPLEMENTED** in `transactions.py`
Your task is to finish a few of the unfinished pieces in `transactions.py` (search for
**TO BE IMPLEMENTED**).
* [10 points] Implementing IX Locks in `transactions.py`: Currently the code supports S, X, and IS locks. So if a transaction needs to lock a tuple in the X mode, the entire relation
is locked. This
is of course not ideal and we would prefer to use IX locks (on the relation) to speed up concurrency. The code for this will largely mirror the code for IS. You will
have to change the `getXLockTuple()` function and also the `compatibility_list` appropriately.
* [20 points] Function `restartRecovery()` in `transaction.py`: This function is called if the log file indicates an inconsistency (i.e., if the logfile does not end with an empty CHECKPOINT record). If that's the case, then you must analyze the logfile and do a recovery on that.
* [20 points] Function `restartRecovery()` in `transaction.py`: This function is called if
the log file indicates an inconsistency (i.e., if the logfile does not end with an empty
CHECKPOINT record). If that's the case, then you must analyze the logfile and do a
recovery on that (see 16.4.2 for details).
For the recovery, you will need to write the code for both `revertChanges` and `restartRecovery`. `revertChanges` works by writing a compensating log
record (CLR) for each update that a failed transaction does, in the correct
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment