Repository: gora Updated Branches: refs/heads/master 08c48d966 -> cfd1c52f3
Memstore problems is fixed Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/2df96a1d Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/2df96a1d Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/2df96a1d Branch: refs/heads/master Commit: 2df96a1db3908539321d61971ab581e21fcf16e9 Parents: c2d58dd Author: cihad guzel <cguz...@gmail.com> Authored: Thu Aug 27 22:40:28 2015 +0300 Committer: cihad guzel <cguz...@gmail.com> Committed: Sat Aug 29 13:39:10 2015 +0300 ---------------------------------------------------------------------- .../org/apache/gora/memory/store/MemStore.java | 30 +++++++++++--------- 1 file changed, 17 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/gora/blob/2df96a1d/gora-core/src/main/java/org/apache/gora/memory/store/MemStore.java ---------------------------------------------------------------------- diff --git a/gora-core/src/main/java/org/apache/gora/memory/store/MemStore.java b/gora-core/src/main/java/org/apache/gora/memory/store/MemStore.java index 56ba4e3..973031a 100644 --- a/gora-core/src/main/java/org/apache/gora/memory/store/MemStore.java +++ b/gora-core/src/main/java/org/apache/gora/memory/store/MemStore.java @@ -24,7 +24,8 @@ import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.NavigableMap; -import java.util.TreeMap; +import java.util.concurrent.ConcurrentNavigableMap; +import java.util.concurrent.ConcurrentSkipListMap; import org.apache.avro.Schema.Field; @@ -88,7 +89,9 @@ public class MemStore<K, T extends PersistentBase> extends DataStoreBase<K, T> { } } - private TreeMap<K, T> map = new TreeMap<K, T>(); + // This map behaves like DB, has to be static and concurrent collection + @SuppressWarnings("rawtypes") + public static ConcurrentSkipListMap map = new ConcurrentSkipListMap(); @Override public String getSchemaName() { @@ -110,35 +113,36 @@ public class MemStore<K, T extends PersistentBase> extends DataStoreBase<K, T> { if(delete(result.getKey())) deletedRows++; } - return 0; - } - catch(Exception e){ + return deletedRows; + } catch (Exception e) { return 0; } } - + + @SuppressWarnings("unchecked") @Override public Result<K, T> execute(Query<K, T> query) { K startKey = query.getStartKey(); K endKey = query.getEndKey(); if(startKey == null) { - startKey = map.firstKey(); + startKey = (K) map.firstKey(); } if(endKey == null) { - endKey = map.lastKey(); + endKey = (K) map.lastKey(); } //check if query.fields is null query.setFields(getFieldsToQuery(query.getFields())); - NavigableMap<K, T> submap = map.subMap(startKey, true, endKey, true); + ConcurrentNavigableMap<K,T> submap = map.subMap(startKey, true, endKey, true); return new MemResult<K,T>(this, query, submap); } - + + @SuppressWarnings("unchecked") @Override public T get(K key, String[] fields) { - T obj = map.get(key); + T obj = (T) map.get(key); if (obj == null) { return null; } @@ -169,7 +173,8 @@ public class MemStore<K, T extends PersistentBase> extends DataStoreBase<K, T> { public Query<K, T> newQuery() { return new MemQuery<K, T>(this); } - + + @SuppressWarnings("unchecked") @Override public void put(K key, T obj) { map.put(key, obj); @@ -189,7 +194,6 @@ public class MemStore<K, T extends PersistentBase> extends DataStoreBase<K, T> { @Override public void close() { - map.clear(); } @Override