博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
功能奇数次执行和偶数次执行时的结果不同的故障复盘
阅读量:5859 次
发布时间:2019-06-19

本文共 1444 字,大约阅读时间需要 4 分钟。

场景:

将数据库查询到的数据,写入一个xls文件。
完成后,多点几次,发现一个问题,偶数次生成的文件比较小,打开一看,里面只有一行,只有标题,没有内容。
分析日志,发现偶数次执行时预期的执行进程中没有相关的日志打印

分析:

奇数次执行与预期一致,就不再分析了;
偶数次执行时虽没有找到日志,但生成的文件名与文件格式均与预期一致,唯独缺少文件内容。
重启进程打开调试,果然在偶数次执行时,Eclipse中相关代码并没有触发,这与预期进程中没有找到相关日志打印是一致的。
(事后分析:有与代码逻辑相现的结果文件名及标题,说明代码执行了,但在预期的进程日志没有找到打印,只能说明没有在预期进程中执行,但的确是执行了)
问题:
既然除缺少文件内容外,其它均与预期一致,说明相关代码肯定执行了。日志去哪了呢。
解决办法(在这个环节出了乌龙):
没有找到日志,说不定在其它地方有。然后使用NotePad++对整个目录搜索,最后得到的结论是没找到。
这个乌龙结论的原因忘了,不知正在搜索时,远程主机被其它人占用,然后再登陆时状态丢失,还是当时Notepad++卡死,重启了。
反思:
对可能的疑点或一个猜想一定要严谨的验证,大胆架设,小心求证,一定要小心求证。
这个乌龙,导致后面浪费自己和其它同事不少时间。
使用Notepad++搜索很大的目录时,一定要限定扩展名,不然搜到大文件或二进制文件,会导致Notepad++卡死后重启。
求助:
求助相关模块的同事,对方验证了下均表示他们的模块无异常,让我这边排查代码逻辑。
这就无解了,如果逻辑有问题肯定会抛异常,怎么可能找不到相关日志,报错或正常打印。
在求助的过程中,有一个同事在帮助分析偶数次执行时,给一个提示,让确定下偶数次执行时,执行功能的path,应该是进程吧(猜的,这块对我是黑盒)
由于当时一直纠结于为什么没有日志的事,把这个重要线索给忽略了。
转机:
正好遇到双休日,忽然想到这个故障,path中的root节点与另一个进程名很像,看看这个进程下有没有相关日志,
一查,果然有!!!!!!!!!!!!!!!!!!!!!!!!!!
日志的事有着落了,说明偶数次执行时,功能在另一个进程中执行了。
问题:为什么没有内容呢,标题都有
远程调试开一下,跟了代码,ResultSet中的确没有数据。
为什么呢????????
无解。。。。
在干其它事时,忽然想到,是不是数据库连接有问题,把断点打在获取Connection之后,一看dbUser不是预期的那个,打开PL/SQL,使用Connection中使用的帐户登陆Oracle,把日志中的sql在这个用户下执行一下,果然查询结果为空。
世界澄清了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
功能使用其它模块提供的获取数据库API,在不同进程下,这个API使用的dbUser是不一样的,这次比较巧的是,这个非预期dbUser中居然有表结构了。
解决:
与其它模块的同事协调处理办法。
反思:
故障出现了,肯定有其符合逻辑的原因,目标是根据已知的信息,大胆架设,小心求证,一定要求证。
一定不能陷在,看似矛盾的已知信息上,而让自己陷入死循环。要根据已知,架设可能导致这种结果的可能性,再来一一验证,最终找到真正的原因。

tips:

Notepad++文件件查找功能的help:

 

转载于:https://www.cnblogs.com/softidea/p/4700524.html

你可能感兴趣的文章
commandLink/commandButton/ajax backing bean action/listener method not invoked (转)
查看>>
(一) pyhon 基础语法(数值 字符串 元组 列表 字典)
查看>>
HDOJ 1003:求一串数字中和最大的连续子串
查看>>
RedHat 5.6_x86_64 + ASM + RAW+ Oracle 10g RAC (二)
查看>>
win7不能全屏
查看>>
MySQL/InnoDB的并发插入Concurrent Insert
查看>>
转两好文防丢:Debian 版本升级/降级 & Linux 应用程序失去输入焦点问题的解决...
查看>>
HDU - Pseudoforest
查看>>
Nexus杂
查看>>
Linux平台Java调用so库-JNI使用例子
查看>>
Web服务器压力测试工具http_load、webbench、ab、Siege使用教程
查看>>
Mac软件下载备忘
查看>>
java 泛型初探
查看>>
在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory
查看>>
就是一个表格
查看>>
找回使用Eclipse删除的文件
查看>>
集成spring3、hibernate4、junit
查看>>
URL与ASCII
查看>>
java读取properties配置文件
查看>>
UITableview中cell重用引起的内容重复的问题
查看>>