Closed climategadgets closed 8 months ago
More (at rev. f595dcc76783b79af0b7b08dfcb137d896a70e79):
2023-12-28 22:30:13,839 ERROR TimeoutGuard RxComputationThreadPool-4 [] kitchen-temperature: errored out
java.lang.NumberFormatException: For input string: "null"
at jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054) ~[?:?]
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Assembly trace from producer [reactor.core.publisher.FluxMapFuseable] :
reactor.core.publisher.Flux.map
net.sf.dz3r.device.z2m.v1.Z2MJsonListener.getFlux(Z2MJsonListener.java:86)
Error has been observed at the following site(s):
*_______Flux.map ⇢ at net.sf.dz3r.device.z2m.v1.Z2MJsonListener.getFlux(Z2MJsonListener.java:86)
|_ ⇢ at net.sf.dz3r.device.z2m.v1.Z2MJsonListener.getFlux(Z2MJsonListener.java:38)
|_ Flux.doOnNext ⇢ at net.sf.dz3r.signal.filter.TimeoutGuard.compute(TimeoutGuard.java:122)
|_ Flux.doOnNext ⇢ at net.sf.dz3r.signal.filter.TimeoutGuard.compute(TimeoutGuard.java:123)
Original Stack Trace:
at jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054) ~[?:?]
at jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110) ~[?:?]
at java.lang.Double.parseDouble(Double.java:651) ~[?:?]
at net.sf.dz3r.device.z2m.v1.Z2MJsonListener.convert(Z2MJsonListener.java:101) ~[dz3r-mqtt-4.2.0-SNAPSHOT.jar:?]
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:113) ~[reactor-core-3.6.0.jar:3.6.0]
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:129) ~[reactor-core-3.6.0.jar:3.6.0]
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:210) ~[reactor-core-3.6.0.jar:3.6.0]
at reactor.core.publisher.FluxFilterFuseable$FilterFuseableSubscriber.onNext(FluxFilterFuseable.java:118) ~[reactor-core-3.6.0.jar:3.6.0]
at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:716) ~[reactor-core-3.6.0.jar:3.6.0]
at reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:592) ~[reactor-core-3.6.0.jar:3.6.0]
at reactor.core.publisher.FluxFlatMap$FlatMapInner.onNext(FluxFlatMap.java:975) ~[reactor-core-3.6.0.jar:3.6.0]
at reactor.core.publisher.FluxReplay$SizeAndTimeBoundReplayBuffer.replayFused(FluxReplay.java:300) ~[reactor-core-3.6.0.jar:3.6.0]
at reactor.core.publisher.FluxReplay$SizeAndTimeBoundReplayBuffer.replay(FluxReplay.java:494) ~[reactor-core-3.6.0.jar:3.6.0]
at reactor.core.publisher.FluxReplay$ReplaySubscriber.onNext(FluxReplay.java:1345) ~[reactor-core-3.6.0.jar:3.6.0]
at reactor.core.publisher.SinkManyEmitterProcessor.drain(SinkManyEmitterProcessor.java:476) ~[reactor-core-3.6.0.jar:3.6.0]
at reactor.core.publisher.SinkManyEmitterProcessor.tryEmitNext(SinkManyEmitterProcessor.java:273) ~[reactor-core-3.6.0.jar:3.6.0]
at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100) ~[reactor-core-3.6.0.jar:3.6.0]
at net.sf.dz3r.device.mqtt.v2async.MqttListenerImpl.callback(MqttListenerImpl.java:119) ~[dz3r-mqtt-4.2.0-SNAPSHOT.jar:?]
at net.sf.dz3r.device.mqtt.v2async.MqttListenerImpl.lambda$createFlux$4(MqttListenerImpl.java:89) ~[dz3r-mqtt-4.2.0-SNAPSHOT.jar:?]
at com.hivemq.client.internal.mqtt.MqttAsyncClient$CallbackSubscriber.onNext(MqttAsyncClient.java:303) [hivemq-mqtt-client-1.3.3.jar:?]
at com.hivemq.client.internal.mqtt.MqttAsyncClient$CallbackSubscriber.onNext(MqttAsyncClient.java:288) [hivemq-mqtt-client-1.3.3.jar:?]
at com.hivemq.client.rx.FlowableWithSingle$SingleFutureSubscriber.onNext(FlowableWithSingle.java:406) [hivemq-mqtt-client-1.3.3.jar:?]
at com.hivemq.client.internal.rx.operators.FlowableWithSingleCombine$SplitSubscriber$Default.tryOnNextActual(FlowableWithSingleCombine.java:235) [hivemq-mqtt-client-1.3.3.jar:?]
at com.hivemq.client.internal.rx.operators.FlowableWithSingleCombine$SplitSubscriber.tryOnNext(FlowableWithSingleCombine.java:200) [hivemq-mqtt-client-1.3.3.jar:?]
at io.reactivex.internal.operators.flowable.FlowableObserveOn$ObserveOnConditionalSubscriber.runAsync(FlowableObserveOn.java:649) [rxjava-2.2.21.jar:?]
at io.reactivex.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:176) [rxjava-2.2.21.jar:?]
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66) [rxjava-2.2.21.jar:?]
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57) [rxjava-2.2.21.jar:?]
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:1136) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
at java.lang.Thread.run(Thread.java:840) [?:?]
Expected Behavior
No matter what, the system recovers from invalid input.
Existing Behavior
Invalid Zigbee2MQTT payload causes a system wide failure, propagating to more than one sensor. There is no workaround, the application or the container must be restarted.
Context
Invalid payload (one or more) was issued by Zigbee2MQTT at some point when devices were being removed from the hub and added to it.
Exception Trace
Observed at rev. 959638e130cd147ea2d31306603f2e697d49b1ff: