Cannot register setting [http.netty.max_composite_buffer_components] twice

问题描述:
项目采用spring boot 2.1版本,elasticsearch 5.*版本,启动之后报错

java.lang.IllegalArgumentException: Cannot register setting [http.netty.max_composite_buffer_components] twice
    at org.elasticsearch.common.settings.SettingsModule.registerSetting(SettingsModule.java:168)
    at org.elasticsearch.common.settings.SettingsModule.<init>(SettingsModule.java:74)
    at org.elasticsearch.client.transport.TransportClient.buildTemplate(TransportClient.java:140)
    at org.elasticsearch.client.transport.TransportClient.<init>(TransportClient.java:268)
    at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:127)
    at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:113)
    at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:103)
    at com.datayes.falcon.biz.config.TransportClientAutoConfig.getElasticsearchClient(TransportClientAutoConfig.java:73)

定位到出错的代码:

 Setting<?> existingSetting = nodeSettings.get(setting.getKey());
                if (existingSetting != null && (setting.isShared() == false || existingSetting.isShared() == false)) {
                    throw new IllegalArgumentException("Cannot register setting [" + setting.getKey() + "] twice");
                }
                nodeSettings.put(setting.getKey(), setting);

debug 定位发现是netty3和netty4的插件参数http.netty.max_composite_buffer_components不一致导致

{
  "key" : "http.netty.max_composite_buffer_components",
  "properties" : [
    "Shared",
    "NodeScope"
  ],
  "is_group_setting" : false,
  "default" : "-1"
}

# 此处少了属性Shared
{
  "key" : "http.netty.max_composite_buffer_components",
  "properties" : [
    "NodeScope"
  ],
  "is_group_setting" : false,
  "default" : "69905"
}

但是之前采用spring boot 1.5.6版本是一直正常,怀疑是架包的版本出现问题,查看项目依赖,发现果然如此:


image.png

修改为5.4.3版本即可(当然将netty3切换成6.4.3版本应该可以)

对比不同版本,主要是Netty4Plugin的默认参数变化,如下图


image.png
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。