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 md...@apache.org on 2013/06/13 16:37:39 UTC
svn commit: r1492688 -
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/RootImpl.java
Author: mduerig
Date: Thu Jun 13 14:37:39 2013
New Revision: 1492688
URL: http://svn.apache.org/r1492688
Log:
OAK-871: RootImpl.hasPendingChanges is slow
Reuse the modification counter int RootImpl to determine whether the are pending changes instead of testing the base state for equality with the head state.
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/RootImpl.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/RootImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/RootImpl.java?rev=1492688&r1=1492687&r2=1492688&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/RootImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/RootImpl.java Thu Jun 13 14:37:39 2013
@@ -111,7 +111,7 @@ public class RootImpl implements Root {
* Number of {@link #updated} occurred so since the last
* purge.
*/
- private int modCount;
+ private long modCount;
private PermissionProvider permissionProvider;
@@ -308,7 +308,7 @@ public class RootImpl implements Root {
@Override
public boolean hasPendingChanges() {
checkLive();
- return !getSecureBase().equals(getSecureRootState());
+ return modCount > 0;
}
@Override
@@ -376,8 +376,7 @@ public class RootImpl implements Root {
// TODO better way to determine purge limit. See OAK-175
void updated() {
- if (++modCount > PURGE_LIMIT) {
- modCount = 0;
+ if (++modCount % PURGE_LIMIT == 0) {
purgePendingChanges();
}
}