Author: mreutegg
Date: Wed Jan 6 15:20:25 2016
New Revision: 1723347
URL: http://svn.apache.org/viewvc?rev=1723347&view=rev
Log:
OAK-3841: Change return type of Document.getModCount() to Long
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/CachedNodeDocument.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Document.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocumentCache.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/Utils.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentStorePerformanceTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoDocumentStoreIT.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MultiDocumentStoreTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBCacheConsistencyIT.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializerTest.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/CachedNodeDocument.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/CachedNodeDocument.java?rev=1723347&r1=1723346&r2=1723347&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/CachedNodeDocument.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/CachedNodeDocument.java
Wed Jan 6 15:20:25 2016
@@ -26,7 +26,7 @@ package org.apache.jackrabbit.oak.plugin
*/
public interface CachedNodeDocument {
- Number getModCount();
+ Long getModCount();
long getCreated();
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Document.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Document.java?rev=1723347&r1=1723346&r2=1723347&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Document.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Document.java
Wed Jan 6 15:20:25 2016
@@ -83,8 +83,8 @@ public class Document implements CacheVa
* none is set.
*/
@CheckForNull
- public Number getModCount() {
- return (Number) get(MOD_COUNT);
+ public Long getModCount() {
+ return Utils.asLong((Number) get(MOD_COUNT));
}
/**
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocumentCache.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocumentCache.java?rev=1723347&r1=1723346&r2=1723347&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocumentCache.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocumentCache.java
Wed Jan 6 15:20:25 2016
@@ -79,11 +79,11 @@ public class NodeDocumentCache implement
* @return number of invalidated entries
*/
@Nonnegative
- public int invalidateOutdated(@Nonnull Map<String, Number> modCounts) {
+ public int invalidateOutdated(@Nonnull Map<String, Long> modCounts) {
int invalidatedCount = 0;
- for (Entry<String, Number> e : modCounts.entrySet()) {
+ for (Entry<String, Long> e : modCounts.entrySet()) {
String id = e.getKey();
- Number modCount = e.getValue();
+ Long modCount = e.getValue();
NodeDocument doc = getIfPresent(id);
if (doc == null) {
continue;
@@ -163,14 +163,14 @@ public class NodeDocumentCache implement
newerDoc = doc;
putInternal(doc);
} else {
- Number cachedModCount = cachedDoc.getModCount();
- Number modCount = doc.getModCount();
+ Long cachedModCount = cachedDoc.getModCount();
+ Long modCount = doc.getModCount();
if (cachedModCount == null || modCount == null) {
throw new IllegalStateException("Missing " +
Document.MOD_COUNT);
}
- if (modCount.longValue() > cachedModCount.longValue()) {
+ if (modCount > cachedModCount) {
newerDoc = doc;
putInternal(doc);
} else {
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java?rev=1723347&r1=1723346&r2=1723347&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
Wed Jan 6 15:20:25 2016
@@ -286,7 +286,7 @@ public class MongoDocumentStore implemen
ids.size(), size);
}
- Map<String, Number> modCounts = getModCounts(ids);
+ Map<String, Long> modCounts = getModCounts(ids);
result.queryCount++;
int invalidated = nodesCache.invalidateOutdated(modCounts);
@@ -704,7 +704,7 @@ public class MongoDocumentStore implemen
final long start = PERFLOG.start();
try {
// get modCount of cached document
- Number modCount = null;
+ Long modCount = null;
T cachedDoc = null;
if (collection == Collection.NODES) {
cachedDoc = (T) nodesCache.getIfPresent(updateOp.getId());
@@ -894,17 +894,17 @@ public class MongoDocumentStore implemen
try {
dbCollection.update(query.get(), update, false, true);
if (collection == Collection.NODES) {
- Map<String, Number> modCounts =
getModCounts(filterValues(cachedDocs, notNull()).keySet());
+ Map<String, Long> modCounts =
getModCounts(filterValues(cachedDocs, notNull()).keySet());
// update cache
for (Entry<String, NodeDocument> entry :
cachedDocs.entrySet()) {
// the cachedDocs is not empty, so the collection =
NODES
Lock lock = nodeLocks.acquire(entry.getKey());
try {
- Number postUpdateModCount =
modCounts.get(entry.getKey());
+ Long postUpdateModCount =
modCounts.get(entry.getKey());
if (postUpdateModCount != null
&& entry.getValue() != null
&& entry.getValue() != NodeDocument.NULL
- && (postUpdateModCount.longValue() - 1) ==
entry.getValue().getModCount()) {
+ && (postUpdateModCount - 1) ==
entry.getValue().getModCount()) {
// post update modCount is one higher than
// what we currently see in the cache. we can
// replace the cached document
@@ -943,7 +943,7 @@ public class MongoDocumentStore implemen
* @throws MongoException if the call fails
*/
@Nonnull
- private Map<String, Number> getModCounts(Iterable<String> keys)
+ private Map<String, Long> getModCounts(Iterable<String> keys)
throws MongoException {
QueryBuilder query = QueryBuilder.start(Document.ID).in(keys);
// Fetch only the modCount and id
@@ -953,10 +953,10 @@ public class MongoDocumentStore implemen
DBCursor cursor = nodes.find(query.get(), fields);
cursor.setReadPreference(ReadPreference.primary());
- Map<String, Number> modCounts = Maps.newHashMap();
+ Map<String, Long> modCounts = Maps.newHashMap();
for (DBObject obj : cursor) {
String id = (String) obj.get(Document.ID);
- Number modCount = (Number) obj.get(Document.MOD_COUNT);
+ Long modCount = Utils.asLong((Number) obj.get(Document.MOD_COUNT));
modCounts.put(id, modCount);
}
return modCounts;
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java?rev=1723347&r1=1723346&r2=1723347&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
Wed Jan 6 15:20:25 2016
@@ -1774,8 +1774,8 @@ public class RDBDocumentStore implements
}
private static long modcountOf(@Nonnull Document doc) {
- Number n = doc.getModCount();
- return n != null ? n.longValue() : -1;
+ Long n = doc.getModCount();
+ return n != null ? n : -1;
}
@Nonnull
@@ -1793,17 +1793,17 @@ public class RDBDocumentStore implements
String id = row.getId();
NodeDocument inCache = nodesCache.getIfPresent(id);
- Number modCount = row.getModcount();
+ Long modCount = row.getModcount();
// do not overwrite document in cache if the
// existing one in the cache is newer
if (inCache != null && inCache != NodeDocument.NULL) {
// check mod count
- Number cachedModCount = inCache.getModCount();
+ Long cachedModCount = inCache.getModCount();
if (cachedModCount == null) {
throw new IllegalStateException("Missing " +
Document.MOD_COUNT);
}
- if (modCount.longValue() <= cachedModCount.longValue()) {
+ if (modCount <= cachedModCount) {
// we can use the cached document
inCache.markUpToDate(now);
return castAsT(inCache);
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/Utils.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/Utils.java?rev=1723347&r1=1723346&r2=1723347&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/Utils.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/Utils.java
Wed Jan 6 15:20:25 2016
@@ -669,4 +669,21 @@ public class Utils {
}
return maxTime;
}
+
+ /**
+ * Returns the given number instance as a {@code Long}.
+ *
+ * @param n a number or {@code null}.
+ * @return the number converted to a {@code Long} or {@code null}
+ * if {@code n} is {@code null}.
+ */
+ public static Long asLong(@Nullable Number n) {
+ if (n == null) {
+ return null;
+ } else if (n instanceof Long) {
+ return (Long) n;
+ } else {
+ return n.longValue();
+ }
+ }
}
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentStorePerformanceTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentStorePerformanceTest.java?rev=1723347&r1=1723346&r2=1723347&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentStorePerformanceTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentStorePerformanceTest.java
Wed Jan 6 15:20:25 2016
@@ -412,7 +412,7 @@ public class DocumentStorePerformanceTes
assertNotNull(nd);
int cc = nd.get("c") == null ? 0 :
Integer.valueOf(nd.get("c").toString());
int uc = nd.get("u") == null ? 0 :
Integer.valueOf(nd.get("u").toString());
- long mc = nd.getModCount().longValue();
+ long mc = nd.getModCount();
String msg = String.format(
"Concurrent updates %s on %s cond. updates: %d (failures: %s),
uncond. updates: %d (failures: %s), _modCount: %d, ops/sec: %d, %% of cond.
updates: %d",
stores == 1 ? "(one ds)" : "(two ds)", super.dsname, cc,
nd.get("cfailures"), uc, nd.get("ufailures"), mc,
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoDocumentStoreIT.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoDocumentStoreIT.java?rev=1723347&r1=1723346&r2=1723347&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoDocumentStoreIT.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoDocumentStoreIT.java
Wed Jan 6 15:20:25 2016
@@ -148,7 +148,7 @@ public class MongoDocumentStoreIT extend
NodeDocument doc = docStore.find(NODES, Utils.getIdFromPath("/test"));
assertNotNull(doc);
- Number mc1 = doc.getModCount();
+ Long mc1 = doc.getModCount();
assertNotNull(mc1);
try {
mk.commit("/test", "^\"prop\":\"v2\"", head, null);
@@ -158,9 +158,9 @@ public class MongoDocumentStoreIT extend
}
doc = docStore.find(NODES, Utils.getIdFromPath("/test"));
assertNotNull(doc);
- Number mc2 = doc.getModCount();
+ Long mc2 = doc.getModCount();
assertNotNull(mc2);
- assertTrue(mc2.longValue() > mc1.longValue());
+ assertTrue(mc2 > mc1);
}
// OAK-3556
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MultiDocumentStoreTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MultiDocumentStoreTest.java?rev=1723347&r1=1723346&r2=1723347&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MultiDocumentStoreTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MultiDocumentStoreTest.java
Wed Jan 6 15:20:25 2016
@@ -102,7 +102,7 @@ public class MultiDocumentStoreTest exte
NodeDocument nd2 = super.ds2.find(Collection.NODES, id);
assertNotNull(nd1);
assertNotNull(nd2);
- long firstVersion = nd1.getModCount().longValue();
+ long firstVersion = nd1.getModCount();
assertEquals(firstVersion, nd2.getModCount().longValue());
// letTimeElapse();
@@ -225,14 +225,14 @@ public class MultiDocumentStoreTest exte
// only run test if DS supports modcount
if (orig.getModCount() != null) {
- long origMc = orig.getModCount().longValue();
+ long origMc = orig.getModCount();
UpdateOp up2 = new UpdateOp(id, false);
up2.set("_id", id);
up2.increment("_foo", 1L);
super.ds2.update(Collection.NODES, Collections.singletonList(id),
up2);
NodeDocument ds2doc = super.ds2.find(Collection.NODES, id);
- long ds2Mc = ds2doc.getModCount().longValue();
+ long ds2Mc = ds2doc.getModCount();
assertTrue("_modCount needs to be > " + origMc + " but was " +
ds2Mc, ds2Mc > origMc);
UpdateOp up1 = new UpdateOp(id, false);
@@ -241,7 +241,7 @@ public class MultiDocumentStoreTest exte
super.ds1.update(Collection.NODES, Collections.singletonList(id),
up1);
NodeDocument ds1doc = super.ds1.find(Collection.NODES, id);
- long ds1Mc = ds1doc.getModCount().longValue();
+ long ds1Mc = ds1doc.getModCount();
assertTrue("_modCount needs to be > " + ds2Mc + " but was " +
ds1Mc, ds1Mc > ds2Mc);
}
}
@@ -301,7 +301,7 @@ public class MultiDocumentStoreTest exte
try {
DocumentStore ds =
stores.get(random.nextInt(stores.size()));
NodeDocument d = ds.find(Collection.NODES, id);
- long modCount = d.getModCount().longValue();
+ long modCount = d.getModCount();
NodeDocument seen = docs.get(modCount);
if (seen == null) {
docs.put(modCount, d);
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBCacheConsistencyIT.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBCacheConsistencyIT.java?rev=1723347&r1=1723346&r2=1723347&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBCacheConsistencyIT.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBCacheConsistencyIT.java
Wed Jan 6 15:20:25 2016
@@ -154,7 +154,7 @@ public class RDBCacheConsistencyIT exten
q = (Long) value;
}
}
- mc = doc.getModCount().longValue();
+ mc = doc.getModCount();
} catch (Throwable e) {
exceptions.add(e);
}
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializerTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializerTest.java?rev=1723347&r1=1723346&r2=1723347&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializerTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializerTest.java
Wed Jan 6 15:20:25 2016
@@ -55,7 +55,7 @@ public class RDBDocumentSerializerTest
assertEquals("_foo", doc.getId());
assertEquals(true, doc.hasBinary());
assertEquals(true, doc.get(NodeDocument.DELETED_ONCE));
- assertEquals(2L, doc.getModCount());
+ assertEquals(2L, doc.getModCount().longValue());
}
@Test
@@ -64,7 +64,7 @@ public class RDBDocumentSerializerTest
NodeDocument doc = this.ser.fromRow(Collection.NODES, row);
assertEquals("_foo", doc.getId());
assertEquals(false, doc.hasBinary());
- assertEquals(2L, doc.getModCount());
+ assertEquals(2L, doc.getModCount().longValue());
}
@Test
@@ -73,7 +73,7 @@ public class RDBDocumentSerializerTest
NodeDocument doc = this.ser.fromRow(Collection.NODES, row);
assertEquals("_foo", doc.getId());
assertEquals(false, doc.hasBinary());
- assertEquals(2L, doc.getModCount());
+ assertEquals(2L, doc.getModCount().longValue());
assertEquals("string", doc.get("s"));
assertEquals(Boolean.TRUE, doc.get("b"));
assertEquals(1L, doc.get("i"));