You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by st...@apache.org on 2015/08/27 14:48:04 UTC
svn commit: r1698140 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/oak/plugins/document/ClusterViewDocument.java
test/java/org/apache/jackrabbit/oak/plugins/document/ClusterViewDocumentTest.java
Author: stefanegli
Date: Thu Aug 27 12:48:04 2015
New Revision: 1698140
URL: http://svn.apache.org/r1698140
Log:
OAK-3288 : use removeMapEntry instead of unsetMapEntry - and use the correct key for the map
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterViewDocument.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ClusterViewDocumentTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterViewDocument.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterViewDocument.java?rev=1698140&r1=1698139&r2=1698140&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterViewDocument.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterViewDocument.java Thu Aug 27 12:48:04 2015
@@ -133,7 +133,7 @@ class ClusterViewDocument {
private static final DateFormat standardDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
/** number of elements kept in the CLUSTERVIEW_HISTORY_KEY field **/
- private static final int HISTORY_LIMIT = 10;
+ static final int HISTORY_LIMIT = 10;
/** the monotonically incrementing sequence number of this cluster view **/
private final long viewSeqNum;
@@ -204,13 +204,13 @@ class ClusterViewDocument {
Map<Object, String> previousHistory = previousView.getHistory();
if (previousHistory!=null) {
Map<Object, String> mapClone = new HashMap<Object, String>(previousHistory);
- while(mapClone.size()>HISTORY_LIMIT) {
+ while(mapClone.size()>=HISTORY_LIMIT) {
Revision oldestRevision = oldestRevision(mapClone);
if (oldestRevision==null) {
break;
}
- updateOp.unsetMapEntry(CLUSTER_VIEW_HISTORY_KEY, oldestRevision);
- if (mapClone.remove(oldestRevision.toString())==null) {
+ updateOp.removeMapEntry(CLUSTER_VIEW_HISTORY_KEY, oldestRevision);
+ if (mapClone.remove(oldestRevision)==null) {
// prevent an endless loop
break;
}
@@ -509,7 +509,7 @@ class ClusterViewDocument {
}
/** Returns the history map **/
- private Map<Object, String> getHistory() {
+ Map<Object, String> getHistory() {
return viewHistory;
}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ClusterViewDocumentTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ClusterViewDocumentTest.java?rev=1698140&r1=1698139&r2=1698140&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ClusterViewDocumentTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ClusterViewDocumentTest.java Thu Aug 27 12:48:04 2015
@@ -114,6 +114,31 @@ public class ClusterViewDocumentTest {
assertTrue(doc.getInactiveIds().contains(8));
}
+
+ @Test
+ public void testHistory() throws Exception {
+ final int localClusterId = 1;
+ final DocumentNodeStore ns = createMK(localClusterId).nodeStore;
+
+ // initial setting of the view
+ final Set<Integer> activeIds = new HashSet<Integer>();
+ activeIds.add(localClusterId);
+ ClusterViewDocument.readOrUpdate(ns, activeIds, null, null);
+
+ final int LOOP_CNT = 100;
+ for (int i = 0; i < LOOP_CNT; i++) {
+ // create a new instance
+ activeIds.add(i + 2);
+ ClusterViewDocument result = ClusterViewDocument.readOrUpdate(ns, activeIds, null, null);
+ assertNotNull(result);
+ assertEquals(i+2, result.getActiveIds().size());
+ if (i<10) {
+ assertEquals(i+1, result.getHistory().size());
+ } else {
+ assertTrue(result.getHistory().size()<=ClusterViewDocument.HISTORY_LIMIT);
+ }
+ }
+ }
@Test
public void testReadUpdate() throws Exception {