データストアにいくつかのエンティティを追加する非常に単純なコードがあります。Googleのデータストアと一貫して保存されていないエンティティ
public final class storageUtil {
private static DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
public static Iterable<Entity> getAllEntities(String kind) {
Query q = new Query(kind);
PreparedQuery pq = datastore.prepare(q);
return pq.asIterable();
}
public static void putEntity(Entity entity) {
datastore.put(entity);
}
}
私はputEntity(myEntity)、その後getAllEntities(myKind)、新しく入れたエンティティを呼び出す場合は、わずか3回のうち、戻されたリスト2に表示されます。
putの直後にdatastore.get(myKey)を呼び出すと、常にputされたエントリが返されます。
何が起こっているかについて私に手がかりを与えることはできますか?
複数のスレッド、つまり競合状態が発生する可能性はありますか?私はGoogle DataStoreを知らないが、追加されたエンティティがまだフラッシュされておらず、したがってクエリによって返されないかもしれない。 – Thomas