@@ -156,7 +156,7 @@ public class Worker implements Runnable {
156
156
// Periodic Shard Sync related fields
157
157
private LeaderDecider leaderDecider ;
158
158
private ShardSyncStrategy shardSyncStrategy ;
159
- private PeriodicShardSyncManager leaderElectedPeriodicShardSyncManager ;
159
+ private IPeriodicShardSyncManager leaderElectedPeriodicShardSyncManager ;
160
160
161
161
private final LeaseCleanupManager leaseCleanupManager ;
162
162
@@ -533,7 +533,7 @@ config, getStreamConfig(config, kinesisClient),
533
533
IMetricsFactory metricsFactory , long taskBackoffTimeMillis , long failoverTimeMillis ,
534
534
boolean skipShardSyncAtWorkerInitializationIfLeasesExist , ShardPrioritization shardPrioritization ,
535
535
Optional <Integer > retryGetRecordsInSeconds , Optional <Integer > maxGetRecordsThreadPool , WorkerStateChangeListener workerStateChangeListener ,
536
- LeaseCleanupValidator leaseCleanupValidator , LeaderDecider leaderDecider , PeriodicShardSyncManager periodicShardSyncManager ) {
536
+ LeaseCleanupValidator leaseCleanupValidator , LeaderDecider leaderDecider , IPeriodicShardSyncManager periodicShardSyncManager ) {
537
537
this (applicationName , recordProcessorFactory , config , streamConfig , initialPositionInStream ,
538
538
parentShardPollIntervalMillis , shardSyncIdleTimeMillis , cleanupLeasesUponShardCompletion , checkpoint ,
539
539
leaseCoordinator , execService , metricsFactory , taskBackoffTimeMillis , failoverTimeMillis ,
@@ -550,7 +550,7 @@ maxGetRecordsThreadPool, workerStateChangeListener, new KinesisShardSyncer(lease
550
550
boolean skipShardSyncAtWorkerInitializationIfLeasesExist , ShardPrioritization shardPrioritization ,
551
551
Optional <Integer > retryGetRecordsInSeconds , Optional <Integer > maxGetRecordsThreadPool ,
552
552
WorkerStateChangeListener workerStateChangeListener , ShardSyncer shardSyncer , LeaderDecider leaderDecider ,
553
- PeriodicShardSyncManager periodicShardSyncManager ) {
553
+ IPeriodicShardSyncManager periodicShardSyncManager ) {
554
554
this .applicationName = applicationName ;
555
555
this .recordProcessorFactory = recordProcessorFactory ;
556
556
this .config = config ;
@@ -590,7 +590,7 @@ maxGetRecordsThreadPool, workerStateChangeListener, new KinesisShardSyncer(lease
590
590
*/
591
591
private void createShardSyncStrategy (ShardSyncStrategyType strategyType ,
592
592
LeaderDecider leaderDecider ,
593
- PeriodicShardSyncManager periodicShardSyncManager ) {
593
+ IPeriodicShardSyncManager periodicShardSyncManager ) {
594
594
switch (strategyType ) {
595
595
case PERIODIC :
596
596
this .leaderDecider = getOrCreateLeaderDecider (leaderDecider );
@@ -652,7 +652,7 @@ LeaderDecider getLeaderDecider() {
652
652
/**
653
653
* @return the leaderElectedPeriodicShardSyncManager
654
654
*/
655
- PeriodicShardSyncManager getPeriodicShardSyncManager () {
655
+ IPeriodicShardSyncManager getPeriodicShardSyncManager () {
656
656
return leaderElectedPeriodicShardSyncManager ;
657
657
}
658
658
@@ -1224,7 +1224,7 @@ StreamConfig getStreamConfig() {
1224
1224
* KinesisClientLibConfiguration
1225
1225
* @return Returns metrics factory based on the config.
1226
1226
*/
1227
- private static IMetricsFactory getMetricsFactory (AmazonCloudWatch cloudWatchClient ,
1227
+ public static IMetricsFactory getMetricsFactory (AmazonCloudWatch cloudWatchClient ,
1228
1228
KinesisClientLibConfiguration config ) {
1229
1229
IMetricsFactory metricsFactory ;
1230
1230
if (config .getMetricsLevel () == MetricsLevel .NONE ) {
@@ -1278,13 +1278,13 @@ private LeaderDecider getOrCreateLeaderDecider(LeaderDecider leaderDecider) {
1278
1278
1279
1279
/** A non-null PeriodicShardSyncManager can only provided from unit tests. Any application code will create the
1280
1280
* PeriodicShardSyncManager for the first time here. */
1281
- private PeriodicShardSyncManager getOrCreatePeriodicShardSyncManager (PeriodicShardSyncManager periodicShardSyncManager ,
1281
+ private IPeriodicShardSyncManager getOrCreatePeriodicShardSyncManager (IPeriodicShardSyncManager periodicShardSyncManager ,
1282
1282
boolean isAuditorMode ) {
1283
1283
if (periodicShardSyncManager != null ) {
1284
1284
return periodicShardSyncManager ;
1285
1285
}
1286
1286
1287
- return new PeriodicShardSyncManager (config .getWorkerIdentifier (),
1287
+ return new KinesisPeriodicShardSyncManager (config .getWorkerIdentifier (),
1288
1288
leaderDecider ,
1289
1289
new ShardSyncTask (streamConfig .getStreamProxy (),
1290
1290
leaseCoordinator .getLeaseManager (),
@@ -1353,6 +1353,8 @@ public static class Builder {
1353
1353
@ Setter @ Accessors (fluent = true )
1354
1354
private IKinesisProxy kinesisProxy ;
1355
1355
@ Setter @ Accessors (fluent = true )
1356
+ private IPeriodicShardSyncManager periodicShardSyncManager ;
1357
+ @ Setter @ Accessors (fluent = true )
1356
1358
private WorkerStateChangeListener workerStateChangeListener ;
1357
1359
@ Setter @ Accessors (fluent = true )
1358
1360
private LeaseCleanupValidator leaseCleanupValidator ;
@@ -1421,6 +1423,12 @@ public Worker build() {
1421
1423
throw new IllegalArgumentException (
1422
1424
"Kinesis Client Library configuration needs to be provided to build Worker" );
1423
1425
}
1426
+ if (periodicShardSyncManager != null ) {
1427
+ if (leaseManager == null || shardSyncer == null || metricsFactory == null || leaderDecider == null ) {
1428
+
1429
+ throw new IllegalArgumentException ("LeaseManager, ShardSyncer, MetricsFactory, and LeaderDecider must be provided if PeriodicShardSyncManager is provided" );
1430
+ }
1431
+ }
1424
1432
if (recordProcessorFactory == null ) {
1425
1433
throw new IllegalArgumentException ("A Record Processor Factory needs to be provided to build Worker" );
1426
1434
}
@@ -1546,7 +1554,7 @@ public Worker build() {
1546
1554
workerStateChangeListener ,
1547
1555
shardSyncer ,
1548
1556
leaderDecider ,
1549
- null /* PeriodicShardSyncManager */ );
1557
+ periodicShardSyncManager );
1550
1558
}
1551
1559
1552
1560
<R , T extends AwsClientBuilder <T , R >> R createClient (final T builder ,
0 commit comments