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

本文共 1392 字,大约阅读时间需要 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:

 

转载地址:http://kesso.baihongyu.com/

你可能感兴趣的文章
POJ1961 Period [KMP应用]
查看>>
CSS hack
查看>>
IT项目管理工具探讨之_项目群管理
查看>>
如何在 Android 手机上安装 Ubuntu 13.04
查看>>
HDU 6073 - Matching In Multiplication | 2017 Multi-University Training Contest 4
查看>>
topcoder srm 465 div1
查看>>
C语言 scanf()和gets()函数的区别
查看>>
如何检测域名是否被微信屏蔽 微信域名检测接口API是如何实现
查看>>
POJ1611-The Suspects
查看>>
Spring 中 ApplicationContext 和 BeanFactory 的区别
查看>>
Linux Makefile 生成 *.d 依赖文件及 gcc -M -MF -MP 等相关选项说明【转】
查看>>
Linux下安装Python-3.3.2【转】
查看>>
STL杂记
查看>>
LeetCode OJ:Merge Two Sorted Lists(合并两个链表)
查看>>
功能测试
查看>>
Rust的闭包
查看>>
【BZOJ 1901】Dynamic Rankings
查看>>
阿里架构师都在学的知识体系
查看>>
PAT (Advanced Level) 1028. List Sorting (25)
查看>>
【摘】人生苦短, 每日python
查看>>