作者回复: 嗯,一定会的,春节快乐,近期大量时间投入在新稿,思考题后面我会一个个抽空更新,先看看大家自己思考情况,你也可以把你的想法观点在留言里面回复下。
作者回复: 感谢支持,受限篇幅的确有一些内容没覆盖到或更深入介绍,后面加餐的时候我看看能否覆盖到。
作者回复: 就是你发起一个写请求,MVCC写事物通过boltdb API执行,put写入hello的时候,它也会通过如下的boltdb API, 更新consistent index, 只是bucket名字不一样,最终这两个数据写入,都是在同一个大的boltdb事务中提交的。 如果还有疑问,可以参考下这块代码 https://github.com/etcd-io/etcd/blob/v3.4.9/mvcc/kvstore.go#L546:L556 // put the index into the underlying backend // tx has been locked in TxnBegin, so there is no need to lock it again tx.UnsafePut(metaBucketName, consistentIndexKeyName, bs) atomic.StoreUint64(&s.consistentIndex, ci)
作者回复: 事务正常提交后,tx.db等相关字段会设置为空,执行tx.RollBack后发现tx.db为空,就直接返回了哈,相当于空操作