TinyKV proj_1 about transaction in reader & write

在 project 1 中, 需要使用 txn 实现 reader, 保证使用这个 reader 进行的所有 read 都是在一个事务中的。但是对于 write 呢,我发现在 engine_util.PutCF 和 engine_util.DeleteCF 每次都是重新开启一个事务,这样对于多次 modify 操作,如果其中某一次出现了问题,之前的操作就无法回滚了。对于 proj 1 我们需要考虑将write 中的多个 modify 全部包括到一个事务中吗?

可以看一下 write_batch.go

明白了,感谢。但是如果是对于 读&写 transaction 呢,这个需要在 proj1 支持吗?

需要支持

那如果需要在一个 transaction 中进行读和写的话, 我发现 server.go 的 rawGet 和 rawPut API 接到的 request 一次只能包涵一个操作,同时 request 和 response 中好像也没有能进行 transaction 状态保持的东西,相当于每次调用 rawGet 和 rawPut 都会重新创建独立的 transaction。这样的话我需要怎么将多个读操作和一些写操作放到一个 transaction 中呢?不知道我的表述是否清晰,谢谢您花费时间查看回复

只是写法上注意保证,实际上 API 的设计没有用到这种情况。

明白了,谢谢