Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.split.engine.cache;
package io.split.cache;

import com.google.common.collect.ConcurrentHashMultiset;
import com.google.common.collect.Maps;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.split.engine.cache;
package io.split.cache;

import io.split.engine.experiments.ParsedSplit;

Expand Down
2 changes: 1 addition & 1 deletion client/src/main/java/io/split/client/SplitClientImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import io.split.client.dtos.Event;
import io.split.client.impressions.Impression;
import io.split.client.impressions.ImpressionsManager;
import io.split.engine.cache.SplitCache;
import io.split.cache.SplitCache;
import io.split.engine.evaluator.Evaluator;
import io.split.engine.SDKReadinessGates;
import io.split.engine.evaluator.EvaluatorImp;
Expand Down
16 changes: 8 additions & 8 deletions client/src/main/java/io/split/client/SplitFactoryImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@
import io.split.client.metrics.CachedMetrics;
import io.split.client.metrics.FireAndForgetMetrics;
import io.split.client.metrics.HttpMetrics;
import io.split.engine.cache.InMemoryCacheImp;
import io.split.engine.cache.SplitCache;
import io.split.cache.InMemoryCacheImp;
import io.split.cache.SplitCache;
import io.split.engine.evaluator.Evaluator;
import io.split.engine.evaluator.EvaluatorImp;
import io.split.engine.SDKReadinessGates;
import io.split.engine.common.SyncManager;
import io.split.engine.common.SyncManagerImp;
import io.split.engine.experiments.RefreshableSplitFetcher;
import io.split.engine.experiments.RefreshableSplitFetcherTask;
import io.split.engine.experiments.SplitFetcherImp;
import io.split.engine.experiments.SplitSynchronizationTask;
import io.split.engine.experiments.SplitChangeFetcher;
import io.split.engine.experiments.SplitParser;
import io.split.engine.segments.RefreshableSegmentFetcher;
Expand Down Expand Up @@ -202,8 +202,8 @@ public SplitFactoryImpl(String apiToken, SplitClientConfig config) throws URISyn
SplitChangeFetcher splitChangeFetcher = HttpSplitChangeFetcher.create(httpclient, rootTarget, uncachedFireAndForget);

final SplitCache splitCache = new InMemoryCacheImp();
final RefreshableSplitFetcher splitFetcher = new RefreshableSplitFetcher(splitChangeFetcher, splitParser, gates, splitCache);
final RefreshableSplitFetcherTask splitFetcherTask = new RefreshableSplitFetcherTask(splitFetcher, splitCache, findPollingPeriod(RANDOM, config.featuresRefreshRate()));
final SplitFetcherImp splitFetcher = new SplitFetcherImp(splitChangeFetcher, splitParser, gates, splitCache);
final SplitSynchronizationTask splitSynchronizationTask = new SplitSynchronizationTask(splitFetcher, splitCache, findPollingPeriod(RANDOM, config.featuresRefreshRate()));

List<ImpressionListener> impressionListeners = new ArrayList<>();
// Setup integrations
Expand All @@ -226,7 +226,7 @@ public SplitFactoryImpl(String apiToken, SplitClientConfig config) throws URISyn
final EventClient eventClient = EventClientImpl.create(httpclient, eventsRootTarget, config.eventsQueueSize(), config.eventFlushIntervalInMillis(), config.waitBeforeShutdown());

// SyncManager
final SyncManager syncManager = SyncManagerImp.build(config.streamingEnabled(), splitFetcherTask, splitFetcher, segmentFetcher, splitCache, config.authServiceURL(), httpclient, config.streamingServiceURL(), config.authRetryBackoffBase(), buildSSEdHttpClient(config));
final SyncManager syncManager = SyncManagerImp.build(config.streamingEnabled(), splitSynchronizationTask, splitFetcher, segmentFetcher, splitCache, config.authServiceURL(), httpclient, config.streamingServiceURL(), config.authRetryBackoffBase(), buildSSEdHttpClient(config));
syncManager.start();

