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

分析:
奇数次执行与预期一致,就不再分析了;
偶数次执行时虽没有找到日志,但生成的文件名与文件格式均与预期一致,唯独缺少文件内容。
重启进程打开调试,果然在偶数次执行时,Eclipse中相关代码并没有触发,这与预期进程中没有找到相关日志打印是一致的。
(事后分析:有与代码逻辑相现的结果文件名及标题,说明代码执行了,但在预期的进程日志没有找到打印,只能说明没有在预期进程中执行,但的确是执行了)
问题:
既然除缺少文件内容外,其它均与预期一致,说明相关代码肯定执行了。日志去哪了呢。
解决办法(在这个环节出了乌龙):
没有找到日志,说不定在其它地方有。然后使用NotePad++对整个目录搜索,最后得到的结论是没找到。
这个乌龙结论的原因忘了,不知正在搜索时,远程主机被其它人占用,然后再登陆时状态丢失,还是当时Notepad++卡死,重启了。

反思:
对可能的疑点或一个猜想一定要严谨的验证,大胆架设,小心求证,一定要小心求证。
这个乌龙,导致后面浪费自己和其它同事不少时间。

使用Notepad++搜索很大的目录时,一定要限定扩展名,不然搜到大文件或二进制文件,会导致Notepad++卡死后重启。

求助:
求助相关模块的同事,对方验证了下均表示他们的模块无异常,让我这边排查代码逻辑。
这就无解了,如果逻辑有问题肯定会抛异常,怎么可能找不到相关日志,报错或正常打印。

在求助的过程中,有一个同事在帮助分析偶数次执行时,给一个提示,让确定下偶数次执行时,执行功能的path,应该是进程吧(猜的,这块对我是黑盒)

由于当时一直纠结于为什么没有日志的事,把这个重要线索给忽略了。

转机:
正好遇到双休日,忽然想到这个故障,path中的root节点与另一个进程名很像,看看这个进程下有没有相关日志,
一查,果然有!!!!!!!!!!!!!!!!!!!!!!!!!!
日志的事有着落了,说明偶数次执行时,功能在另一个进程中执行了。

问题:为什么没有内容呢,标题都有
远程调试开一下,跟了代码,ResultSet中的确没有数据。
为什么呢????????
无解。。。。
在干其它事时,忽然想到,是不是数据库连接有问题,把断点打在获取Connection之后,一看dbUser不是预期的那个,打开PL/SQL,使用Connection中使用的帐户登陆Oracle,把日志中的sql在这个用户下执行一下,果然查询结果为空。
世界澄清了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
功能使用其它模块提供的获取数据库API,在不同进程下,这个API使用的dbUser是不一样的,这次比较巧的是,这个非预期dbUser中居然有表结构了。

解决:
与其它模块的同事协调处理办法。

反思:
故障出现了,肯定有其符合逻辑的原因,目标是根据已知的信息,大胆架设,小心求证,一定要求证。

一定不能陷在,看似矛盾的已知信息上,而让自己陷入死循环。要根据已知,架设可能导致这种结果的可能性,再来一一验证,最终找到真正的原因。

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

