[knx] Handle exceptions during initial read (#12520)
fixes #7239 Signed-off-by: Holger Friedrich <mail@holger-friedrich.de>
This commit is contained in:
parent
972149fb3f
commit
7e35341f23
|
@ -14,6 +14,7 @@ package org.openhab.binding.knx.internal.client;
|
|||
|
||||
import java.time.Duration;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CancellationException;
|
||||
import java.util.concurrent.CopyOnWriteArraySet;
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
|
@ -291,6 +292,8 @@ public abstract class AbstractKNXClient implements NetworkLinkListener, KNXClien
|
|||
logger.trace("Sending a Group Read Request telegram for {}", datapoint.getDatapoint().getMainAddress());
|
||||
processCommunicator.read(datapoint.getDatapoint());
|
||||
} catch (KNXException e) {
|
||||
// Note: KnxException does not cover KnxRuntimeException and subclasses KnxSecureException,
|
||||
// KnxIllegArgumentException
|
||||
if (datapoint.getRetries() < datapoint.getLimit()) {
|
||||
readDatapoints.add(datapoint);
|
||||
logger.debug("Could not read value for datapoint {}: {}. Going to retry.",
|
||||
|
@ -299,9 +302,15 @@ public abstract class AbstractKNXClient implements NetworkLinkListener, KNXClien
|
|||
logger.warn("Giving up reading datapoint {}, the number of maximum retries ({}) is reached.",
|
||||
datapoint.getDatapoint().getMainAddress(), datapoint.getLimit());
|
||||
}
|
||||
} catch (InterruptedException e) {
|
||||
} catch (InterruptedException | CancellationException e) {
|
||||
logger.debug("Interrupted sending KNX read request");
|
||||
return;
|
||||
} catch (Exception e) {
|
||||
// Any other exception: Fail gracefully, i.e. notify user and continue reading next DP.
|
||||
// Not catching this would end the scheduled read for all DPs in case of an error.
|
||||
// Severity is warning as this is likely caused by a configuration error.
|
||||
logger.warn("Error reading datapoint {}: {}", datapoint.getDatapoint().getMainAddress(),
|
||||
e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue