fix(v4): retry transient confirmed device reads
This commit is contained in:
@@ -25,7 +25,8 @@ final class NetzfahrplanV4Geraeteabruf
|
||||
callable $moduleId,
|
||||
callable $refresh,
|
||||
callable $reader,
|
||||
callable $clock
|
||||
callable $clock,
|
||||
?callable $pause = null
|
||||
): array {
|
||||
$config = NetzfahrplanV4Rueckmeldung::configuration($config);
|
||||
$groups = [];
|
||||
@@ -43,7 +44,17 @@ final class NetzfahrplanV4Geraeteabruf
|
||||
if (!in_array($module, [self::MBUS_DEVICE, self::MODBUS_DEVICE, self::MODBUS_ADDRESS], true)) {
|
||||
throw new InvalidArgumentException('feedback_refresh_module_unsupported:' . $sources[0]['key']);
|
||||
}
|
||||
if ($refresh($parentId, $module) !== true) {
|
||||
$confirmed = false;
|
||||
for ($attempt = 1; $attempt <= 4; ++$attempt) {
|
||||
if ($refresh($parentId, $module) === true) {
|
||||
$confirmed = true;
|
||||
break;
|
||||
}
|
||||
if ($attempt < 4 && $pause !== null) {
|
||||
$pause(200000);
|
||||
}
|
||||
}
|
||||
if (!$confirmed) {
|
||||
throw new InvalidArgumentException('feedback_device_read_failed:' . $sources[0]['key']);
|
||||
}
|
||||
$confirmedAt = $clock();
|
||||
|
||||
Reference in New Issue
Block a user