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 2022/08/24 15:38:36 UTC
[brooklyn-server] branch master updated: better logging and fix for cache not being set for some reason
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
The following commit(s) were added to refs/heads/master by this push:
new aa58872d4c better logging and fix for cache not being set for some reason
aa58872d4c is described below
commit aa58872d4c79e2c3bc46c91d4fa0db00c247a388
Author: Alex Heneveld <al...@cloudsoft.io>
AuthorDate: Wed Aug 24 16:37:01 2022 +0100
better logging and fix for cache not being set for some reason
not sure why the cache would ever be null here, but it was in one lookup;
possibly if the registered type is persisted
---
.../effector/AddSensorInitializerAbstractProto.java | 21 ++++++++++++++++-----
.../brooklyn/core/sensor/ssh/SshCommandSensor.java | 3 +++
.../brooklyn/core/typereg/BasicRegisteredType.java | 1 +
3 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/core/src/main/java/org/apache/brooklyn/core/effector/AddSensorInitializerAbstractProto.java b/core/src/main/java/org/apache/brooklyn/core/effector/AddSensorInitializerAbstractProto.java
index e4c2362a10..902a582e22 100644
--- a/core/src/main/java/org/apache/brooklyn/core/effector/AddSensorInitializerAbstractProto.java
+++ b/core/src/main/java/org/apache/brooklyn/core/effector/AddSensorInitializerAbstractProto.java
@@ -31,9 +31,12 @@ import org.apache.brooklyn.core.typereg.RegisteredTypes;
import org.apache.brooklyn.util.core.ClassLoaderUtils;
import org.apache.brooklyn.util.core.flags.BrooklynTypeNameResolution;
import org.apache.brooklyn.util.core.flags.BrooklynTypeNameResolution.BrooklynTypeNameResolver;
+import org.apache.brooklyn.util.exceptions.Exceptions;
import org.apache.brooklyn.util.guava.Maybe;
import org.apache.brooklyn.util.javalang.Boxing;
import org.apache.brooklyn.util.time.Duration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Entity initializer which adds a sensor to an entity.
@@ -42,14 +45,22 @@ import org.apache.brooklyn.util.time.Duration;
@Beta
public interface AddSensorInitializerAbstractProto<T> extends EntityInitializer {
- public static final ConfigKey<String> SENSOR_NAME = ConfigKeys.newStringConfigKey("name", "The name of the sensor to create");
- public static final ConfigKey<Duration> SENSOR_PERIOD = ConfigKeys.newConfigKey(Duration.class, "period", "Period, including units e.g. 1m or 5s or 200ms; default 5 minutes", Duration.FIVE_MINUTES);
- public static final ConfigKey<String> SENSOR_TYPE = ConfigKeys.newStringConfigKey("targetType", "Target type for the value; default String", "java.lang.String");
+ ConfigKey<String> SENSOR_NAME = ConfigKeys.newStringConfigKey("name", "The name of the sensor to create");
+ ConfigKey<Duration> SENSOR_PERIOD = ConfigKeys.newConfigKey(Duration.class, "period", "Period, including units e.g. 1m or 5s or 200ms; default 5 minutes", Duration.FIVE_MINUTES);
+ ConfigKey<String> SENSOR_TYPE = ConfigKeys.newStringConfigKey("targetType", "Target type for the value; default String", "java.lang.String");
+
+ Logger LOG = LoggerFactory.getLogger(AddSensorInitializerAbstractProto.class);
@SuppressWarnings("unchecked")
@Beta
public static <T> TypeToken<T> getType(Entity entity, String className, String name) {
- return (TypeToken<T>)(TypeToken) new BrooklynTypeNameResolver("sensor "+name+" on "+entity,
- RegisteredTypes.getClassLoadingContext(entity), true, true).getTypeToken(className);
+ try {
+ return (TypeToken<T>) (TypeToken) new BrooklynTypeNameResolver("sensor " + name + " on " + entity,
+ RegisteredTypes.getClassLoadingContext(entity), true, true).getTypeToken(className);
+ } catch (Exception e) {
+ Exceptions.propagateIfFatal(e);
+ LOG.debug("Unable to resolve type "+className+" for sensor "+name+" on "+entity+" (rethrowing)");
+ throw Exceptions.propagateAnnotated("Unable to resolve type "+className+" for sensor "+name+" "+e, e);
+ }
}
}
diff --git a/core/src/main/java/org/apache/brooklyn/core/sensor/ssh/SshCommandSensor.java b/core/src/main/java/org/apache/brooklyn/core/sensor/ssh/SshCommandSensor.java
index 551a14927a..9331c5cbdd 100644
--- a/core/src/main/java/org/apache/brooklyn/core/sensor/ssh/SshCommandSensor.java
+++ b/core/src/main/java/org/apache/brooklyn/core/sensor/ssh/SshCommandSensor.java
@@ -249,6 +249,9 @@ public final class SshCommandSensor<T> extends AbstractAddTriggerableSensor<T> {
}
}
+ if (result1.isAbsent() && Strings.isNonBlank(input)) {
+ LOG.warn("Unable to convert to "+typeToken+": "+Maybe.Absent.getException(result1)+"\n"+input);
+ }
return result1.get();
}
}
diff --git a/core/src/main/java/org/apache/brooklyn/core/typereg/BasicRegisteredType.java b/core/src/main/java/org/apache/brooklyn/core/typereg/BasicRegisteredType.java
index 8bb0908148..17752549fb 100644
--- a/core/src/main/java/org/apache/brooklyn/core/typereg/BasicRegisteredType.java
+++ b/core/src/main/java/org/apache/brooklyn/core/typereg/BasicRegisteredType.java
@@ -145,6 +145,7 @@ public class BasicRegisteredType implements RegisteredType {
@Beta // TODO depending how useful this is, it might be better to replace by a static WeakHashMap in RegisteredTypes
public ConfigBag getCache() {
+ if (cache==null) cache = new ConfigBag();
return cache;
}