Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BrokerConfigServiceImpl类中的getBrokerConfigByZKClient方法一定返回空列表 #1086

Closed
myloverwdm opened this issue Jul 10, 2023 · 4 comments · Fixed by #1198
Closed
Assignees
Labels
dev: backend 需要后端开发 status: contribution welcome 欢迎来认领并贡献 type: bug 错误问题

Comments

@myloverwdm
Copy link

    private Result<List<KafkaConfigDetail>> getBrokerConfigByZKClient(VersionItemParam itemParam) {
        BrokerParam param = (BrokerParam) itemParam;
        Result<Properties> propertiesResult = this.getBrokerConfigByZKClient(param.getClusterPhyId(), param.getBrokerId());
        if (propertiesResult.failed()) {
            return Result.buildFromIgnoreData(propertiesResult);
        }
        return Result.buildSuc(KafkaConfigConverter.convert2KafkaBrokerConfigDetailList(
                new ArrayList<>(),
                propertiesResult.getData()
        ));
    }


public static List<KafkaConfigDetail> convert2KafkaBrokerConfigDetailList(List<String> configNameList, Properties properties) {
        List<KafkaConfigDetail> configList = new ArrayList<>();
        for (String configName: configNameList) {
            KafkaConfigDetail config = new KafkaConfigDetail();
            config.setName(configName);
            config.setValue(properties.getProperty(configName));
            config.setConfigSource(DescribeConfigsResponse.ConfigSource.TOPIC_CONFIG.ordinal());

            ConfigDef.ConfigKey configKey = KafkaConstant.KAFKA_ALL_CONFIG_DEF_MAP.get(configName);
            if (configKey != null) {
                config.setDocumentation(configKey.documentation);
                config.setDefaultValue(configKey.defaultValue == null? "": configKey.defaultValue.toString());
                config.setOverride(config.getValue() != null && config.getValue().equals(configKey.defaultValue));
                config.setConfigType(configKey.type.ordinal());
            } else {
                config.setDocumentation(null);
                config.setDefaultValue(null);
                config.setOverride(null);
                config.setConfigType(null);
            }

            config.setSensitive(null);
            config.setReadOnly(null);
            configList.add(config);
        }

        return configList;
    }

在getBrokerConfigByZKClient方法中,调用KafkaConfigConverter.convert2KafkaBrokerConfigDetailList,传递第一个参数为空列表,KafkaConfigConverter.convert2KafkaBrokerConfigDetailList方法中对该列表进行遍历,然后返回,而参数为空列表是写死的,故该方法一定返回空列表,且KafkaConfigConverter.convert2KafkaBrokerConfigDetailList方法仅有该处使用到。

另:getBrokerConfigByZKClient方法中的代码:
for (Object key: properties.keySet()) {
properties.getProperty((String) key);
}
不清楚该代码的目的是什么。校验所有的key都要是String类型,若不是String则强转失败吗?与之相同问题的还有TopicConfigServiceImpl类中的getTopicConfigByZKClient方法

@ZQKC ZQKC added type: bug 错误问题 status: contribution welcome 欢迎来认领并贡献 dev: backend 需要后端开发 labels Jul 11, 2023
@jiangminbing
Copy link
Contributor

1700928661311
我对比了TopicConfigServiceImpl,BrokerConfigServiceImpl,这两个文件中的处理方法,和KafkaConfigConverer中convert2KafkaBrokerConfigDetailList,convert2KafkaTopicConfigDetailList 我的理解getBrokerConfigByZKClient中new ArrayList()的入参替换成kafka broker 的配置列表,处理方式是否是这里来处理的?

@ZQKC
Copy link
Collaborator

ZQKC commented Nov 26, 2023

1700928661311 我对比了TopicConfigServiceImpl,BrokerConfigServiceImpl,这两个文件中的处理方法,和KafkaConfigConverer中convert2KafkaBrokerConfigDetailList,convert2KafkaTopicConfigDetailList 我的理解getBrokerConfigByZKClient中new ArrayList()的入参替换成kafka broker 的配置列表,处理方式是否是这里来处理的?

是的

@jiangminbing
Copy link
Contributor

1701009369609
维护成类似TopicConfig0100这种配置的类信息?但是没找到相关BrokerConfig相关的信息?是否有指引类?

@jiangminbing
Copy link
Contributor

图片
我理解应该是把配置的key值作为参数传入,如果是的这个问题我来处理吧

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dev: backend 需要后端开发 status: contribution welcome 欢迎来认领并贡献 type: bug 错误问题
Projects
None yet
3 participants