Author: stefanegli
Date: Wed Nov 23 16:57:52 2016
New Revision: 1771006
URL: http://svn.apache.org/viewvc?rev=1771006&view=rev
Log:
OAK-5151 : fix handling of overflown ChangeSets in ChangeSetFilterImpl
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeSet.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/ChangeSetFilterImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/FilterBuilder.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeSet.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeSet.java?rev=1771006&r1=1771005&r2=1771006&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeSet.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeSet.java
Wed Nov 23 16:57:52 2016
@@ -76,7 +76,7 @@ public class ChangeSet {
public String toString() {
return "ChangeSet{paths[maxDepth:" + maxPathDepth + "]=" + parentPaths
+ ", propertyNames=" + propertyNames
+ ", parentNodeNames=" + parentNodeNames + ",
parentNodeTypes=" + parentNodeTypes
- + ", allNodeTypes=" + allNodeTypes + "}";
+ + ", allNodeTypes=" + allNodeTypes + ", any overflow: " +
anyOverflow() + "}";
}
@CheckForNull
@@ -107,5 +107,13 @@ public class ChangeSet {
public Set<String> getAllNodeTypes() {
return allNodeTypes;
}
+
+ public boolean anyOverflow() {
+ return getAllNodeTypes() == null ||
+ getParentNodeNames() == null ||
+ getParentNodeTypes() == null ||
+ getParentPaths() == null ||
+ getPropertyNames() == null;
+ }
}
\ No newline at end of file
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/ChangeSetFilterImpl.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/ChangeSetFilterImpl.java?rev=1771006&r1=1771005&r2=1771006&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/ChangeSetFilterImpl.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/ChangeSetFilterImpl.java
Wed Nov 23 16:57:52 2016
@@ -43,6 +43,13 @@ public class ChangeSetFilterImpl impleme
private final Set<String> parentNodeNames;
private final Set<String> parentNodeTypes;
private final Set<String> propertyNames;
+
+ @Override
+ public String toString() {
+ return "ChangeSetFilterImpl[rootIncludePaths="+rootIncludePaths+",
includePathPatterns="+includePathPatterns+
+ ", excludePathPatterns="+excludePathPatterns+",
parentNodeNames="+parentNodeNames+", parentNodeTypes="+
+ parentNodeTypes+", propertyNames="+propertyNames+"]";
+ }
public ChangeSetFilterImpl(@Nonnull Set<String> includedParentPaths,
boolean isDeep, Set<String> excludedParentPaths,
Set<String> parentNodeNames, Set<String> parentNodeTypes,
Set<String> propertyNames) {
@@ -101,8 +108,15 @@ public class ChangeSetFilterImpl impleme
}
private boolean doExcludes(ChangeSet changeSet) {
- final Set<String> cpp = changeSet.getParentPaths();
- final Set<String> parentPaths = cpp != null ? new HashSet<String>(cpp)
: new HashSet<String>();
+ if (changeSet.anyOverflow()) {
+ // in case of an overflow we could
+ // either try to still determine include/exclude based on
non-overflown
+ // sets - or we can do a fail-stop and determine this as too
complex
+ // to try-to-exclude, and just include
+ //TODO: optimize this later
+ return false;
+ }
+ final Set<String> parentPaths = new
HashSet<String>(changeSet.getParentPaths());
// first go through excludes to remove those that are explicitly
// excluded
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/FilterBuilder.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/FilterBuilder.java?rev=1771006&r1=1771005&r2=1771006&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/FilterBuilder.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/FilterBuilder.java
Wed Nov 23 16:57:52 2016
@@ -397,6 +397,11 @@ public final class FilterBuilder {
final ChangeSetFilter changeSetFilter =
FilterBuilder.this.changeSetFilter;
@Override
+ public String toString() {
+ return super.toString() + "
[changeSetFilter="+changeSetFilter+"]";
+ }
+
+ @Override
public boolean includeCommit(@Nonnull String sessionId,
@CheckForNull CommitInfo info) {
return (includeSessionLocal ||
!isLocal(checkNotNull(sessionId), info))
&& (includeClusterExternal || !isExternal(info))