32
32
import static org .apache .kafka .common .config .ConfigDef .Range .between ;
33
33
import static org .apache .kafka .common .config .ConfigDef .Type .BOOLEAN ;
34
34
import static org .apache .kafka .common .config .ConfigDef .Type .INT ;
35
- import static org .apache .kafka .common .config .ConfigDef .Type .SHORT ;
36
35
import static org .apache .kafka .common .config .ConfigDef .Type .STRING ;
37
36
38
37
public class ShareGroupConfig {
@@ -51,10 +50,6 @@ public class ShareGroupConfig {
51
50
public static final int SHARE_GROUP_DELIVERY_COUNT_LIMIT_DEFAULT = 5 ;
52
51
public static final String SHARE_GROUP_DELIVERY_COUNT_LIMIT_DOC = "The maximum number of delivery attempts for a record delivered to a share group." ;
53
52
54
- public static final String SHARE_GROUP_MAX_GROUPS_CONFIG = "group.share.max.groups" ;
55
- public static final short SHARE_GROUP_MAX_GROUPS_DEFAULT = 10 ;
56
- public static final String SHARE_GROUP_MAX_GROUPS_DOC = "The maximum number of share groups." ;
57
-
58
53
public static final String SHARE_GROUP_RECORD_LOCK_DURATION_MS_CONFIG = "group.share.record.lock.duration.ms" ;
59
54
public static final int SHARE_GROUP_RECORD_LOCK_DURATION_MS_DEFAULT = 30000 ;
60
55
public static final String SHARE_GROUP_RECORD_LOCK_DURATION_MS_DOC = "The record acquisition lock duration in milliseconds for share groups." ;
@@ -86,7 +81,6 @@ public class ShareGroupConfig {
86
81
.define (SHARE_GROUP_RECORD_LOCK_DURATION_MS_CONFIG , INT , SHARE_GROUP_RECORD_LOCK_DURATION_MS_DEFAULT , between (1000 , 3600000 ), MEDIUM , SHARE_GROUP_RECORD_LOCK_DURATION_MS_DOC )
87
82
.define (SHARE_GROUP_MIN_RECORD_LOCK_DURATION_MS_CONFIG , INT , SHARE_GROUP_MIN_RECORD_LOCK_DURATION_MS_DEFAULT , between (1000 , 30000 ), MEDIUM , SHARE_GROUP_MIN_RECORD_LOCK_DURATION_MS_DOC )
88
83
.define (SHARE_GROUP_MAX_RECORD_LOCK_DURATION_MS_CONFIG , INT , SHARE_GROUP_MAX_RECORD_LOCK_DURATION_MS_DEFAULT , between (30000 , 3600000 ), MEDIUM , SHARE_GROUP_MAX_RECORD_LOCK_DURATION_MS_DOC )
89
- .define (SHARE_GROUP_MAX_GROUPS_CONFIG , SHORT , SHARE_GROUP_MAX_GROUPS_DEFAULT , between (1 , 100 ), MEDIUM , SHARE_GROUP_MAX_GROUPS_DOC )
90
84
.define (SHARE_GROUP_PARTITION_MAX_RECORD_LOCKS_CONFIG , INT , SHARE_GROUP_PARTITION_MAX_RECORD_LOCKS_DEFAULT , between (100 , 10000 ), MEDIUM , SHARE_GROUP_PARTITION_MAX_RECORD_LOCKS_DOC )
91
85
.define (SHARE_FETCH_PURGATORY_PURGE_INTERVAL_REQUESTS_CONFIG , INT , SHARE_FETCH_PURGATORY_PURGE_INTERVAL_REQUESTS_DEFAULT , MEDIUM , SHARE_FETCH_PURGATORY_PURGE_INTERVAL_REQUESTS_DOC )
92
86
.define (SHARE_GROUP_MAX_SHARE_SESSIONS_CONFIG , INT , SHARE_GROUP_MAX_SHARE_SESSIONS_DEFAULT , atLeast (1 ), MEDIUM , SHARE_GROUP_MAX_SHARE_SESSIONS_DOC )
@@ -95,25 +89,25 @@ public class ShareGroupConfig {
95
89
private final boolean isShareGroupEnabled ;
96
90
private final int shareGroupPartitionMaxRecordLocks ;
97
91
private final int shareGroupDeliveryCountLimit ;
98
- private final short shareGroupMaxGroups ;
99
92
private final int shareGroupRecordLockDurationMs ;
100
93
private final int shareGroupMaxRecordLockDurationMs ;
101
94
private final int shareGroupMinRecordLockDurationMs ;
102
95
private final int shareFetchPurgatoryPurgeIntervalRequests ;
103
96
private final int shareGroupMaxShareSessions ;
104
97
private final String shareGroupPersisterClassName ;
98
+ private final AbstractConfig config ;
105
99
106
100
public ShareGroupConfig (AbstractConfig config ) {
107
- // Share groups are enabled in two cases:
108
- // 1. The internal configuration to enable it is explicitly set
101
+ this .config = config ;
102
+ // Share groups are enabled in either of the two following cases:
103
+ // 1. The internal configuration to enable it is explicitly set; or
109
104
// 2. the share rebalance protocol is enabled.
110
105
Set <String > protocols = config .getList (GroupCoordinatorConfig .GROUP_COORDINATOR_REBALANCE_PROTOCOLS_CONFIG )
111
106
.stream ().map (String ::toUpperCase ).collect (Collectors .toSet ());
112
107
isShareGroupEnabled = config .getBoolean (ShareGroupConfig .SHARE_GROUP_ENABLE_CONFIG ) ||
113
108
protocols .contains (GroupType .SHARE .name ());
114
109
shareGroupPartitionMaxRecordLocks = config .getInt (ShareGroupConfig .SHARE_GROUP_PARTITION_MAX_RECORD_LOCKS_CONFIG );
115
110
shareGroupDeliveryCountLimit = config .getInt (ShareGroupConfig .SHARE_GROUP_DELIVERY_COUNT_LIMIT_CONFIG );
116
- shareGroupMaxGroups = config .getShort (ShareGroupConfig .SHARE_GROUP_MAX_GROUPS_CONFIG );
117
111
shareGroupRecordLockDurationMs = config .getInt (ShareGroupConfig .SHARE_GROUP_RECORD_LOCK_DURATION_MS_CONFIG );
118
112
shareGroupMaxRecordLockDurationMs = config .getInt (ShareGroupConfig .SHARE_GROUP_MAX_RECORD_LOCK_DURATION_MS_CONFIG );
119
113
shareGroupMinRecordLockDurationMs = config .getInt (ShareGroupConfig .SHARE_GROUP_MIN_RECORD_LOCK_DURATION_MS_CONFIG );
@@ -136,10 +130,6 @@ public int shareGroupDeliveryCountLimit() {
136
130
return shareGroupDeliveryCountLimit ;
137
131
}
138
132
139
- public short shareGroupMaxGroups () {
140
- return shareGroupMaxGroups ;
141
- }
142
-
143
133
public int shareGroupRecordLockDurationMs () {
144
134
return shareGroupRecordLockDurationMs ;
145
135
}
@@ -171,6 +161,9 @@ private void validate() {
171
161
Utils .require (shareGroupMaxRecordLockDurationMs >= shareGroupRecordLockDurationMs ,
172
162
String .format ("%s must be greater than or equal to %s" ,
173
163
SHARE_GROUP_MAX_RECORD_LOCK_DURATION_MS_CONFIG , SHARE_GROUP_RECORD_LOCK_DURATION_MS_CONFIG ));
164
+ Utils .require (shareGroupMaxShareSessions >= config .getInt (GroupCoordinatorConfig .SHARE_GROUP_MAX_SIZE_CONFIG ),
165
+ String .format ("%s must be greater than or equal to %s" ,
166
+ SHARE_GROUP_MAX_SHARE_SESSIONS_CONFIG , GroupCoordinatorConfig .SHARE_GROUP_MAX_SIZE_CONFIG ));
174
167
}
175
168
176
169
/**
0 commit comments