@Override public void start() { long delayInMs = getSetting(PROPERTY_DELAY, DEFAULT_DELAY_IN_MS); // in the cluster mode, avoid (but not prevent!) simultaneous executions of recovery // indexers so that a document is not handled multiple times. long initialDelayInMs = getSetting(PROPERTY_INITIAL_DELAY, RandomUtils.nextInt(1 + (int) (delayInMs / 2))); executorService.scheduleAtFixedRate( this::recover, initialDelayInMs, delayInMs, TimeUnit.MILLISECONDS); }
public RecoveryIndexer(System2 system2, Configuration config, DbClient dbClient, ResilientIndexer... indexers) { this.system2 = system2; this.config = config; this.dbClient = dbClient; this.indexersByType = new HashMap<>(); Arrays.stream(indexers).forEach(i -> i.getIndexTypes().forEach(indexType -> indexersByType.put(indexType, i))); this.minAgeInMs = getSetting(PROPERTY_MIN_AGE, DEFAULT_MIN_AGE_IN_MS); this.loopLimit = getSetting(PROPERTY_LOOP_LIMIT, DEFAULT_LOOP_LIMIT); }
@Override public void start() { long delayInMs = getSetting(PROPERTY_DELAY, DEFAULT_DELAY_IN_MS); // in the cluster mode, avoid (but not prevent!) simultaneous executions of recovery // indexers so that a document is not handled multiple times. long initialDelayInMs = getSetting(PROPERTY_INITIAL_DELAY, RandomUtils.nextInt(1 + (int) (delayInMs / 2))); executorService.scheduleAtFixedRate( this::recover, initialDelayInMs, delayInMs, TimeUnit.MILLISECONDS); }
public RecoveryIndexer(System2 system2, Configuration config, DbClient dbClient, ResilientIndexer... indexers) { this.system2 = system2; this.config = config; this.dbClient = dbClient; this.indexersByType = new HashMap<>(); Arrays.stream(indexers).forEach(i -> i.getIndexTypes().forEach(indexType -> indexersByType.put(indexType, i))); this.minAgeInMs = getSetting(PROPERTY_MIN_AGE, DEFAULT_MIN_AGE_IN_MS); this.loopLimit = getSetting(PROPERTY_LOOP_LIMIT, DEFAULT_LOOP_LIMIT); }