cat icon indicating copy to clipboard operation
cat copied to clipboard

为什么python服务在使用客户端时,在Cat服务端修改了(添加或删除)路由节点后,python服务的打点信息消失了

Open RekiOwl opened this issue 5 months ago • 3 comments

Image 为什么python服务在使用客户端时,在Cat服务端修改了(添加或删除)路由节点后,python服务的打点信息消失了

RekiOwl avatar Jul 10 '25 10:07 RekiOwl

我们也遇到了,Python、js都有这个问题,感觉是非java客户端都不行,希望早点解决

BiTree avatar Jul 11 '25 00:07 BiTree

我们也遇到了,Python、js都有这个问题,感觉是非java客户端都不行,希望早点解决

找到问题了,因为我们cat的server端新节点的port跟原来的不一样(比如原来的节点都是8080,后面新加的节点是8081)

python客户端: 初次请求路由列表信息的url,会使用本地文件(client.xml)中写的ip和http请求的port组成请求url,后续获取到路由表信息后,虽然下次请求的url中的ip会根据获取到的路由表中的ip变化(此逻辑跟JAVA客户端不同),但是port不会(因为路由表中也确实只指定了日志上报的2280端口),此时请求失败时会将g_cat_send_failedFlag设置为0(会在发送message至server端时使用该参数作为判断条件),这造成了我出现的问题

Image

JAVA客户端: 初次请求跟python客户端应该是相同逻辑,后续请求URL一直使用的是本地文件(client.xml)中的,只要不改变原本的节点就没有事情,即便全部修改了(请求不到最新的router信息),client端还会有一份router缓存,应该没有像python客户端一样,将获取router失败作为发送message的条件

Image

希望能够帮助到你!

RekiOwl avatar Jul 14 '25 02:07 RekiOwl

补充一下: python获取路由信息的相关代码在这里lib/c/src/ccat/server_connection_manager.c:377,updateCatServerConn()方法 python发送message到server的代码在这里lib/c/src/ccat/message_sender.c:137,sendCatMessageBufferDirectly()方法

RekiOwl avatar Jul 14 '25 02:07 RekiOwl