You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2021/10/05 09:44:09 UTC

[brooklyn-server] 02/03: logging when a non-preferred resolver is activated

This is an automated email from the ASF dual-hosted git repository.

heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git

commit 0c7f314eb7a9b6f3a0cb0438f160ea0e45c3b28b
Author: Alex Heneveld <al...@cloudsoftcorp.com>
AuthorDate: Tue Oct 5 10:42:53 2021 +0100

    logging when a non-preferred resolver is activated
---
 .../core/typereg/BrooklynCatalogBundleResolvers.java     | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/core/src/main/java/org/apache/brooklyn/core/typereg/BrooklynCatalogBundleResolvers.java b/core/src/main/java/org/apache/brooklyn/core/typereg/BrooklynCatalogBundleResolvers.java
index 5632bca..6e9843a 100644
--- a/core/src/main/java/org/apache/brooklyn/core/typereg/BrooklynCatalogBundleResolvers.java
+++ b/core/src/main/java/org/apache/brooklyn/core/typereg/BrooklynCatalogBundleResolvers.java
@@ -141,7 +141,9 @@ public class BrooklynCatalogBundleResolvers {
             Map<BrooklynCatalogBundleResolver, Double> resolvers = forBundleWithScore(mgmt, input, options);
             Collection<String> resolversWhoDontSupport = new ArrayList<String>();
             Map<BrooklynCatalogBundleResolver, Exception> failuresFromResolvers = MutableMap.of();
-            for (BrooklynCatalogBundleResolver t : resolvers.keySet()) {
+            Double highestFailedScore = null;
+            for (Entry<BrooklynCatalogBundleResolver,Double> ti : resolvers.entrySet()) {
+                BrooklynCatalogBundleResolver t = ti.getKey();
                 try {
                     ReferenceWithError<OsgiBundleInstallationResult> result = t.install(input, options);
                     if (result == null) {
@@ -154,6 +156,17 @@ public class BrooklynCatalogBundleResolvers {
                     }
                     result.get();  // assert there is no error
                     LOG.debug("Installed bundle {} / {} for {}: {}: {}", input, (options==null ? null : options.knownBundleMetadata), Entitlements.getEntitlementContextUser(), result.get().getCode(), result.get().getMessage());
+                    if (highestFailedScore!=null) {
+                        if (highestFailedScore > 0.9 && (ti.getValue() == null || highestFailedScore > ti.getValue() + 0.1)) {
+                            // if there was an error from a high scoring resolver and a lower-scoring resolver accepted it, log a warning
+                            LOG.warn("Bundle {} was installed by fallback resolver {} because preferred resolver(s) reported issues: {} / {} (scores {})",
+                                    t, result.get().getMetadata(), resolversWhoDontSupport, failuresFromResolvers, resolvers);
+                        } else {
+                            // if there was an error from a high scoring resolver and a lower-scoring resolver accepted it, log a warning
+                            LOG.debug("Bundle {} was installed by resolver {} after other resolver(s) reported issues: {} / {} (scores {})",
+                                    t, result.get().getMetadata(), resolversWhoDontSupport, failuresFromResolvers, resolvers);
+                        }
+                    }
                     return result;
                 } catch (@SuppressWarnings("deprecation") UnsupportedCatalogBundleException e) {
                     resolversWhoDontSupport.add(t.getFormatCode() +
@@ -167,6 +180,7 @@ public class BrooklynCatalogBundleResolvers {
                             (t.getFormatCode() + " bundle installation error") + ": " +
                                     Exceptions.collapseText(e), e));
                 }
+                if (highestFailedScore==null) highestFailedScore = ti.getValue();
             }
 
             if (LOG.isDebugEnabled()) {