功能奇数次执行和偶数次执行时的结果不同的故障复盘相关推荐

  1. 冰雹数 任意给定一个整, 如果是偶数,执行: N / 2 如果是奇数,执行: N * 3 + 1 生成的新的数字再执行同样的动作,循环往复。 通过观察发现,这个数字会一会儿上升到很高,

    冰 任意给定一个正整数N, 如果是偶数,执行: N / 2 如果是奇数,执行: N * 3 + 1 生成的新的数字再执行同样的动作,循环往复. 通过观察发现,这个数字会一会儿上升到很高, 一会儿又降落 ...

  2. python可以实现的功能_Python 实现某个功能每隔一段时间被执行一次的功能方法...

    本人在做项目的时候遇到一个问题: 某个函数需要在每个小时的 3 分钟时候被执行一次,我希望我 15:45 启动程序,过了18 分钟在 16:03 这个函数被执行一次,下一次过 60 分钟在 17:03 ...

  3. 操作系统原理,系统调用,系统调用与库函数API等函数之间的调用关系,功能与机制设计,系统调用的执行过程与Linux系统调用执行示例,不同操作系统下的PCB

    操作系统原理,系统调用,功能与机制设计,系统调用的执行过程与Linux系统调用执行示例,不同操作系统下的PCB 一.系统调用:操作系统功能调用,用户在编程时可以调用的操作系统功能. 1.系统调用是操作 ...

  4. python实现excel中vlookup函数功能并打包为win环境可执行的exe文件

    最近工作用到数据对比处理,Excel用的比较多,奈何自己VBA不够熟悉,复杂一点的功能,做起来挺吃力的,就想起了Python来解决.   将期望功能代码打包成exe文件,在window环境中运行,获得 ...

  5. drools 执行函数_Drools可执行模型还活着

    drools 执行函数 总览 可执行模型的目的是提供规则集的纯基于Java的表示,以及方便的Java DSL以编程方式创建这种模型. 该模型是低级的,旨在为用户提供所需的所有信息,例如用于索引评估的l ...

  6. mybatis delete返回值_面试:谈谈你对MyBatis执行过程之SQL执行过程理解

    前言 在了解了MyBatis初始化加载过程后,我们也应该研究看看SQL执行过程是怎样执行?这样我们对于Mybatis的整个执行流程都熟悉了,在开发遇到问题也可以很快定位到问题. 更重要的,在面试中遇到 ...

  7. MySQL实战 | 01 当执行一条 select 语句时,MySQL 到底做了啥?

    原文链接:当执行一条 select 语句时,MySQL 到底做了啥? 也许,你也跟我一样,在遇到数据库问题时,总时茫然失措,想重启解决问题,又怕导致数据丢失,更怕重启失败,影响业务. 就算重启成功了, ...

  8. 为什么预估执行计划与真实执行计划会有差异?

    云和恩墨北区技术工程师 专注于 SQL 审核和优化相关工作.曾经服务的客户涉及金融保险.电信运营商.政府.生产制造等行业. 郭成日 本文由恩墨大讲堂154期线上分享整理而成. 一问题概要 对同一个 S ...

  9. linux程序循环执行,Linux之循环执行任务

    简介 在Linux下,crond服务是实现周期性计划任务的工具之一,crond服务能在规定的时间去执行设置的命令.脚本,功能类似windows下的"计划任务".对一个多用户多任务的 ...

最新文章

  1. Linux k8s 启动 停止 查询状态 脚本
  2. RobotFramework操作API
  3. 成千上万的在线课程时,如何保持理智和学习编码
  4. Spring JDBC模板惯用方式
  5. SAP License:SAP成本收集器两则
  6. linux qt安装包下载链接
  7. Linux Bash脚本练习2
  8. 国军标GJB150.8A-2009淋雨试验第三方检测机构
  9. win10插上耳机还外放(win10插上耳机还外放怎么设置)
  10. XPDL之流程定义元模型
  11. 编写训练一年级学生10以内减法的程序
  12. Python爬虫爬小说《诡秘之主》
  13. Qt Designer+PyQt5 控件使用经验(不定时随缘更新)
  14. 【5G核心网】5G概念之-MICO Mode
  15. tcpmux TCP 端口服务多路复用
  16. 【千锋】网络安全学习笔记(三)
  17. 机械电子方向的一点心得
  18. 魔兽争霸:混乱之治+冰封王座 原版ISO镜像下载地址
  19. tomcat如何编译java_tomcat怎么编译java
  20. jackson Read 读取 json 文件和 Write 写入 json 文件 读写 json 文件

热门文章

  1. 安装Python库包的多种方式
  2. 机器学习中如何处理缺失数据(NAN和Ifo)?
  3. Opengl-模型(告别箱子加载模型)
  4. 题目1019:简单计算器
  5. stl的nth_element
  6. B-Tree 和 B+Tree
  7. 【MyBatis】MyBatis自动生成代码之查询爬坑记
  8. 学了这四招,你在Linux上观看Netflix视频不发愁
  9. string.Format字符串格式化说明(转)
  10. WHUST 2015 Summer Contest #11