Set model state offline if online check is skipped

This commit is contained in:
reusedname 2025-02-21 20:35:34 +05:00
parent f4a13cb080
commit 983e5ae25a
1 changed files with 12 additions and 6 deletions

View File

@ -77,7 +77,9 @@ public class OnlineMonitor extends Thread {
boolean skipCheckForSuspended = config.getSettings().onlineCheckSkipsPausedModels && model.isSuspended();
boolean skipCheckForMarkedAsLater = model.isMarkedForLaterRecording();
if (skipCheckForSuspended || skipCheckForMarkedAsLater) {
continue;
// force set offline in case model was suspended while online
// TODO: check if this is thread safe
setModelStateNotified(model, Model.State.OFFLINE);
} else {
futures.add(updateModel(model));
}
@ -97,6 +99,14 @@ public class OnlineMonitor extends Thread {
}
}
}
private void setModelStateNotified(Model model, Model.State state) {
Model.State oldState = states.getOrDefault(model, UNKNOWN);
states.put(model, state);
if (state != oldState) {
EventBusHolder.BUS.post(new ModelStateChangedEvent(model, oldState, state));
}
}
private ModelAwareFuture updateModel(Model model) {
final String siteName = model.getSite().getName();
@ -121,11 +131,7 @@ public class OnlineMonitor extends Thread {
state = model.getOnlineState(false);
}
LOG.debug("Model online state: {} {}", model.getName(), state);
Model.State oldState = states.getOrDefault(model, UNKNOWN);
states.put(model, state);
if (state != oldState) {
EventBusHolder.BUS.post(new ModelStateChangedEvent(model, oldState, state));
}
setModelStateNotified(model, state);
} catch (HttpException e) {
LOG.error("Couldn't check if model {} is online. HTTP Response: {} - {}", model.getName(), e.getResponseCode(), e.getResponseMessage());
} catch (SocketTimeoutException e) {