Executors threads never ends unless shutdown
This commit is contained in:
parent
bda5b11814
commit
7902d4aca6
|
@ -18,12 +18,12 @@ public class QueueFixer {
|
||||||
private final SonarrApiGateway sonarrApiGateway;
|
private final SonarrApiGateway sonarrApiGateway;
|
||||||
private final FailedImportFixer.Factory fixerFactory;
|
private final FailedImportFixer.Factory fixerFactory;
|
||||||
|
|
||||||
private final SonarrDeferredRefresher sonarrDeferredRefresher;
|
private final SonarrDeferredRefresher.Factory seriesRefresherFactory;
|
||||||
|
|
||||||
QueueFixer(SonarrApiGateway sonarGateway) {
|
QueueFixer(SonarrApiGateway sonarGateway) {
|
||||||
sonarrApiGateway = sonarGateway;
|
sonarrApiGateway = sonarGateway;
|
||||||
fixerFactory = FailedImportFixer.factory();
|
fixerFactory = FailedImportFixer.factory();
|
||||||
sonarrDeferredRefresher = new SonarrDeferredRefresher();
|
seriesRefresherFactory = SonarrDeferredRefresher.factory();
|
||||||
}
|
}
|
||||||
|
|
||||||
void fix() {
|
void fix() {
|
||||||
|
@ -98,7 +98,10 @@ public class QueueFixer {
|
||||||
Set<Integer> seriesToRefresh = recordsToFix.stream()
|
Set<Integer> seriesToRefresh = recordsToFix.stream()
|
||||||
.map(Record::getSeriesId)
|
.map(Record::getSeriesId)
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
System.out.printf("** going to refresh the following series %s%n", seriesToRefresh);
|
System.out.printf("** going to refresh the following series %s%n", seriesToRefresh);
|
||||||
sonarrDeferredRefresher.refreshSeries(seriesToRefresh);
|
seriesRefresherFactory
|
||||||
|
.forSeriesSet(seriesToRefresh)
|
||||||
|
.refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,13 +10,30 @@ import java.util.concurrent.ScheduledThreadPoolExecutor;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
public class SonarrDeferredRefresher {
|
public class SonarrDeferredRefresher {
|
||||||
private static final ScheduledExecutorService deferredRefresher = new ScheduledThreadPoolExecutor(1);
|
private final SonarrApiGateway sonarrApiGateway;
|
||||||
private final SonarrApiGateway sonarrApiGateway = Sonarr.api();
|
private final ScheduledExecutorService deferredRefresher;
|
||||||
public void refreshSeries(Set<Integer> seriesToRefresh) {
|
private final Set<Integer> seriesToRefresh;
|
||||||
|
|
||||||
|
static Factory factory() {
|
||||||
|
return new Factory();
|
||||||
|
}
|
||||||
|
static class Factory {
|
||||||
|
SonarrDeferredRefresher forSeriesSet(Set<Integer> seriesToRefresh) {
|
||||||
|
return new SonarrDeferredRefresher(seriesToRefresh);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private SonarrDeferredRefresher(Set<Integer> seriesToRefresh) {
|
||||||
|
sonarrApiGateway = Sonarr.api();
|
||||||
|
deferredRefresher = new ScheduledThreadPoolExecutor(1);
|
||||||
|
this.seriesToRefresh = seriesToRefresh;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void refresh() {
|
||||||
for (var serieId : seriesToRefresh) {
|
for (var serieId : seriesToRefresh) {
|
||||||
Runnable refreshTask = () -> sonarrApiGateway.refreshSerie(serieId);
|
Runnable refreshTask = () -> sonarrApiGateway.refreshSerie(serieId);
|
||||||
if (!ConfigLoader.isTestMode())
|
if (!ConfigLoader.isTestMode())
|
||||||
deferredRefresher.schedule(refreshTask, 5, TimeUnit.SECONDS);
|
deferredRefresher.schedule(refreshTask, 5, TimeUnit.SECONDS);
|
||||||
}
|
}
|
||||||
|
deferredRefresher.shutdown();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue