Skip to content

Commit c637a58

Browse files
Fixing final stats sync
1 parent 848787d commit c637a58

File tree

5 files changed

+28
-14
lines changed

5 files changed

+28
-14
lines changed

client/src/main/java/io/split/client/SplitFactoryImpl.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -182,18 +182,22 @@ public synchronized void destroy() {
182182
if (!isTerminated) {
183183
_log.info("Shutdown called for split");
184184
try {
185-
_segmentSynchronizationTaskImp.close();
186-
_log.info("Successful shutdown of segment fetchers");
187-
_splitSynchronizationTask.close();
188-
_log.info("Successful shutdown of splits");
185+
long splitCount = _splitCache.getAll().stream().count();
186+
long segmentCount = _segmentCache.getAll().stream().count();
187+
long segmentKeyCount = _segmentCache.getAllKeys().stream().count();
189188
_impressionsManager.close();
190189
_log.info("Successful shutdown of impressions manager");
191190
_eventClient.close();
192191
_log.info("Successful shutdown of eventClient");
192+
_segmentSynchronizationTaskImp.close();
193+
_log.info("Successful shutdown of segment fetchers");
194+
_splitSynchronizationTask.close();
195+
_log.info("Successful shutdown of splits");
193196
_syncManager.shutdown();
194197
_log.info("Successful shutdown of syncManager");
195198
_telemetryStorage.recordSessionLength(System.currentTimeMillis() - _startTime);
196-
_telemetrySyncTask.stopScheduledTask();
199+
_telemetrySyncTask.stopScheduledTask(splitCount, segmentCount, segmentKeyCount);
200+
_log.info("Successful shutdown of telemetry sync task");
197201
_httpclient.close();
198202
_log.info("Successful shutdown of httpclient");
199203
} catch (IOException e) {

client/src/main/java/io/split/telemetry/synchronizer/TelemetrySubmitter.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,15 @@ public void synchronizeStats() throws Exception {
5454
_httpHttpTelemetryMemorySender.postStats(generateStats());
5555
}
5656

57+
@Override
58+
public void finalSynchronization(long splitCount, long segmentCount, long segmentKeyCount) throws Exception {
59+
Stats stats = generateStats();
60+
stats.set_splitCount(splitCount);
61+
stats.set_segmentCount(segmentCount);
62+
stats.set_segmentKeyCount(segmentKeyCount);
63+
_httpHttpTelemetryMemorySender.postStats(stats);
64+
}
65+
5766
@VisibleForTesting
5867
Stats generateStats() throws Exception {
5968
Stats stats = new Stats();

client/src/main/java/io/split/telemetry/synchronizer/TelemetrySyncTask.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,19 @@ public TelemetrySyncTask(int telemetryRefreshRate, TelemetrySynchronizer telemet
3030
}
3131

3232
@VisibleForTesting
33-
protected void startScheduledTask() throws Exception {
33+
protected void startScheduledTask() {
3434
_telemetrySyncScheduledExecutorService.scheduleWithFixedDelay(() -> {
3535
try {
3636
_telemetrySynchronizer.synchronizeStats();
3737
} catch (Exception e) {
3838
e.printStackTrace();
3939
}
40-
},0l, _telemetryRefreshRate, TimeUnit.SECONDS);
40+
},_telemetryRefreshRate, _telemetryRefreshRate, TimeUnit.SECONDS);
4141
}
4242

43-
public void stopScheduledTask() {
43+
public void stopScheduledTask(long splitCount, long segmentCount, long segmentKeyCount) {
4444
try {
45-
_telemetrySynchronizer.synchronizeStats();
45+
_telemetrySynchronizer.finalSynchronization(splitCount, segmentCount, segmentKeyCount);
4646
} catch (Exception e) {
4747
e.printStackTrace();
4848
}

client/src/main/java/io/split/telemetry/synchronizer/TelemetrySynchronizer.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@
88
public interface TelemetrySynchronizer {
99
void synchronizeConfig(SplitClientConfig config, long timeUntilReady, Map<String, Long> factoryInstances, List<String> tags);
1010
void synchronizeStats() throws Exception;
11+
void finalSynchronization(long splitCount, long segmentCount, long segmentKeyCount) throws Exception;
1112
}

client/src/test/java/io/split/telemetry/synchronizer/TelemetrySyncTaskTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public void testSynchronizationTask() throws Exception {
1111
Mockito.doNothing().when(telemetrySynchronizer).synchronizeStats();
1212
TelemetrySyncTask telemetrySyncTask = new TelemetrySyncTask(1, telemetrySynchronizer);
1313
Thread.sleep(2900);
14-
Mockito.verify(telemetrySynchronizer, Mockito.times(3)).synchronizeStats();
14+
Mockito.verify(telemetrySynchronizer, Mockito.times(2)).synchronizeStats();
1515
}
1616

1717
@Test
@@ -20,11 +20,11 @@ public void testStopSynchronizationTask() throws Exception {
2020
// Mockito.doNothing().when(telemetrySynchronizer).synchronizeStats();
2121
TelemetrySyncTask telemetrySyncTask = new TelemetrySyncTask(1, telemetrySynchronizer);
2222
Thread.sleep(3000);
23-
Mockito.verify(telemetrySynchronizer, Mockito.times(3)).synchronizeStats();
24-
telemetrySyncTask.stopScheduledTask();
23+
Mockito.verify(telemetrySynchronizer, Mockito.times(2)).synchronizeStats();
24+
telemetrySyncTask.stopScheduledTask(1l, 1l, 1l);
2525
Thread.sleep(2000);
26-
Mockito.verify(telemetrySynchronizer, Mockito.times(4)).synchronizeStats();
27-
26+
Mockito.verify(telemetrySynchronizer, Mockito.times(2)).synchronizeStats();
27+
Mockito.verify(telemetrySynchronizer, Mockito.times(1)).finalSynchronization(1l, 1l, 1l);
2828
}
2929

3030
}

0 commit comments

Comments
 (0)