-
Notifications
You must be signed in to change notification settings - Fork 257
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
localdb 删除key存在问题 #1203
Comments
stateDB同样存在这样的问题, 且完全忽略value为nil的key设置, 要确认下是否正确 @vipwzw |
问题现象补充测试发现的其他问题:
问题原因:可能原因: 怀疑 Del 可能有bug 导致哪里数据不对, 在特定的问题, 才会触发 List 报 NotFound 已经进行的尝试: 由于业务上可以发现这样的数据, 将对应的数据删除, ListIndex 在遍历数据时, 正常. |
问题现象用分支 chain33-fix-exec-del-key测试, 如果数据量超过一页的情况下, 调用ListIndex分页遍历数据 , 参数指定第一页的最后一条记录的key 为primaryKey, 返回依然为第一页的数据的. (预期为第二页数据) 添加日志发现, 在取第二页数据时, 在goLevelDBIt.Seek 中, 调用Seek时, 返回的不存在, 重新从开始取数据.
日志
加日志后的 Seek的代码
|
补充日志: 在Seek x=2 情况下, goLevelDBIt Seek被调用了三次,
|
确认下 这段代码是不是有问题 @vipwzw 在提供prefix和primaryKey情况下, prefix是primaryKey前缀, 最终list的k= p+prefix+primaryKey, 中间多了一个prefix 交易合约这个例子,就是 prefix参数 coins.bty:USDT:1: |
<a name="1.66.3"></a> ## [1.66.3](v1.66.2...v1.66.3) (2022-01-14) ### Bug Fixes * fix list table primary key(#1203) ([b82008a](b82008a)), closes [#1203](#1203) ## [1.66.3](v1.66.2...v1.66.3) (2022-01-14)
🎉 This issue has been resolved in version 1.66.3 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
问题现象
开启execLocalSameTime, 设区块内3笔交易
交易1: 设置key value, value不为空
交易2: 删除key, 即将key对应value标记为nil
交易3, 获取key, 此时value非空, 为交易1设置的值
问题原因
由于execLocal和exec同步执行, 采用了交易缓存txCache和区块缓存cache
txCache忽略value为nil的key值设置, 交易执行完后 commit时, cache中没有同步设置对应key
此时cache中如果已经存在key value缓存, 后续获取key的数据是错误的
The text was updated successfully, but these errors were encountered: