java.lang.IllegalAccessError:WAL不为空;首先提交,而不是紧凑

时间:2015-03-19 08:35:37

标签: commit mapdb

我把" localDb.commit();"在每个" localDb.compact();"之前但仍然有例外:

  

线程中的异常"线程0" java.lang.IllegalAccessError:不是   空;首先提交,而不是压缩   org.mapdb.StoreWAL.compactPreUnderLock(StoreWAL.java:1100)at   org.mapdb.StoreDirect.compact(StoreDirect.java:810)at   org.mapdb.EngineWrapper.compact(EngineWrapper.java:130)at   org.mapdb.EngineWrapper.compact(EngineWrapper.java:130)at   org.mapdb.DB.compact(DB.java:1626)

我的commit(),compact()位于Thread.run()中,我的DBMaker配置是:

DB localDb = DBMaker.newFileDB(new File(filename)).closeOnJvmShutdown().make();

商店面积:471M,包括* .compact,* .compact.p,*。p,*。t java -version:java version" 1.8.0_11" uname -r:2.6.32-279.el6.x86_64

谢谢!

1 个答案:

答案 0 :(得分:0)

https://github.com/jankotek/MapDB/issues/463

  

我通过我的同事的代码审查找到了原因。这是我的错   我将commit()/ compact()放入一个消费者线程,并将queue.offer()   进入生产者线程,由servlet调用;所以" queue.offer()"   可以在" commit()"之间调用。和" compact()"。