系统信息:

板子:NVIDIA Jetson Xavier NX

系统:Ubuntu 18.04.6 LTS (GNU/Linux 4.9.201-tegra aarch64)

go version go1.17.7 linux/arm64

报错信息:

while opening memtables error: while opening fid: 1 error: while updating skiplist error: mremap size mismatch: requested: 312 got: 134217728

复现(本人的代码和以下代码类似,所以直接引用,引用出处在文末贴出):

package mainimport ("fmt""github.com/dgraph-io/badger/v3"
)func main() {dir := "./data/badger"db, err := badger.Open(badger.DefaultOptions(dir))if err != nil {fmt.Println(err)}//defer db.Close() // It's a requirement condition, not to close db
}

当成程序出现异常panic或进行kill -9 pid操作时,第二次重新启动程序出现以下错误:

while opening memtables error: while opening fid: 1 error: while updating skiplist error: mremap size mismatch: requested: 312 got: 134217728

解决:

查阅相关资料后得知,问题出现在 ristretto库 mmap_linux.go的这行代码mmapAddr, mmapSize, errno := unix.Syscall6(unix.SYS_MREMAP,header.Data,...),在ARM64中,mmapSize是旧大小而不是不是分配的大小,这导致了if mmapSize != uintptr(size)判断时返回了一个报错*“mremap size mismatch”*信息。

而这也影响了引用了Ristretto项目的Badger数据库,而Ristretto-repo中并没有发布此问题的修复版本,只在master分支上cmomit了移除mmapSize的修复代码。

解决方案:

第一步,采用 Manish R Jain在outcaste-io/ristretto项目中发布的修复版本(Manish R Jain不再维护原repo,而是在fork中维护)

第二步,将Badger和 ristrettoclone到$GOPATH/src/github.com/dgraph-io/目录下,记得checkout自己想要的branch或tag

第三步,在自己项目中的go.mod中进行replace github.com/dgraph-io/badger/v3 => /yourself/gopath/src/github.com/dgraph-io/badger

第四步,在$GOPATH/src/github.com/dgraph-io/Badger的go.mod中也进行replace github.com/dgraph-io/ristretto => /yourself/gopath/src/github.com/dgraph-io/ristretto

第五步,重新编译即可解决问题

结尾:

出现问题后查阅以下相关资料:

https://discuss.dgraph.io/t/error-mremap-size-mismatch-on-arm64/15333

https://github.com/dgraph-io/ristretto/pull/281

badger mremap size mismatch数据库异常相关推荐

  1. java getitemcount_RecyclerView.Adapter中的getItemCount() 返回数组的size是出现异常?

    1.问题描述:RecyclerView.Adapter中的getItemCount() 返回数组的size是出现异常.网络用的是okhttp,数据库框架是litepal,功能是从网络上获取JSON数据 ...

  2. oracle u01目录 100,文件目录空间利用率达到100%而导致数据库异常挂起的故障处理过...

    由数据文件目录空间利用率达到100%而导致数据库异常挂起的故障处理过程 错误内容描述: Mon Aug 03 14:05:11 2015 Thread 1 cannot allocate new lo ...

  3. oracle numa map size mismatch,Oracle启动时提示map size mismatch; abort

    Oracle启动时提示map size mismatch; abort 发布时间:2020-06-26 13:35:09 来源:51CTO 阅读:1370 作者:会说话的鱼 今天在DELL服务器的Re ...

  4. 做项目遇到问题 2 AWS NLP 剽窃RuntimeError: size mismatch, m1: [10 x 3], m2: [2 x 10]检测部署报错

    报错 RuntimeError: size mismatch, m1: [10 x 3], m2: [2 x 10] 原因: train.csv 为100x4    4列  第一列  标签是否剽窃  ...

  5. 【error】RuntimeError: size mismatch与全连接fc层

    今天跑代码的时候遇到了这个错误: RuntimeError: size mismatch, m1:[1152 x 1] ,m2:[576 x 192] ,at /opt/conda/conda-bld ...

  6. MySQL--使用innodb_force_recovery修复数据库异常

    MySQL--使用innodb_force_recovery修复数据库异常 参考文章: (1)MySQL--使用innodb_force_recovery修复数据库异常 (2)https://www. ...

  7. 数据库异常 :java.sql.SQLException: Access denied for user ‘root‘@‘localhost‘ (using password: YES)

    数据库异常 :java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) 参考文章: ...

  8. Spring访问数据库异常的处理方法(转)

    原文链接:http://sarin.javaeye.com/blog/888458 今天我们将谈谈Spring访问数据库异常的处理方法,使用JDBC API时,很多操作都要声明抛出java.sql.S ...

  9. 事务传播机制/数据库异常解析——2016-8-13分享总结

    一. 事务的传播机制/required 跟 required new 的使用与区别 基础回顾 1.1 事务的隔离级别: ISOLATION_READ_UNCOMMITTED(读未提交) ISOLATI ...

最新文章

  1. 分析模式:可复用的对象模型学习笔记
  2. 媒体洞察 | 让企业自由发展的云时代
  3. 算法设计与分析(第三周)递归实现全排列问题
  4. php 水平测试,测试您的 PHP 水平的题目_PHP教程
  5. 郸城二高2021年高考成绩查询时间,河南高考最高分是谁,2021年河南高考状元名单分数学校...
  6. 【CodeForces - 266C】Below the Diagonal (递归,子问题,贪心模拟)
  7. 每个前端工程师都应该懂的前端性能优化总结:
  8. 惊呆!骑士一天收入过万?顺丰同城回应:用户打赏约7856元
  9. ubuntu下安装php openssl扩展
  10. 人工智能TensorFlow工作笔记009---认识TensorFlow中的会话
  11. 亚马逊的冷血文化:虽然备受争议,但颇具力量
  12. OpenGLES.gpus_ReturnNotPermittedKillClient
  13. 微信小程序简单论坛实现demo,供参考。
  14. 处理器后面的字母含义_和机农一起探寻辅音字母f的含义
  15. ORA-1628: max # extents 32765 reached for rollback segment 错误处理
  16. Android国外学习资源汇总
  17. ERROR:ORA-01031:insufficient privileges完美解决方法
  18. 提问的智慧 How To Ask Questions The Smart Way
  19. android 输入法弹出 标题栏不被顶出去
  20. Java--面包师与消费者1(发送与接收线程)

热门文章

  1. HTML中详述jQuery事件绑定方式
  2. 百度android 升级,百度浏览器app下载_百度浏览器v6.4.21安卓去广告去升级版-这家软件站...
  3. 详细教你如何让小朋友不再玩网游
  4. 微信打通腾讯地图 提供地图API接口
  5. Node.js躬行记(18)——半吊子的可视化搭建系统
  6. [数据结构]二叉树的结构及实现
  7. 使用普通账户安装 Redis 服务
  8. matlab画折现_matlab画折线
  9. COM高级应用-Automation(自动化)已是昨日黄花不再高级?
  10. beecloud支付后端java