There are no “Converter not found” messages in the logs, but it doesn’t matter if the text is actually used, it is generated in each iteration. I obviously don’t know how your code looks like, but the bytecode ended up being something like this:
StringBuilder errMsg = createSbFromMessage("Converter not found for value type: ");
errMsg.append(cls.getSimpleName());;
Objects.requireNonNull(converter, errMsg.toString());
So even if the object is not null (which based on your explanation it seems to be, otherwise I would see it in the Logs?) that “bad line of code” is executed. So you probably want something like this instead:
if(converter == null) {
StringBuilder errMsg = createSbFromMessage("Converter not found for value type: ");
errMsg.append(cls.getSimpleName())
throw new NullPointerException(errMsg.toString());
}
I haven’t done much Java recently, so this might not be 100% correct, but I think you get the idea. Of course you could also do the requireNonNull instead of directly throwing the exception, but that wouldn’t be “as good as this”.
My system is constantly seeing changes and state updates, even when I did that test. Right now that time item is matching the real time, but it’s skipping seconds (only updating every 2 seconds).
I tested it with the openHAB Demo instance and with that it’s working properly (they don’t have a high volume of updates though).