不为失败找理由,要为成功找方法。

5.4 创建client PreBuiltTransportClient 抛 netty异常

Elasticsearch | 作者 240475588 | 发布于2017年06月09日 | 阅读数:8647


QQ图片20170609094842.png

 
已邀请:

kennywu76 - Wood

赞同来自:


System.setProperty("es.set.netty.runtime.available.processors", "false");


 https://discuss.elastic.co/t/e ... 88036

240475588

赞同来自:

问题已解决:
ES 5.4 版本用的netty4.1.11的版本,该版本不能重复调用NettyRuntime.setAvailableProcessors.
而我项目中正好有其它地方的组件(Xdiamond已经调用过NettyRuntime.setAvailableProcessors),这时ES再次调用就会抛这个异常。
解决方法:在项目中重写org.elasticsearch.transport.netty4.Netty4Utils
这行代码if (isAvailableProcessorsSet.compareAndSet(false, true))
改成 if (isAvailableProcessorsSet.compareAndSet(false, true)&&NettyRuntime.availableProcessors() == 0) 。
这是ES5.4的一个小BUG,原有的校验有问题。

要回复问题请先登录注册