dianping / cat

CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,已经在美团点评的基础架构中间件框架(MVC框架,RPC框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。
Apache License 2.0
18.69k stars 5.43k forks source link

AllNameMerger聚合name是否有误? #2106

Closed IrvingYuanStu closed 2 years ago

IrvingYuanStu commented 3 years ago

尝试自定义报表数据的Merger过程中,参考com.dianping.cat.report.page.transaction.transform.AllNameMerger#visitName方法 发现m_merger.mergeName(temp, name); 重复调用,是否会造成数据不准确?

使用的分支 v3.0.0

代码如下:

@Override
public void visitName(TransactionName name) {
    m_currentName = name.getId();
    TransactionName temp = m_report.findOrCreateMachine(m_currentIp).findOrCreateType(m_currentType)
                                .findOrCreateName(m_currentName);

    m_merger.mergeName(temp, name);

    TransactionName all = m_report.findOrCreateMachine(m_currentIp).findOrCreateType(m_currentType)
                                .findOrCreateName(Constants.ALL);
    m_merger.mergeName(all, name);

    m_merger.mergeName(temp, name);
    super.visitName(name);
}

m_merger.mergeName(temp, name); 调用2次,即对temp重复合并当前report中的name,做两次统计,是否正确?

希望得到解释,谢谢!

jialinsun commented 2 years ago

看起来是有些问题,可能是bug,内部版本应该修复过。未来我们直接开更新的版本会修复掉。