问题描述及定位过程
周末收到现场问题:一台设备能连上平台但无法正常登陆。
我们每个设备都有一个自定义唯一编号,这个编号用于设备登陆平台时校验设备身份。
现在设备能与平台建立socket连接,但无法登陆,应该就是这个编号验证不通过。
平台日志显示:设备登陆时报编号不存在异常。
但我复制这个编号,手动去平台数据库查又可以找到,奇了怪了。
我一通查看代码,没找到问题。
我盯着日志看,突然发现一个异常:设备编号后面的日志是换行显示的。
正常日志是一行的,这个设备日志换行,说明设备编号后面有个换行符\n。
我和生成这个设备编号的同事沟通,最终找到问题原因:他的编辑器会自动加换行符。
总结
- 程序不够健壮,对设备唯一编号这种关键信息没做好格式校验。
- 生成设备唯一编号应该用我们正式的工具,不能手动。
- 小问题往往出现在细节上。
参考
因为这个问题,我特地学习了回车与换行的起源及区别。参考资料如下,