今天dmap更新部署后,在qa的jpaas测试环境出现如下问题:
执行批量删除任务时:
浏览器 没收到任何返回。 直接就悲催了。
但实际上 从业务和数据库来看,后台 是执行了,而且执行 成功了。 后台打印的日志 一切正常。
在qa测试环境可以复现,但偶尔也不会出现。 本地开发环境无法复现。
联系OP排查 tomcat日志 等一系列,从tomcat日志看 ,后台tomcat 访问日志 的确是HTTP 200 成功。
故可以判定后台 收到请求,并且成功处理,返回给前面了。
一筹莫展之际,考虑到是否可以用 rest client 模拟http请求,看下后台服务到底是否正常。
最后在qq群里请教其他前端人员。 有位同学 google 一下 “ provisional headers are shown”,找到如下网页“ http://stackoverflow.com/questions/21177387/caution-provisional-headers-are-shown-in-chrome-debugger”
故怀疑是 前端 在 ajax返回前 就刷新了页面 或者 跳转到 其他页面去了。
这一下启发了我,因为这次 上线,前端fe 的确做了更改。
故我开始排查 js代码问题,发现了ajax 他设置了 timeout属性 为10s。
至此 真相大白,就是 因为这个 请求后台处理比较耗时,ajax在等待 10s 发现 后台 还未返回,就自动断开了连接。
故出现奇怪问题。
解决办法:
方法1 : 将ajax请求改成 同步。
方法2: 去掉 timeout属性的设置。
思考: 有时考虑问题 不能局限于 常规场景,要发散。 可能你以为 不可能出现问题的 地方 就在哪儿。 真有可能 是其他人挖的坑~