dengziming commented on code in PR #16230: URL: https://github.com/apache/kafka/pull/16230#discussion_r1637473020
########## metadata/src/main/java/org/apache/kafka/metadata/bootstrap/BootstrapMetadata.java: ########## @@ -116,6 +139,34 @@ public BootstrapMetadata copyWithOnlyVersion() { metadataVersion, source); } + public BootstrapMetadata withMetadataVersion(MetadataVersion metadataVersion) { + List<ApiMessageAndVersion> newRecords = new ArrayList<>(); + for (ApiMessageAndVersion record : records) { + if (recordToMetadataVersion(record.message()).isPresent()) { + newRecords.add(metadataVersionToRecord(metadataVersion)); + } else { + newRecords.add(record); + } + } + return new BootstrapMetadata(newRecords, metadataVersion, source); + } + + public BootstrapMetadata withKRaftVersion(KRaftVersion version) { + List<ApiMessageAndVersion> newRecords = new ArrayList<>(); + boolean foundKRaftVersion = false; + for (ApiMessageAndVersion record : records) { + if (recordToKRaftVersion(record.message()).isPresent()) { + newRecords.add(kraftVersionToRecord(version)); + } else { + newRecords.add(record); + } + } + if (!foundKRaftVersion) { + newRecords.add(kraftVersionToRecord(version)); Review Comment: We have decided to propagate feature version for kraft.version using KRaftVersionRecord control record, should we also add a `ControlRecord` to make it consistent with `FeatureLevelRecord` ########## metadata/src/main/java/org/apache/kafka/metadata/bootstrap/BootstrapMetadata.java: ########## @@ -116,6 +139,34 @@ public BootstrapMetadata copyWithOnlyVersion() { metadataVersion, source); } + public BootstrapMetadata withMetadataVersion(MetadataVersion metadataVersion) { + List<ApiMessageAndVersion> newRecords = new ArrayList<>(); + for (ApiMessageAndVersion record : records) { + if (recordToMetadataVersion(record.message()).isPresent()) { + newRecords.add(metadataVersionToRecord(metadataVersion)); + } else { + newRecords.add(record); + } + } + return new BootstrapMetadata(newRecords, metadataVersion, source); + } + + public BootstrapMetadata withKRaftVersion(KRaftVersion version) { + List<ApiMessageAndVersion> newRecords = new ArrayList<>(); + boolean foundKRaftVersion = false; + for (ApiMessageAndVersion record : records) { + if (recordToKRaftVersion(record.message()).isPresent()) { + newRecords.add(kraftVersionToRecord(version)); Review Comment: We should add: `foundKRaftVersion=true;` here. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org