Ray
Ray
这块我调整了一下生成目录方式,改为使用`StandardLocation.SOURCE_OUTPUT`作为生成目录,默认会生成在当前项目的`target/generated-sources/annotations/`目录下,如果要修改默认生成路径,可以通过在maven-compiler-plugin插件配置中设置来实现。相关修改可以参考[这里](https://github.com/weibocom/motan/pull/959/files) 这个修改会在1.1.10版中支持,目前已经发版,公网仓库这两天应该就会可以下载到。
三元运算符会对后两个表达式的类型进行二进制提升,所以在运行时这条语句是没有问题的。 不过这样的写法不太严谨,下个版本会修改为0L。
目前只有golang版本提供了代理的agent,如果没有复杂定制功能的需求,建议通过这种方式,更轻量一些。weibo内部service mesh也是这个方案。 如果想使用java进行代理,可以参考golang版本自行实现代理逻辑
感谢反馈,我们会评估是否在后续版本提供相关配置的能力。 如果服务是容器化部署的话,可以试试修改系统的SOMAXCONN看是否可以解决。tcp相关参数最好都通过系统参数来统一设置。
只能修改操作系统配置或者修改源码,别的没想到什么办法。。
这块对lock.wait的使用我没觉得有什么问题。 没有设置timeout时wait的条件是notify或者interrupted;设置了timeout时,wait的条件是notify或者waittime。
线程被意外唤醒也是预期的行为之一,代码中已经进行了处理。 在没有设置超时时间的场景,不是一个显示的`a condition variable`,本身就是基于不确定性考虑的,不适合使用循环来check终止条件。不是所有的wait都必须在循环中使用,需要看实际的使用场景。
对于无超时时间的请求,能够保证意外唤醒时触发cancel操作就可以了。 关于wait的是否必须在循环中,这个见仁见智吧,我觉得不适合像bug一样在issue中讨论,可能在java技术相关的社区讨论会更好吧。
可以看看是否有建连失败相关日志,看看实际建立连接的ip是否正确。 client会从注册中心获取server节点并建连,如果zk中注册的server节点是正确的,client就会和正确的节点建连。 可以按下面的步骤排查一下问题: 1、可看一下client端从注册中心获取到的server节点的[通知日志](https://github.com/weibocom/motan/blob/aba64c51af0cdb8a167a499c3f9a4fbf3fba9a57/motan-core/src/main/java/com/weibo/api/motan/cluster/support/ClusterSupport.java#L178)是不是正确的。 如果不正确说明server端注册的ip不正确,可以参考一下[获取本机ip](https://github.com/weibocom/motan/blob/aba64c51af0cdb8a167a499c3f9a4fbf3fba9a57/motan-core/src/main/java/com/weibo/api/motan/util/NetUtils.java#L78)的逻辑,看一下server端获取本机ip的情况。 2、如果client侧获取到了正确的server ip,就看一下client和server节点的建连相关日志,比如[netty3建连异常日志](https://github.com/weibocom/motan/blob/aba64c51af0cdb8a167a499c3f9a4fbf3fba9a57/motan-core/src/main/java/com/weibo/api/motan/transport/AbstractPoolClient.java#L95)或者 [netty4建连异常日志](https://github.com/weibocom/motan/blob/aba64c51af0cdb8a167a499c3f9a4fbf3fba9a57/motan-core/src/main/java/com/weibo/api/motan/transport/AbstractSharedPoolClient.java#L82),看看是否网络问题导致建连失败。