Nasty problem: Error in Log after any Default.items modification related to channel-item links

Hello,

I’ve got a very nasty problem: Each and every time I modifiy my Default.items (where I have all my items) in a way which changes channel-item links I get a error logged, see below.
This happens every time when a item is assigned a new channel to link to or the existing relation is modified by adding a profile. The affected item-channel link is no longer working until a complete reboot of openHAB.
It occurs with channels of the KNX2 binding (which I use mostly) as well as with Modbus channels, so it does not seem to be related to a specific binding.
However, the KNX2 Binding seems to do a restart after every error logged as logged timeout-warnings (of sometimes unreadable data-points, caused by hardware and surely not related to this issue) indicate.

2022-01-09 21:38:19.466 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'Default.items'
2022-01-09 21:38:20.599 [ERROR] [ore.common.registry.AbstractRegistry] - Cannot inform the listener "org.openhab.core.thing.internal.ChannelLinkNotifier@42dbdbb0" about the "UPDATED" event: null
java.lang.NullPointerException: null
	at java.util.Objects.requireNonNull(Objects.java:221) ~[?:?]
	at org.openhab.binding.knx.internal.handler.DeviceThingHandler.getChannelTypeUID(DeviceThingHandler.java:275) ~[?:?]
	at org.openhab.binding.knx.internal.handler.DeviceThingHandler.isControl(DeviceThingHandler.java:269) ~[?:?]
	at org.openhab.binding.knx.internal.handler.DeviceThingHandler.channelLinked(DeviceThingHandler.java:162) ~[?:?]
	at org.openhab.core.thing.internal.ChannelLinkNotifier.lambda$3(ChannelLinkNotifier.java:72) ~[?:?]
	at org.openhab.core.thing.internal.ChannelLinkNotifier.call(ChannelLinkNotifier.java:96) ~[?:?]
	at org.openhab.core.thing.internal.ChannelLinkNotifier.added(ChannelLinkNotifier.java:72) ~[?:?]
	at org.openhab.core.thing.internal.ChannelLinkNotifier.updated(ChannelLinkNotifier.java:88) ~[?:?]
	at org.openhab.core.thing.internal.ChannelLinkNotifier.updated(ChannelLinkNotifier.java:1) ~[?:?]
	at org.openhab.core.common.registry.AbstractRegistry.notifyListeners(AbstractRegistry.java:387) ~[?:?]
	at org.openhab.core.common.registry.AbstractRegistry.notifyListenersAboutUpdatedElement(AbstractRegistry.java:408) ~[?:?]
	at org.openhab.core.thing.link.ItemChannelLinkRegistry.notifyListenersAboutUpdatedElement(ItemChannelLinkRegistry.java:150) ~[?:?]
	at org.openhab.core.thing.link.ItemChannelLinkRegistry.notifyListenersAboutUpdatedElement(ItemChannelLinkRegistry.java:1) ~[?:?]
	at org.openhab.core.common.registry.AbstractRegistry.updated(AbstractRegistry.java:314) ~[?:?]
	at org.openhab.core.common.registry.AbstractRegistry.updated(AbstractRegistry.java:1) ~[?:?]
	at org.openhab.core.common.registry.AbstractProvider.notifyListeners(AbstractProvider.java:66) ~[?:?]
	at org.openhab.core.common.registry.AbstractProvider.notifyListenersAboutUpdatedElement(AbstractProvider.java:91) ~[?:?]
	at org.openhab.core.model.thing.internal.GenericItemChannelLinkProvider.createItemChannelLink(GenericItemChannelLinkProvider.java:108) ~[?:?]
	at org.openhab.core.model.thing.internal.GenericItemChannelLinkProvider.processBindingConfiguration(GenericItemChannelLinkProvider.java:76) ~[?:?]
	at org.openhab.core.model.item.internal.GenericItemProvider.internalDispatchBindings(GenericItemProvider.java:372) ~[?:?]
	at org.openhab.core.model.item.internal.GenericItemProvider.internalDispatchBindings(GenericItemProvider.java:341) ~[?:?]
	at org.openhab.core.model.item.internal.GenericItemProvider.processBindingConfigsFromModel(GenericItemProvider.java:212) ~[?:?]
	at org.openhab.core.model.item.internal.GenericItemProvider.modelChanged(GenericItemProvider.java:407) ~[?:?]
	at org.openhab.core.model.core.internal.ModelRepositoryImpl.notifyListeners(ModelRepositoryImpl.java:301) ~[?:?]
	at org.openhab.core.model.core.internal.ModelRepositoryImpl.addOrRefreshModel(ModelRepositoryImpl.java:139) ~[?:?]
	at org.openhab.core.model.core.internal.folder.FolderObserver.checkFile(FolderObserver.java:249) ~[?:?]
	at org.openhab.core.model.core.internal.folder.FolderObserver.processWatchEvent(FolderObserver.java:312) ~[?:?]
	at org.openhab.core.service.WatchQueueReader.lambda$3(WatchQueueReader.java:323) ~[?:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]

This problem began to show some time ago, I first ignored it, as I did not notice its consequences. So I now can’t track back to what change caused this.

The hex-numbers part of the “ChannelLinkNotifier” after the “@” in first error log line

ChannelLinkNotifier@42dbdbb0

is always the same, no matter which item I change, until a reboot. Then it changes to a seemingly random number, which then stays the same again, even if I continue to modifiy different item-channel links. I always get the error and it is always the same.

Example: I got the log entry above when I just changed the line

DateTime Garagentor_Zeitstempel "letzte Torbewegung [%1$tA, %1$td.%1$tm.%1$tY %1$tT]" <calendar>

to

DateTime Garagentor_Zeitstempel "letzte Torbewegung [%1$tA, %1$td.%1$tm.%1$tY %1$tT]" <calendar> { channel="knx:device:bridge:generic:Garagentor_In_Bewegung" [profile="system:timestamp-change"] }

with the intention of replacing the rule which currently updates the item by a profile.

What I’ve tried already:

And I’m really running out of ideas now. The logged error has no pointers for me, so I don’t even know where to start looking.

  • Platform information:
    • Hardware: Synology NAS
    • OS: Offical openHAB Docker Image
    • openHAB version: 3.2.0

I’m grateful for any advice.

Greetings,

Sebastian

OK, found it after many hours of searching: it was caused by an item linked to a non-existing channel of the KNX-Binding.
Tracked it down by successively commenting out all of my items until the error was gone.
Thanks to @Udo_Hartmann whose advice in this thread gave me the pointer into the right direction, the KNX-Binding.