关于tinysql project3的test问题

赖沐曦_bullfrog
Sun, 10 Jul 2022 08:32:45 +0000

请问一下，第一个是在proj3中会出现一个panic，是在store/tikv/snapshot.go中的，上面显示是proj6所需要完成的。第二个有时候test会出现卡住的现象。在注释完snapshot.go的panic()之后两个问题都不再出现，这是代码框架之间的调用问题吗？

注释的代码如下：

func (s *tikvSnapshot) get(bo *Backoffer, k kv.Key) ([]byte, error) {
	// ....省略
		if keyErr := cmdGetResp.GetError(); keyErr != nil {
			// You need to handle the key error here
			// If the key error is a lock, there are 2 possible cases:
			//   1. The transaction is during commit, wait for a while and retry.
			//   2. The transaction is dead with some locks left, resolve it.
			// YOUR CODE HERE (proj6).
// 注释了下面这行panic
			//panic("YOUR CODE HERE")
			continue

		}
		return val, nil
	}
}

还有一个就是在这个test里面，TestAddColumn有一个创建表的代码，我查看了一下调用链，在这个action中有个调用的都是原生框架提供的代码，不过也有小概率会出错：

阅读完整话题