0
這種情況是隨機發生的,我無法預測它,需要建議幫助。使用MongoVUE查看Collection
時,在Mongo中確實存在hash
以下的簡單Entity
。在LinkedHashMap中插入10 slice'es
工作正常,當在MongoDb MOngoVUE中查看數據庫時,所有內容都可以正常工作。當創建Query
如果我插入10我得到10,但在最後5(5,6,7 ..)字段hash
是空的。隨機無法使用morphia獲取嵌入對象字段值createQuery
該Collection
BatchClass
只有一個文件,這是一個即時通訊運行測試。什麼會導致這種行爲?
運行試驗:保存相同數據的5倍和3運行Query
(在MonGOVUE時的本次hash
字段爲空場hash
對所有5次測試所需的值..
確實MongoDB的有日誌文件,我可以調查
創建Query
:
Query<BatchClass> query = mongo.createQuery(BatchClass.class);
query.field(BatchClass.BATCHUUID).equal(theBatch.getBatchUuid());
query.field(BatchClass.POSITION).equal(position);
res = (BatchClass) query.get();
的Entity
:
@Entity(noClassnameStored=true)
public final class BatchClass{
@Id
private ObjectId id;
@Embedded
private LinkedHashMap<Integer, Slice> sliceTable = null;
public void insertSlice(int pos, Slice slice) {
sliceTable.put(pos,slice);
}
public Map<Integer, Slice> getSliceTable() {
return sliceTable;
}
@Entity(noClassnameStored=true)
@Embedded
public static class Slice
{
public int keyPosition;
public String sliceName;
public String hash;
public int sliceFileSize;
public boolean completed = false;
}
}
寫入後30-60秒發生失敗的讀取操作。由於MongoDb以60秒的間隔刷新到磁盤,這可能是原因。 – Erik