問題描述:
項目采用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 定位發(fā)現(xiàn)是netty3和netty4的插件參數(shù)http.netty.max_composite_buffer_components不一致導(dǎo)致
{
"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版本是一直正常攒至,懷疑是架包的版本出現(xiàn)問題裆站,查看項目依賴信柿,發(fā)現(xiàn)果然如此:
image.png
修改為5.4.3版本即可(當(dāng)然將netty3切換成6.4.3版本應(yīng)該可以)
對比不同版本但两,主要是Netty4Plugin的默認(rèn)參數(shù)變化,如下圖
image.png
image.png