2013-08-03 59 views
0

這種情況是隨機發生的,我無法預測它,需要建議幫助。使用MongoVUE查看Collection時,在Mongo中確實存在hash以下的簡單Entity。在LinkedHashMap中插入10 slice'es工作正常,當在MongoDb MOngoVUE中查看數據庫時,所有內容都可以正常工作。當創建Query如果我插入10我得到10,但在最後5(5,6,7 ..)字段hash是空的。隨機無法使用morphia獲取嵌入對象字段值createQuery

CollectionBatchClass只有一個文件,這是一個即時通訊運行測試。什麼會導致這種行爲?

運行試驗:保存相同數據的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; 

    } 
} 
+0

寫入後30-60秒發生失敗的讀取操作。由於MongoDb以60秒的間隔刷新到磁盤,這可能是原因。 – Erik

回答

0

寫入後30-60秒發生失敗的讀取操作。由於MongoDb以60秒的間隔刷新到磁盤,這可能是原因。

相關問題