reschke commented on code in PR #1314:
URL: https://github.com/apache/jackrabbit-oak/pull/1314#discussion_r1497849495
##########
oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/Utils.java:
##########
@@ -274,6 +277,61 @@ private static String diagsForEntry(Map.Entry<String,
PropertyStats> member) {
}
}
+ /**
+ * Produce an {@link UpdateOp} suitable for shrinking branch revision
entries for given property in {@link Document}, {@code null} otherwise.
+ *
+ * @param doc document to inspect for repeated branch commits
+ * @param propertName property to check for
+ * @param revisionChecker filter for revisions (for instance, to check for
cluster id)
+ * @return {@link UpdateOp} suitable for shrinking document, {@code null}
otherwise
+ */
+ public static @Nullable UpdateOp getShrinkOp(Document doc, String
propertyName, Predicate<Revision> revisionChecker) {
+ Object t_bc = doc.get("_bc");
+ Object t_property = doc.get(propertyName);
+ if (t_bc instanceof Map && t_property instanceof Map) {
+ @SuppressWarnings("unchecked")
+ Map<Revision, String> _bc = (Map<Revision, String>)t_bc;
+ @SuppressWarnings("unchecked")
+ Map<Revision, String> pMap = (Map<Revision, String>)t_property;
+ List<Revision> revs = new ArrayList<>();
+ for (Map.Entry<Revision, String> en : pMap.entrySet()) {
+ Revision r = en.getKey();
+ if (revisionChecker.apply(r)) {
+ String bcv = _bc.get(r);
+ if ("true".equals(bcv)) {
+ revs.add(r);
+ }
+ }
+ }
+ // sort by age
+ Collections.sort(revs, new Comparator<Revision>() {
Review Comment:
Not in Revision, as far as I can tell. I wanted a comparator that sorts by
clusterId first; we may not need this if we always filter by cluster id though.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]