Author: tmaret
Date: Thu Mar 2 10:39:52 2017
New Revision: 1785100
URL: http://svn.apache.org/viewvc?rev=1785100&view=rev
Log:
SLING-6589 - DistributionPackageUtils#disposable should handle hanging packages
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/DistributionPackageUtils.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/ResourceDistributionPackageCleanup.java
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/DistributionPackageUtils.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/DistributionPackageUtils.java?rev=1785100&r1=1785099&r2=1785100&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/DistributionPackageUtils.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/DistributionPackageUtils.java
Thu Mar 2 10:39:52 2017
@@ -318,8 +318,16 @@ public class DistributionPackageUtils {
public static boolean disposable(@Nonnull Resource resource) throws
RepositoryException {
Node parent = resource.adaptTo(Node.class);
- Node refs = parent.getNode("refs");
- return !refs.hasNodes() && refs.hasProperty("released");
+ if (parent.hasNode("refs")) {
+ Node refs = parent.getNode("refs");
+ return !refs.hasNodes() && refs.hasProperty("released");
+ } else {
+ // Packages without refs nodes are likely the result of the
concurrency
+ // issue fixed in SLING-6503. Yet, we consider them non disposable.
+ log.warn("Package {} has no refs resource. Consider removing it
explicitly.", resource.getPath());
+ return false;
+ }
+
}
public static void release(Resource resource, @Nonnull String[]
holderNames) throws RepositoryException {
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/ResourceDistributionPackageCleanup.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/ResourceDistributionPackageCleanup.java?rev=1785100&r1=1785099&r2=1785100&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/ResourceDistributionPackageCleanup.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/ResourceDistributionPackageCleanup.java
Thu Mar 2 10:39:52 2017
@@ -61,12 +61,16 @@ public class ResourceDistributionPackage
for (Iterator<ResourceDistributionPackage> pkgs =
packageBuilder.getPackages(serviceResolver) ; pkgs.hasNext() ; total++) {
ResourceDistributionPackage pkg = pkgs.next();
if (pkg.disposable()) {
- log.trace("Delete package {}", pkg.getId());
+ log.debug("Delete package {}", pkg.getId());
deleted++;
pkg.delete(false);
+ } else {
+ log.debug("package {} is not disposable", pkg.getId());
}
}
- serviceResolver.commit();
+ if (serviceResolver.hasChanges()) {
+ serviceResolver.commit();
+ }
log.debug("Cleaned up {}/{} {} packages",
new Object[]{deleted, total, packageBuilder.getType()});
} catch (LoginException e) {