// Evaluator
Expand All @@ -238,7 +238,7 @@ public void run() {
try {
segmentFetcher.close();
_log.info("Successful shutdown of segment fetchers");
splitFetcherTask.close();
splitSynchronizationTask.close();
_log.info("Successful shutdown of splits");
impressionsManager.close();
_log.info("Successful shutdown of impressions manager");
Expand Down
2 changes: 1 addition & 1 deletion client/src/main/java/io/split/client/SplitManagerImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import io.split.client.api.SplitView;
import io.split.client.dtos.Partition;
import io.split.engine.SDKReadinessGates;
import io.split.engine.cache.SplitCache;
import io.split.cache.SplitCache;
import io.split.engine.experiments.ParsedCondition;
import io.split.engine.experiments.ParsedSplit;
import org.slf4j.Logger;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package io.split.client.jmx;

import io.split.client.SplitClient;
import io.split.engine.cache.SplitCache;
import io.split.cache.SplitCache;
import io.split.engine.experiments.SplitFetcher;
import io.split.engine.segments.SegmentFetcher;
import org.slf4j.Logger;
Expand Down
12 changes: 6 additions & 6 deletions client/src/main/java/io/split/engine/common/SyncManagerImp.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

import com.google.common.annotations.VisibleForTesting;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import io.split.engine.cache.SplitCache;
import io.split.engine.experiments.RefreshableSplitFetcher;
import io.split.engine.experiments.RefreshableSplitFetcherTask;
import io.split.cache.SplitCache;
import io.split.engine.experiments.SplitFetcherImp;
import io.split.engine.experiments.SplitSynchronizationTask;
import io.split.engine.segments.RefreshableSegmentFetcher;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.slf4j.Logger;
Expand Down Expand Up @@ -46,8 +46,8 @@ public class SyncManagerImp implements SyncManager {
}

public static SyncManagerImp build(boolean streamingEnabledConfig,
RefreshableSplitFetcherTask refreshableSplitFetcherTask,
RefreshableSplitFetcher splitFetcher,
SplitSynchronizationTask splitSynchronizationTask,
SplitFetcherImp splitFetcher,
RefreshableSegmentFetcher segmentFetcher,
SplitCache splitCache,
String authUrl,
Expand All @@ -56,7 +56,7 @@ public static SyncManagerImp build(boolean streamingEnabledConfig,
int authRetryBackOffBase,
CloseableHttpClient sseHttpClient) {
LinkedBlockingQueue<PushManager.Status> pushMessages = new LinkedBlockingQueue<>();
Synchronizer synchronizer = new SynchronizerImp(refreshableSplitFetcherTask, splitFetcher, segmentFetcher, splitCache);
Synchronizer synchronizer = new SynchronizerImp(splitSynchronizationTask, splitFetcher, segmentFetcher, splitCache);
PushManager pushManager = PushManagerImp.build(synchronizer, streamingServiceUrl, authUrl, httpClient, authRetryBackOffBase, pushMessages, sseHttpClient);
return new SyncManagerImp(streamingEnabledConfig, synchronizer, pushManager, pushMessages);
}
Expand Down
20 changes: 10 additions & 10 deletions client/src/main/java/io/split/engine/common/SynchronizerImp.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

import com.google.common.util.concurrent.ThreadFactoryBuilder;

import io.split.engine.cache.SplitCache;
import io.split.engine.experiments.RefreshableSplitFetcher;
import io.split.engine.experiments.RefreshableSplitFetcherTask;
import io.split.cache.SplitCache;
import io.split.engine.experiments.SplitFetcherImp;
import io.split.engine.experiments.SplitSynchronizationTask;
import io.split.engine.segments.RefreshableSegmentFetcher;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand All @@ -19,17 +19,17 @@
public class SynchronizerImp implements Synchronizer {
private static final Logger _log = LoggerFactory.getLogger(Synchronizer.class);

private final RefreshableSplitFetcherTask _refreshableSplitFetcherTask;
private final RefreshableSplitFetcher _splitFetcher;
private final SplitSynchronizationTask _splitSynchronizationTask;
private final SplitFetcherImp _splitFetcher;
private final RefreshableSegmentFetcher _segmentFetcher;
private final ScheduledExecutorService _syncAllScheduledExecutorService;
private final SplitCache _splitCache;

public SynchronizerImp(RefreshableSplitFetcherTask refreshableSplitTask,
RefreshableSplitFetcher splitFetcher,
public SynchronizerImp(SplitSynchronizationTask splitSynchronizationTask,
SplitFetcherImp splitFetcher,
RefreshableSegmentFetcher segmentFetcher,
SplitCache splitCache) {
_refreshableSplitFetcherTask = checkNotNull(refreshableSplitTask);
_splitSynchronizationTask = checkNotNull(splitSynchronizationTask);
_splitFetcher = checkNotNull(splitFetcher);
_segmentFetcher = checkNotNull(segmentFetcher);
_splitCache = checkNotNull(splitCache);
Expand All @@ -52,14 +52,14 @@ public void syncAll() {
@Override
public void startPeriodicFetching() {
_log.debug("Starting Periodic Fetching ...");
_refreshableSplitFetcherTask.startPeriodicFetching();
_splitSynchronizationTask.startPeriodicFetching();
_segmentFetcher.startPeriodicFetching();
}

@Override
public void stopPeriodicFetching() {
_log.debug("Stop Periodic Fetching ...");
_refreshableSplitFetcherTask.stop();
_splitSynchronizationTask.stop();
_segmentFetcher.stop();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import io.split.client.dtos.ConditionType;
import io.split.client.exceptions.ChangeNumberExceptionWrapper;
import io.split.engine.cache.SplitCache;
import io.split.cache.SplitCache;
import io.split.engine.experiments.ParsedCondition;
import io.split.engine.experiments.ParsedSplit;
import io.split.engine.splitter.Splitter;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import io.split.client.dtos.SplitChange;
import io.split.client.dtos.Status;
import io.split.engine.SDKReadinessGates;
import io.split.engine.cache.SplitCache;
import io.split.cache.SplitCache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -15,9 +15,9 @@
*
* @author adil
*/
public class RefreshableSplitFetcher implements SplitFetcher, Runnable {
public class SplitFetcherImp implements SplitFetcher, Runnable {

private static final Logger _log = LoggerFactory.getLogger(RefreshableSplitFetcher.class);
private static final Logger _log = LoggerFactory.getLogger(SplitFetcherImp.class);

private final SplitParser _parser;
private final SplitChangeFetcher _splitChangeFetcher;
Expand All @@ -35,7 +35,7 @@ public class RefreshableSplitFetcher implements SplitFetcher, Runnable {
* an ARCHIVED split is received, we know if we need to remove a traffic type from the multiset.
*/

public RefreshableSplitFetcher(SplitChangeFetcher splitChangeFetcher, SplitParser parser, SDKReadinessGates gates, SplitCache splitCache) {
public SplitFetcherImp(SplitChangeFetcher splitChangeFetcher, SplitParser parser, SDKReadinessGates gates, SplitCache splitCache) {
_splitChangeFetcher = checkNotNull(splitChangeFetcher);
_parser = checkNotNull(parser);
_gates = checkNotNull(gates);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package io.split.engine.experiments;

import com.google.common.util.concurrent.ThreadFactoryBuilder;
import io.split.engine.cache.SplitCache;
import io.split.cache.SplitCache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -24,10 +24,10 @@
*
* @author adil
*/
public class RefreshableSplitFetcherTask implements Closeable {
private static final Logger _log = LoggerFactory.getLogger(RefreshableSplitFetcherTask.class);
public class SplitSynchronizationTask implements Closeable {
private static final Logger _log = LoggerFactory.getLogger(SplitSynchronizationTask.class);

private final AtomicReference<RefreshableSplitFetcher> _splitFetcher = new AtomicReference<RefreshableSplitFetcher>();
private final AtomicReference<SplitFetcherImp> _splitFetcher = new AtomicReference<SplitFetcherImp>();
private final AtomicReference<SplitCache> _splitCache = new AtomicReference<SplitCache>();
private final AtomicReference<ScheduledExecutorService> _executorService = new AtomicReference<>();
private final AtomicLong _refreshEveryNSeconds;
Expand All @@ -36,7 +36,7 @@ public class RefreshableSplitFetcherTask implements Closeable {

private ScheduledFuture<?> _scheduledFuture;

public RefreshableSplitFetcherTask(RefreshableSplitFetcher splitFetcher, SplitCache splitCache, long refreshEveryNSeconds) {
public SplitSynchronizationTask(SplitFetcherImp splitFetcher, SplitCache splitCache, long refreshEveryNSeconds) {
_splitFetcher.set(checkNotNull(splitFetcher));
_splitCache.set(checkNotNull(splitCache));
checkArgument(refreshEveryNSeconds >= 0L);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.split.engine.cache;
package io.split.cache;

import io.split.engine.experiments.ParsedSplit;
import org.junit.Assert;
Expand Down
6 changes: 2 additions & 4 deletions client/src/test/java/io/split/client/SplitClientImplTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,12 @@
import io.split.client.dtos.Partition;
import io.split.client.impressions.Impression;
import io.split.client.impressions.ImpressionsManager;
import io.split.engine.cache.InMemoryCacheImp;
import io.split.engine.cache.SplitCache;
import io.split.engine.evaluator.Evaluator;
import io.split.cache.InMemoryCacheImp;
import io.split.cache.SplitCache;
import io.split.engine.evaluator.EvaluatorImp;
import io.split.engine.SDKReadinessGates;
import io.split.engine.experiments.ParsedCondition;
import io.split.engine.experiments.ParsedSplit;
import io.split.engine.experiments.SplitFetcher;
import io.split.engine.matchers.AllKeysMatcher;
import io.split.engine.matchers.CombiningMatcher;
import io.split.engine.matchers.DependencyMatcher;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,11 @@

import com.google.common.collect.Lists;
import io.split.client.api.SplitView;
import io.split.client.dtos.Split;
import io.split.engine.ConditionsTestUtil;
import io.split.engine.SDKReadinessGates;
import io.split.engine.cache.SplitCache;
import io.split.cache.SplitCache;
import io.split.engine.experiments.ParsedCondition;
import io.split.engine.experiments.ParsedSplit;
import io.split.engine.experiments.SplitFetcher;
import io.split.engine.matchers.AllKeysMatcher;
import io.split.engine.matchers.CombiningMatcher;
import io.split.grammar.Treatments;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
package io.split.engine.common;

import io.split.engine.cache.SplitCache;
import io.split.engine.experiments.RefreshableSplitFetcher;
import io.split.engine.experiments.RefreshableSplitFetcherTask;
import io.split.cache.SplitCache;
import io.split.engine.experiments.SplitFetcherImp;
import io.split.engine.experiments.SplitSynchronizationTask;
import io.split.engine.segments.RefreshableSegmentFetcher;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;

public class SynchronizerTest {
private RefreshableSplitFetcherTask _refreshableSplitFetcherTask;
private SplitSynchronizationTask _refreshableSplitFetcherTask;
private RefreshableSegmentFetcher _segmentFetcher;
private RefreshableSplitFetcher _splitFetcher;
private SplitFetcherImp _splitFetcher;
private SplitCache _splitCache;
private Synchronizer _synchronizer;

@Before
public void beforeMethod() {
_refreshableSplitFetcherTask = Mockito.mock(RefreshableSplitFetcherTask.class);
_refreshableSplitFetcherTask = Mockito.mock(SplitSynchronizationTask.class);
_segmentFetcher = Mockito.mock(RefreshableSegmentFetcher.class);
_splitFetcher = Mockito.mock(RefreshableSplitFetcher.class);
_splitFetcher = Mockito.mock(SplitFetcherImp.class);
_splitCache = Mockito.mock(SplitCache.class);

_synchronizer = new SynchronizerImp(_refreshableSplitFetcherTask, _splitFetcher, _segmentFetcher, _splitCache);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import io.split.client.dtos.ConditionType;
import io.split.client.dtos.Partition;
import io.split.engine.SDKReadinessGates;
import io.split.engine.cache.SplitCache;
import io.split.cache.SplitCache;
import io.split.engine.experiments.ParsedCondition;
import io.split.engine.experiments.ParsedSplit;
import io.split.engine.matchers.CombiningMatcher;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
import io.split.client.dtos.Status;
import io.split.engine.ConditionsTestUtil;
import io.split.engine.SDKReadinessGates;
import io.split.engine.cache.InMemoryCacheImp;
import io.split.engine.cache.SplitCache;
import io.split.cache.InMemoryCacheImp;
import io.split.cache.SplitCache;
import io.split.engine.matchers.AllKeysMatcher;
import io.split.engine.matchers.CombiningMatcher;
import io.split.engine.segments.NoChangeSegmentChangeFetcher;
Expand Down Expand Up @@ -61,7 +61,7 @@ private void works(long startingChangeNumber) throws InterruptedException {

SDKReadinessGates gates = new SDKReadinessGates();
SplitCache cache = new InMemoryCacheImp(startingChangeNumber);
RefreshableSplitFetcher fetcher = new RefreshableSplitFetcher(splitChangeFetcher, new SplitParser(segmentFetcher), gates, cache);
SplitFetcherImp fetcher = new SplitFetcherImp(splitChangeFetcher, new SplitParser(segmentFetcher), gates, cache);

// execute the fetcher for a little bit.
executeWaitAndTerminate(fetcher, 1, 3, TimeUnit.SECONDS);
Expand Down Expand Up @@ -131,7 +131,7 @@ public void when_parser_fails_we_remove_the_experiment() throws InterruptedExcep
when(splitChangeFetcher.fetch(1L)).thenReturn(noReturn);

SplitCache cache = new InMemoryCacheImp(-1);
RefreshableSplitFetcher fetcher = new RefreshableSplitFetcher(splitChangeFetcher, new SplitParser(segmentFetcher), new SDKReadinessGates(), cache);
SplitFetcherImp fetcher = new SplitFetcherImp(splitChangeFetcher, new SplitParser(segmentFetcher), new SDKReadinessGates(), cache);

// execute the fetcher for a little bit.
executeWaitAndTerminate(fetcher, 1, 5, TimeUnit.SECONDS);
Expand All @@ -150,7 +150,7 @@ public void if_there_is_a_problem_talking_to_split_change_count_down_latch_is_no
SplitChangeFetcher splitChangeFetcher = mock(SplitChangeFetcher.class);
when(splitChangeFetcher.fetch(-1L)).thenThrow(new RuntimeException());

RefreshableSplitFetcher fetcher = new RefreshableSplitFetcher(splitChangeFetcher, new SplitParser(segmentFetcher), gates, cache);
SplitFetcherImp fetcher = new SplitFetcherImp(splitChangeFetcher, new SplitParser(segmentFetcher), gates, cache);

// execute the fetcher for a little bit.
executeWaitAndTerminate(fetcher, 1, 5, TimeUnit.SECONDS);
Expand Down Expand Up @@ -189,7 +189,7 @@ public void works_with_user_defined_segments() throws Exception {
SegmentChangeFetcher segmentChangeFetcher = new NoChangeSegmentChangeFetcher();
SegmentFetcher segmentFetcher = new RefreshableSegmentFetcher(segmentChangeFetcher, 1,10, gates);
segmentFetcher.startPeriodicFetching();
RefreshableSplitFetcher fetcher = new RefreshableSplitFetcher(experimentChangeFetcher, new SplitParser(segmentFetcher), gates, cache);
SplitFetcherImp fetcher = new SplitFetcherImp(experimentChangeFetcher, new SplitParser(segmentFetcher), gates, cache);

// execute the fetcher for a little bit.
executeWaitAndTerminate(fetcher, 1, 5, TimeUnit.SECONDS);
Expand Down
2 changes: 1 addition & 1 deletion client/src/test/resources/log4j.properties
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ log4j.logger.io.split.engine.SDKReadinessGates=WARN
#log4j.logger.split.org.apache.http=info
#log4j.logger.org.apache.http=info
#log4j.logger.split.org.apache.http.wire=info
#log4j.logger.io.split.engine.experiments.RefreshableSplitFetcher=debug
#log4j.logger.io.split.engine.experiments.SplitFetcherImp=debug