问题
在服务器后台nodejs上使用svn导入变更记录出现“Error: spawn ENOMEM”错误提示,查了下发现是“底层抛了错误,并且设置了errno为ENOMEM,内存不够用”
现象
登录到后台系统,发现有很多svn进程驻留在了后台,于是想着应该是异常情况后svn进程出现了驻留不退出的情况
过程
调试发现了两种情况会出现驻留的情况,一种是用户名使用了邮箱全写,比如"[email protected]",这种情况下,会出现需要验证领域的提示;另一种是svn用户名密码输入错误的情况
解决
但是就算用户写错了,后台也需要正常处理才可以,于是想是不是spawn-svn是否含有超时时间的设置,跟踪到底层,发现最终调用了child_process中的spawn方法,查了下child_process中有两个方法用于进程的调用:spawn和exec;两个的区别,可以在网上查找...
发现spawn的参数中没有timeout属性,而exec中有timeout属性,但是因为两种调用方式返回结果不同,就需要修改spawn-svn调用的easy-spawn底层库了,这个处理方式显然不好(1.修改第三方库,后续升级第三方库就麻烦了;2.工作量比较大)...
方案
于是想着在svn命令行上查找一下解决方法,使用svn help info查找帮助文档,查找到参数如下
想了下,之前遇到一个问题:如果同台机器切换用户也会出现提示,当时采用了修改配置文件的方式,第一个参数应该就可以把这个问题解决掉...
于是添加上这三个参数后,问题解决了···
svn.getInfo([url, ‘--no-auth-cache‘, ‘--non-interactive‘, ‘--trust-server-cert‘], function(err, info){
转载请注明:http://blog.csdn.net/sogouauto
探索测试奥义,交流测试技术,欢迎关注“搜狗测试”
时间: 2024-10-09 20:56:51