2424import org .apache .kafka .common .metadata .RegisterBrokerRecord ;
2525import org .apache .kafka .common .metadata .RegisterBrokerRecord .BrokerEndpoint ;
2626import org .apache .kafka .common .metadata .RegisterBrokerRecord .BrokerFeature ;
27+ import org .apache .kafka .common .metadata .RegisterBrokerRecord .BrokerStaticConfig ;
2728import org .apache .kafka .common .security .auth .SecurityProtocol ;
2829import org .apache .kafka .image .writer .ImageWriterOptions ;
2930import org .apache .kafka .server .common .ApiMessageAndVersion ;
@@ -55,6 +56,7 @@ public static class Builder {
5556 private boolean isMigratingZkBroker ;
5657 private List <Uuid > directories ;
5758 private List <Uuid > cordonedDirectories ;
59+ private Map <String , String > staticConfigs ;
5860
5961 public Builder () {
6062 this .id = 0 ;
@@ -68,6 +70,7 @@ public Builder() {
6870 this .isMigratingZkBroker = false ;
6971 this .directories = List .of ();
7072 this .cordonedDirectories = List .of ();
73+ this .staticConfigs = Map .of ();
7174 }
7275
7376 public Builder setId (int id ) {
@@ -135,6 +138,11 @@ public Builder setCordonedDirectories(List<Uuid> cordonedDirectories) {
135138 return this ;
136139 }
137140
141+ public Builder setStaticConfigs (Map <String , String > staticConfigs ) {
142+ this .staticConfigs = staticConfigs ;
143+ return this ;
144+ }
145+
138146 public BrokerRegistration build () {
139147 return new BrokerRegistration (
140148 id ,
@@ -147,7 +155,8 @@ public BrokerRegistration build() {
147155 inControlledShutdown ,
148156 isMigratingZkBroker ,
149157 directories ,
150- cordonedDirectories );
158+ cordonedDirectories ,
159+ staticConfigs );
151160 }
152161 }
153162
@@ -162,6 +171,7 @@ public BrokerRegistration build() {
162171 private final boolean isMigratingZkBroker ;
163172 private final List <Uuid > directories ;
164173 private final List <Uuid > cordonedDirectories ;
174+ private final Map <String , String > staticConfigs ;
165175
166176 private BrokerRegistration (
167177 int id ,
@@ -174,7 +184,8 @@ private BrokerRegistration(
174184 boolean inControlledShutdown ,
175185 boolean isMigratingZkBroker ,
176186 List <Uuid > directories ,
177- List <Uuid > cordonedDirectories
187+ List <Uuid > cordonedDirectories ,
188+ Map <String , String > staticConfigs
178189 ) {
179190 this .id = id ;
180191 this .epoch = epoch ;
@@ -197,6 +208,7 @@ private BrokerRegistration(
197208 directories .sort (Uuid ::compareTo );
198209 this .directories = Collections .unmodifiableList (directories );
199210 this .cordonedDirectories = Collections .unmodifiableList (cordonedDirectories );
211+ this .staticConfigs = Collections .unmodifiableMap (staticConfigs );
200212 }
201213
202214 public static BrokerRegistration fromRecord (RegisterBrokerRecord record ) {
@@ -212,6 +224,10 @@ public static BrokerRegistration fromRecord(RegisterBrokerRecord record) {
212224 supportedFeatures .put (feature .name (), VersionRange .of (
213225 feature .minSupportedVersion (), feature .maxSupportedVersion ()));
214226 }
227+ Map <String , String > staticConfigs = new HashMap <>();
228+ for (BrokerStaticConfig sc : record .staticConfigs ()) {
229+ staticConfigs .put (sc .name (), sc .value ());
230+ }
215231 return new BrokerRegistration (record .brokerId (),
216232 record .brokerEpoch (),
217233 record .incarnationId (),
@@ -222,7 +238,8 @@ public static BrokerRegistration fromRecord(RegisterBrokerRecord record) {
222238 record .inControlledShutdown (),
223239 record .isMigratingZkBroker (),
224240 record .logDirs (),
225- record .cordonedLogDirs ());
241+ record .cordonedLogDirs (),
242+ staticConfigs );
226243 }
227244
228245 public int id () {
@@ -277,6 +294,10 @@ public List<Uuid> cordonedDirectories() {
277294 return cordonedDirectories ;
278295 }
279296
297+ public Map <String , String > staticConfigs () {
298+ return staticConfigs ;
299+ }
300+
280301 public boolean hasOnlineDir (Uuid dir ) {
281302 return DirectoryId .isOnline (dir , directories );
282303 }
@@ -353,14 +374,22 @@ public ApiMessageAndVersion toRecord(ImageWriterOptions options) {
353374 setMaxSupportedVersion (entry .getValue ().max ()));
354375 }
355376
377+ if (options .metadataVersion ().isStaticConfigReportingSupported ()) {
378+ for (Entry <String , String > entry : staticConfigs .entrySet ()) {
379+ registrationRecord .staticConfigs ().add (new BrokerStaticConfig ().
380+ setName (entry .getKey ()).
381+ setValue (entry .getValue ()));
382+ }
383+ }
384+
356385 return new ApiMessageAndVersion (registrationRecord ,
357386 options .metadataVersion ().registerBrokerRecordVersion ());
358387 }
359388
360389 @ Override
361390 public int hashCode () {
362391 return Objects .hash (id , epoch , incarnationId , listeners , supportedFeatures ,
363- rack , fenced , inControlledShutdown , isMigratingZkBroker , directories , cordonedDirectories );
392+ rack , fenced , inControlledShutdown , isMigratingZkBroker , directories , cordonedDirectories , staticConfigs );
364393 }
365394
366395 @ Override
@@ -376,7 +405,8 @@ public boolean equals(Object o) {
376405 other .inControlledShutdown == inControlledShutdown &&
377406 other .isMigratingZkBroker == isMigratingZkBroker &&
378407 other .directories .equals (directories ) &&
379- other .cordonedDirectories .equals (cordonedDirectories );
408+ other .cordonedDirectories .equals (cordonedDirectories ) &&
409+ other .staticConfigs .equals (staticConfigs );
380410 }
381411
382412 @ Override
@@ -399,6 +429,7 @@ public String toString() {
399429 ", isMigratingZkBroker=" + isMigratingZkBroker +
400430 ", directories=" + directories +
401431 ", cordonedDirectories=" + cordonedDirectories +
432+ ", staticConfigs=" + staticConfigs +
402433 ")" ;
403434 }
404435
@@ -430,7 +461,8 @@ public BrokerRegistration cloneWith(
430461 newInControlledShutdownChange ,
431462 isMigratingZkBroker ,
432463 newDirectories ,
433- newCordonedDirectories
464+ newCordonedDirectories ,
465+ staticConfigs
434466 );
435467 }
436- }
468+ }
0 commit comments