-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathFetchConfigurationsTask.java
37 lines (32 loc) · 1.11 KB
/
FetchConfigurationsTask.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package cloud.eppo;
import java.util.Timer;
import java.util.TimerTask;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
class FetchConfigurationsTask extends TimerTask {
private static final Logger log = LoggerFactory.getLogger(FetchConfigurationsTask.class);
private final Runnable runnable;
private final Timer timer;
private final long intervalInMillis;
private final long jitterInMillis;
FetchConfigurationsTask(
Runnable runnable, Timer timer, long intervalInMillis, long jitterInMillis) {
this.runnable = runnable;
this.timer = timer;
this.intervalInMillis = intervalInMillis;
this.jitterInMillis = jitterInMillis;
}
@Override
public void run() {
// TODO: retry on failed fetches
try {
runnable.run();
} catch (Exception e) {
log.error("[Eppo SDK] Error fetching experiment configuration", e);
}
long delay = this.intervalInMillis - (long) (Math.random() * this.jitterInMillis);
FetchConfigurationsTask nextTask =
new FetchConfigurationsTask(runnable, timer, intervalInMillis, jitterInMillis);
timer.schedule(nextTask, delay);
}
}