解决: org.iq80.leveldb.DBException: IO error: C:\data\trie\000945.sst: Could not create random access file.
以太坊MPT树的持久化层是采用了leveldb数据库,然而在抽取MPT树代码运行过程中,进行get和write操作时却发生了错误:
Caused by: org.fusesource.leveldbjni.internal.NativeDB$DBException: IO error: C:\data\trie\.sst: Could not create random access file.
at org.fusesource.leveldbjni.internal.NativeDB.checkStatus(NativeDB.java:)
at org.fusesource.leveldbjni.internal.NativeDB.get(NativeDB.java:)
at org.fusesource.leveldbjni.internal.NativeDB.get(NativeDB.java:)
at org.fusesource.leveldbjni.internal.NativeDB.get(NativeDB.java:)
at org.fusesource.leveldbjni.internal.JniDB.get(JniDB.java:)
查了一些资料才把这个问题解决,参考:https://github.com/fusesource/leveldbjni/issues/28
1. 首先增加maxOpenFiles的数量,通过观察数据库sst文件数量的变化发现,文件在50个左右,而原来maxOpenFiles=32,因此改为(datasource/LevelDbDataSource.java line75)
//options.maxOpenFiles(32);
options.maxOpenFiles(100);
2. 对get和write方法进行异常处理

异常造成的原因是:由于leveldb内部的compaction algorithm将一个level的sst文件合并到下一个level的sst文件中,因此在get或write方法就会出现找不到当前sst文件的情况,解决方法是重新get或write一次(虽然这种处理方法不太优雅,但是确实有用)。修改代码(datasource/LevelDbDataSource.java line139)
try {
byte[] ret = db.get(key);
if (logger.isTraceEnabled()) logger.trace("<~ LevelDbDataSource.get(): " + name + ", key: " + Hex.toHexString(key) + ", " + (ret == null ? "null" : ret.length));
return ret;
} catch (DBException e) {
logger.error("Exception. Retrying again...", e);
byte[] ret = db.get(key);
if (logger.isTraceEnabled()) logger.trace("<~ LevelDbDataSource.get(): " + name + ", key: " + Hex.toHexString(key) + ", " + (ret == null ? "null" : ret.length));
return ret;
}
以及(datasource/LevelDbDataSource.java line209)
try{//add 08-23 18:32
db.write(batch);
} catch (DBException e) {
logger.error("Exception. Retrying again...", e);
db.write(batch);
}//end add 08-23 18:32
这要就修复了这个bug!!
解决: org.iq80.leveldb.DBException: IO error: C:\data\trie\000945.sst: Could not create random access file.的更多相关文章
- 报错:HDFS IO error org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="/yk/dl/alarm_his":hdfs:supergroup:drwxr-xr-x
报错背景: CDH集成了Flume服务,准备通过Flume将kafka中的数据放到HDFS中, 启动Flume的时候报错. 报错现象: // :: INFO hdfs.HDFSDataStream: ...
- Mysql 错误 ERROR 1 (HY000) at line 1: Can't create/write to file '/home/kaizenly/cfg_dict.csv' (Errcode: 13 - Permission denied)
[1]问题描述 (1)执行SQL语句: use billing; select * from cfg_dict into outfile '/home/kaizenly/cfg_dict.csv' f ...
- 解决weblogic错误:java.sql.SQLRecoverableException: IO Error: Broken pipe
首先说一下系统基础架构: 服务器:weblogic11g集群 数据库:oracle数据库Rac 出错信息: 1.java.sql.SQLRecoverableException: Closed Con ...
- 解决sqoop抽数报错:IO Error: Connection reset
遇到的问题:进行sqoop抽数时,虽然能成功执行,但是过程中有很多这样的信息 19/11/20 15:17:11 INFO mapreduce.Job: Task Id : attempt_15737 ...
- FW docker使用问题总结,解决国内不能访问gcr.io的问题
docker使用问题总结 解决国内不能访问gcr.io的问题 国内可以通过https://dashboard.daocloud.io来下载. 比如?gcr.io/google_containers/p ...
- AIX盘rw_timeout值过小导致IO ERROR
刚下班没多久,接收到告警提示数据库的数据文件异常,且同时收到主机硬盘的IO ERROR告警 该数据库服务器为AIX+oracle 9i环境,登录主机验证关键日志告警 发现确实在18点48分有磁盘IO的 ...
- sqldeveloper建立新的连接是出现Status : Failure -Test failed: IO Error: The Network Adapter could not establish the connection
Status : Failure -Test failed: IO Error: The Network Adapter could not establish the connection解决办法: ...
- Open Flash Chart IO ERROR Loading test data Error #2032
http://blog.sina.com.cn/s/blog_6754464e0100qfvd.html Open Flash Chart 2 提示Open Flash Chart IO ERROR ...
- close connection error java.sql.SQLRecoverableException: IO Error: Broken pipe
java.sql.SQLRecoverableException: IO Error: Broken pipe Table of Contents 1. 错误信息 2. 分析 2.1. 连接池 2.2 ...
随机推荐
- java第六次作业(老师讲过后)
import java.util.*; public class Draw { private ArrayList list; public Draw() { list= new ArrayList( ...
- 闲鱼demo
编程是一种美德,是促使一个人不断向上发展的一种原动力 -----–以下是正文------- 最近好多app的底部标签导航使用以下形式了,所以我们就来学习一下它是如何实现的. 先看效果: 中间的&quo ...
- Centos上搭建基于L2TP的VPN
1.一些预先准备的环境 yum install -y make gcc gmp-devel xmlto bison flex xmlto libpcap-devel lsof vim-enhanced ...
- Xcode 如何删除过期的Provisioning Profile文件
Xcode 中所有的Provisioning Profile文件,都在 ~/Library/MobileDevice/Provisioning Profiles 这个文件夹下:进入该文件夹,按照文件 ...
- Django进阶2
一.ORM操作进阶 ForeignKey关联 示例models from django.db import models # Create your models here. class User(m ...
- NTP校时设置
一.Windows Server 2008 – Time Server 前言: 国家时间与频率标准实验室 && NTP服务器 也可以忽略1~6 直接跳7 如果已改过机码请使用 1 ...
- JS IOS/iPhone的Safari不兼容Javascript中的Date()问题
var date = new Date('2016-11-11 11:11:11'); document.write(date); 最近在写一个时间判断脚本,需要将固定好的字符串时间转换为时间戳进行比 ...
- winform label文本转换为图片 、Picturebox+label合并转换为图片
public Form1() { InitializeComponent(); //label存入Picturebox pictureBox1.Controls.Add(label1); pictur ...
- Handler 、 Looper 、Message
分析: Looper:prepare和loop public static final void prepare() { if (sThreadLocal.get() != null) { throw ...
- 关于AngularJs,数据绑定与自定义验证
最近开始着手学起了Angular,抱着好奇的心情开始研究了起来.忽然发现angular可以巧妙而方便的进行数据的绑定验证啊什么的.(当然,我只是刚开始学,所有可能有更强大的功能,只是我还没有看到) 那 ...