今天遇到一个问题排查了很久,记录一下。
问题原因,日常环境的某个topology一直无法正常运行,查看日志又没有异常日志打印。现在是一段code:
logger.info("===========supplier.update!============== feedsCount=" + feedsCount); try { supplier.update(configs); logger.info("successfully update, totally {} feeds from {} supplier configs, path={}", feedsCount, configs.size(), subscribePath); } catch (Exception e) { logger.info("fail to update " + e.getMessage()); logger.error("fail to update, totally " + feedsCount + " feeds from " + configs.size() + " supplier configs, path=" + subscribePath + "", e); }
比较诡异的是successfully和fail to update都没有被执行。
后来通过远程debug才发现supplier.update内部有一个类冲突抛出NoClassDefFoundError
网上找到一片关于这个错误的说明:http://my.oschina.net/jasonultimate/blog/166932
为什么日志中没有异常信息,因为这个代码是通过ThreadPoolExecutor执行的:
private void runTask(Runnable task) { try { try { task.run(); } catch (RuntimeException ex) { throw ex; } } finally { runLock.unlock(); } }
可以看到他是不会抓到Error的。
相关推荐
1. 提升代码稳定性:通过检测和解决冲突,确保每个类只使用一个版本,从而避免因不同版本类导致的运行时错误。 2. 优化项目依赖:减少不必要的jar包,精简项目体积,提高应用加载速度。 3. 提高开发效率:快速定位...
在IT行业中,日志记录是调试和监控应用程序的关键部分,特别是对于Java开发者而言,Log4j是一个非常常用的日志框架。当我们遇到“无法打出log4j日志的问题”,这通常是由于配置、环境或代码实现中的某些错误导致的。...
在C#编程环境下,一个高效、可靠的日志类库尤为重要,尤其是当它支持多线程和多窗口同步显示时。本文将深入探讨C#封装的日志类库源码的相关知识点,并提供实际工程中的应用示例。 首先,让我们理解什么是日志类库。...
一个自定义的日志类,如“自己实现的log类”,能够根据特定需求提供灵活的日志处理,这对于C++开发者来说非常实用。下面我们将深入探讨这个log工具类可能包含的关键知识点,以及如何利用它进行日志管理。 首先,让...
HTTP 500错误属于服务器端错误的一种,它表示服务器遇到了一个未曾预料的情况,阻止了它完成对请求的处理。这类错误通常是由于服务器端代码存在bug或配置问题导致的。解决这类问题需要具备一定的服务器管理知识和...
例如,当你看到一个运行时异常,提示找不到某个类,你可以立即使用这个工具来定位这个类的来源,判断是否导入了错误的版本或者缺失了必要的库。 使用此类工具还可以帮助优化项目结构,例如,检查是否有重复的类存在...
本文将深入探讨一个优秀的ADO封装类,旨在为开发者提供一个强大的工具,简化数据库交互过程。 #### ADO封装类:CJetEngine与CADODatabase ##### CJetEngine类:数据库压缩功能 CJetEngine类主要聚焦于数据库的压缩...
有时,一个简单的拼写错误或丢失的斜杠就可能导致404错误。 2. **Web容器配置**:在Eclipse中,你需要确保在Web应用的部署描述符(如web.xml)中正确配置了请求的映射。例如,Servlet的URL路径可能没有正确地映射到...
例如,“ORA-00001”是一个非常常见的错误,它表示违反了唯一性约束,意味着在尝试插入或更新数据时,试图插入的值与已存在的记录冲突。这通常是由于主键或唯一索引的存在导致的。解决这个问题通常需要检查插入的...
- 存储引擎返回了一个错误,具体错误代码由%d表示。 20. 错误1031:关于的表存储引擎不含该选项。 - 尝试使用的表选项不受所选存储引擎支持。 21. 错误1032:无法在中找到记录。 - 在指定表中找不到预期的记录。 ...
8. **日志记录**:在上传过程中记录关键操作和可能出现的问题,以便于后期排查和优化。 9. **多文件上传**:随着HTML5的普及,现代浏览器支持多文件上传。类应支持一次性上传多个文件,并对每个文件分别进行处理。 ...
在IT行业中,日志系统是不可或缺的一部分,它用于记录应用程序运行过程中的事件、错误和调试信息,以便在问题出现时进行排查和分析。"LogSystem简易日志记录"的主题涉及了自定义日志记录器的设计与实现,我们将深入...
在日志类中,可以定义一个临界区,确保每次只有一个线程能进入该区域进行写操作,从而防止并发冲突。 4. **按日期时间写日志**: - 日志通常按照日期和时间进行组织,方便查找和分析。日志类可能包含逻辑来动态...
在C++编程中,日志记录是一个至关重要的实践,它帮助开发者跟踪程序运行时的状态,进行错误排查和性能分析。本模块提供了一个简单的C++日志类,旨在简化日志输出,提高开发效率。我们将详细探讨这个日志类的设计思路...
记录异常日志和提供用户友好的错误信息,能提高用户体验并方便问题排查。 最后,代码重构和优化是持续改进代码质量的过程。通过提高代码可读性、可维护性和性能,可以使得代码更加简洁高效。工具如 PyCharm 的重构...
在处理这类问题时,有一个重要的步骤是查看错误日志。VS2005会在生成过程中记录详细的错误信息,通过这些信息,我们可以更准确地定位问题所在。如果错误日志不够清晰,还可以尝试开启更详细的调试信息输出,以获取更...
综上所述,这个C#支付工具类是一个全面的解决方案,集成了支付过程中涉及的各种核心操作,大大降低了开发者的工作负担。使用这个工具类,开发者只需关注业务逻辑,而不用从头实现这些基础但重要的支付相关功能。无论...
WebLogic使用类加载器机制,不同模块可能加载不同版本的同一个类,导致冲突。检查应用的类路径和依赖关系,避免版本冲突。 4. **资源未找到**:如果应用尝试访问不存在的文件、数据库连接或其他外部资源,会抛出...
在IT领域,尤其是在企业级财务管理软件的使用过程中,可能会遇到各种各样的问题,其中“打开账套文件提示3343错误”是一个常见的错误代码,特别是在金蝶KIS行政事业版V6.2这样的专业财务软件中。这个错误通常表明在...