2016-06-17 3 views
1

インデックス構造にChronicleMapを使用しようとしていますが、これはLinux上で正常に動作するようですが、私の開発環境であるWindows上でJUnitテストを実行しているとき、 :java.io.IOException:ファイルが準備完了するまで待つことができません。おそらく、ファイルを作成したプロセスがクラッシュしたり、1分以上ハングしたりします。次の例外がスローされWindowsでのクロニクルマップの問題

File file = new File(idxFullPath); 
     ChronicleMap<Integer, int[]> idx = 
       ChronicleMapBuilder.of(Integer.class, int[].class) 
         .averageValue(getSampleIdxList()) 
         .entries(IDX_MAX_SIZE) 
         .createPersistedTo(file); 

:ここ

には問題があるコードスニペットです

[2016-06-17 14:32:47.779] ERROR main   com.mcm.op.persistence.Persistence    ERR java.io.IOException: Unable to wait until the file is ready, likely the process which created the file crashed or hung for more than 1 minute 
at net.openhft.chronicle.map.ChronicleMapBuilder.waitUntilReady(ChronicleMapBuilder.java:1520) 
at net.openhft.chronicle.map.ChronicleMapBuilder.openWithExistingFile(ChronicleMapBuilder.java:1583) 
at net.openhft.chronicle.map.ChronicleMapBuilder.createWithFile(ChronicleMapBuilder.java:1444) 
at net.openhft.chronicle.map.ChronicleMapBuilder.createPersistedTo(ChronicleMapBuilder.java:1405) 
at com.mcm.op.persistence.Persistence.initIdx(Persistence.java:131) 
at com.mcm.op.persistence.Persistence.init(Persistence.java:177) 
at com.mcm.op.persistence.PersistenceTest.initPersist(PersistenceTest.java:47) 
at com.mcm.op.persistence.PersistenceTest.setUp(PersistenceTest.java:29) 

答えて

0

を実際には、ファイルを作成したプロセスがクラッシュした、または停止し終了している可能性がありますデバッグ、またはそのようなものです。

ユニットテストからテストまでの実行で新しいインデックスを取得しても問題ない場合は、idxFullPathでファイルを削除するか、File.createTempFile()のような方法でマッピングファイルをランダム化するかを試してみることをおすすめします。どちらの場合でも、File.deleteOnExit()が役に立ちます。

ユニットテストの実行間でインデックスを保持し、同じファイルを永続性のために常にidxFullPathで使用する場合は、createPersistedTo()マップ作成方法の代わりにbuilder.createOrRecoverPersistedTo()を使用するとよいでしょう。ただし、マップの作成が遅くなる可能性があります。

関連する問題