Describe the bug
cat 客户端发生死循环触发应用down机应
java.lang.Exception: null child message
at com.dianping.cat.message.internal.DefaultTransaction.addChild(DefaultTransaction.java:63)
at com.dianping.cat.message.internal.DefaultTransaction.addChild(DefaultTransaction.java:30)
at com.dianping.cat.message.internal.DefaultMessageManager$TransactionHelper.migrateMessage(DefaultMessageManager.java:563)
at com.dianping.cat.message.internal.DefaultMessageManager$TransactionHelper.migrateMessage(DefaultMessageManager.java:574)
at com.dianping.cat.message.internal.DefaultMessageManager$TransactionHelper.truncateAndFlush(DefaultMessageManager.java:609)
at com.dianping.cat.message.internal.DefaultMessageManager$Context.addTransactionChild(DefaultMessageManager.java:411)
at com.dianping.cat.message.internal.DefaultMessageManager$Context.add(DefaultMessageManager.java:402)
at com.dianping.cat.message.internal.DefaultMessageManager.add(DefaultMessageManager.java:83)
at com.dianping.cat.message.internal.DefaultEvent.complete(DefaultEvent.java:42)
at com.dianping.cat.message.internal.DefaultMessageProducer.logEvent(DefaultMessageProducer.java:112)
at com.dianping.cat.message.internal.DefaultMessageProducer.logError(DefaultMessageProducer.java:85)
at com.dianping.cat.message.internal.DefaultMessageProducer.logError(DefaultMessageProducer.java:95)
at com.dianping.cat.Cat.logError(Cat.java:289)
at com.dianping.cat.message.internal.DefaultTransaction.addChild(DefaultTransaction.java:63)
at com.dianping.cat.message.internal.DefaultTransaction.addChild(DefaultTransaction.java:30)
at com.dianping.cat.message.internal.DefaultMessageManager$TransactionHelper.migrateMessage(DefaultMessageManager.java:563)
at com.dianping.cat.message.internal.DefaultMessageManager$TransactionHelper.migrateMessage(DefaultMessageManager.java:574)
at com.dianping.cat.message.internal.DefaultMessageManager$TransactionHelper.truncateAndFlush(DefaultMessageManager.java:609)
at com.dianping.cat.message.internal.DefaultMessageManager$Context.addTransactionChild(DefaultMessageManager.java:411)
at com.dianping.cat.message.internal.DefaultMessageManager$Context.add(DefaultMessageManager.java:402)
at com.dianping.cat.message.internal.DefaultMessageManager.add(DefaultMessageManager.java:83)
at com.dianping.cat.message.internal.DefaultEvent.complete(DefaultEvent.java:42)
at com.dianping.cat.message.internal.DefaultMessageProducer.logEvent(DefaultMessageProducer.java:112)
at com.dianping.cat.message.internal.DefaultMessageProducer.logError(DefaultMessageProducer.java:85)
at com.dianping.cat.message.internal.DefaultMessageProducer.logError(DefaultMessageProducer.java:95)
at com.dianping.cat.Cat.logError(Cat.java:289)
at com.dianping.cat.message.internal.DefaultTransaction.addChild(DefaultTransaction.java:63)
at com.dianping.cat.message.internal.DefaultTransaction.addChild(DefaultTransaction.java:30)
at com.dianping.cat.message.internal.DefaultMessageManager$TransactionHelper.migrateMessage(DefaultMessageManager.java:563)
at com.dianping.cat.message.internal.DefaultMessageManager$TransactionHelper.migrateMessage(DefaultMessageManager.java:574)
at com.dianping.cat.message.internal.DefaultMessageManager$TransactionHelper.truncateAndFlush(DefaultMessageManager.java:609)
at com.dianping.cat.message.internal.DefaultMessageManager$Context.addTransactionChild(DefaultMessageManager.java:411)
at com.dianping.cat.message.internal.DefaultMessageManager$Context.add(DefaultMessageManager.java:402)
at com.dianping.cat.message.internal.DefaultMessageManager.add(DefaultMessageManager.java:83)
at com.dianping.cat.message.internal.DefaultEvent.complete(DefaultEvent.java:42)
at com.dianping.cat.message.internal.DefaultMessageProducer.logEvent(DefaultMessageProducer.java:112)
at com.dianping.cat.message.internal.DefaultMessageProducer.logError(DefaultMessageProducer.java:85)
at com.dianping.cat.message.internal.DefaultMessageProducer.logError(DefaultMessageProducer.java:95)
at com.dianping.cat.Cat.logError(Cat.java:289)
at com.dianping.cat.message.internal.DefaultTransaction.addChild(DefaultTransaction.java:63)
at com.dianping.cat.message.internal.DefaultTransaction.addChild(DefaultTransaction.java:30)
at com.dianping.cat.message.internal.DefaultMessageManager$TransactionHelper.migrateMessage(DefaultMessageManager.java:563)
at com.dianping.cat.message.internal.DefaultMessageManager$TransactionHelper.migrateMessage(DefaultMessageManager.java:574)
at com.dianping.cat.message.internal.DefaultMessageManager$TransactionHelper.truncateAndFlush(DefaultMessageManager.java:609)
at com.dianping.cat.message.internal.DefaultMessageManager$Context.addTransactionChild(DefaultMessageManager.java:411)
at com.dianping.cat.message.internal.DefaultMessageManager$Context.add(DefaultMessageManager.java:402)
at com.dianping.cat.message.internal.DefaultMessageManager.add(DefaultMessageManager.java:83)
at com.dianping.cat.message.internal.DefaultEvent.complete(DefaultEvent.java:42)
at com.dianping.cat.message.internal.DefaultMessageProducer.logEvent(DefaultMessageProducer.java:112)
at com.dianping.cat.message.internal.DefaultMessageProducer.logError(DefaultMessageProducer.java:85)
at com.dianping.cat.message.internal.DefaultMessageProducer.logError(DefaultMessageProducer.java:95)
at com.dianping.cat.Cat.logError(Cat.java:289)
To Reproduce
部分使用java版本 cat客户端 应用,偶发性发生down机。
Desktop (please complete the following information):
- Version com.dianping.catcat-client3.0.0
1条答案
按热度按时间eivnm1vs1#
方案一
方案二
暂时的方案可以通过不在累加 null child message 节点实现,但是无法排查出第一次空节点产生的原因。