Skip to content

Commit c871242

Browse files
committed
wip
Signed-off-by: Attila Mészáros <[email protected]>
1 parent 63b6909 commit c871242

File tree

1 file changed

+25
-4
lines changed

1 file changed

+25
-4
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/expectation/PeriodicCleanerExpectationManager.java

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,42 @@
22

33
import java.time.Duration;
44
import java.time.LocalDateTime;
5+
import java.util.concurrent.Executors;
6+
import java.util.concurrent.ScheduledExecutorService;
7+
import java.util.concurrent.TimeUnit;
58

69
import io.fabric8.kubernetes.api.model.HasMetadata;
710
import io.javaoperatorsdk.operator.api.reconciler.IndexedResourceCache;
811

912
public class PeriodicCleanerExpectationManager<P extends HasMetadata>
1013
extends ExpectationManager<P> {
1114

15+
private final ScheduledExecutorService scheduler =
16+
Executors.newScheduledThreadPool(
17+
1,
18+
r -> {
19+
Thread thread = Executors.defaultThreadFactory().newThread(r);
20+
thread.setDaemon(true);
21+
return thread;
22+
});
23+
1224
private final Duration cleanupDelayAfterExpiration;
1325
private final IndexedResourceCache<P> primaryCache;
1426

15-
// todo fixes schedule
1627
public PeriodicCleanerExpectationManager(Duration period, Duration cleanupDelayAfterExpiration) {
17-
this.cleanupDelayAfterExpiration = cleanupDelayAfterExpiration;
18-
this.primaryCache = null;
28+
this(period, cleanupDelayAfterExpiration, null);
1929
}
2030

2131
public PeriodicCleanerExpectationManager(Duration period, IndexedResourceCache<P> primaryCache) {
22-
this.cleanupDelayAfterExpiration = null;
32+
this(period, null, primaryCache);
33+
}
34+
35+
private PeriodicCleanerExpectationManager(
36+
Duration period, Duration cleanupDelayAfterExpiration, IndexedResourceCache<P> primaryCache) {
37+
this.cleanupDelayAfterExpiration = cleanupDelayAfterExpiration;
2338
this.primaryCache = primaryCache;
39+
scheduler.scheduleWithFixedDelay(
40+
this::clean, period.toMillis(), period.toMillis(), TimeUnit.MICROSECONDS);
2441
}
2542

2643
public void clean() {
@@ -40,4 +57,8 @@ public void clean() {
4057
}
4158
});
4259
}
60+
61+
void stop() {
62+
scheduler.shutdownNow();
63+
}
4364
}

0 commit comments

Comments
 (0)