問題
在服務器後臺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
探索測試奧義,交流測試技術,歡迎關注“搜狗測試”