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 <[email protected]>
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()) {

Reply via email to