起因
我负责开发保护的生产零碎,须要通过ftp获取银行提供的银行明细入库。最近降级后,频繁曝出ftp连贯异样的问题,钻研了3天总算搞明确了。
景象
代码介绍
降级前
降级后
修复后
代码开发过程
我接手这个代码后,发现了一点,他仅仅在finally外面执行了disconnect办法,而没有执行logout办法。这样会导致,程序这边是断开了,ftp上却依然保护着这个连贯。
所以我在降级后,突出一个手贱,给他加上了logout办法。后果反而导致了生产环境的ftp始终连不上
运行展现
降级前
连贯一个谬误的ftp,两次都是没连上
降级后
连贯一个谬误的ftp,第二次连贯竟然返回了一个true
修复后
连贯一个谬误的ftp,两次都是没连上
降级后的版本为什么会这么诡异?
因为我引入了logout办法,导致finally外面,当clinet断开时,执行logout办法间接异样,反而没有执行disconnect办法。
disconnect办法外面的__initDefaults办法负责初始化clinet的参数。而我又把client作为一个全局变量,没有初始化client参数,间接导致第二次进入代码
connect办法,还留有上一次连贯的参数,间接返回了true,没有进行连贯。所以修复后把clinet作为了一个局部变量