Introduction
This document summarizes the kinds of exceptions you may encounter when
deploying or running an API Runtime Services application, or when
installing or upgrading the acs NPM package on your system.
The appc cloud list and the appc cloud loglist CLI commands are used to troubleshoot deployment or runtime issues.
Note that the appc cloud loglist may not immediately retrieve the latest logs from the server; you
may need to wait a few seconds and try running the command again. Also,
users should not expect this command to pull logs from the start date;
the output will always return the latest logs. For example, if a start
date is used and there are more than a 1000 lines up through today's date
from the start date, the logs will only return a page with lines starting
from today's date going back to the start date and not from the start date
to today.
Exceptions are thrown upon deployment
Exception in app.js outside start() method
The following code references an undefined variable outside an application's start()method.
// initialize appfunction start(app, express) { app.use(express.favicon(__dirname + '/public/images/favicon.ico')); //set favicon} adsgasdg; // This line causes exception. // release resourcesfunction stop() {} |
In this scenario, the Message field of the appc cloud list and the appc acs loglist output indicates a ReferenceError and the name and location of the reference. The Status field of the appc cloud list command is set to "Failed to deploy".
$ appc cloud list testappApp name: testapp-- URL: http://a3110b813195ca3a774913a767e49a1ce5f17e63.cloud-services.appcelerator.com-- Created at: Tue Dec 24 2013 21:15:19 GMT+0800 (CST)-- Node Version: 0.10.22-- Maximum allowed number of servers: 1-- Desired number of servers: 1-- Active version: 0.1.0-- Published at: Thu Dec 26 2013 09:18:26 GMT+0800 (CST)-- Status: Failed to deploy-- Message: ReferenceError: adsgasdg is not defined at /app.js:6:1 $ acs loglist testapp12/26/2013 05:18:030.335 [INFO] [4454] ------------ Run MVC App ------------12/26/2013 05:18:030.635 [ERROR] [4454] Failed to load main script. ReferenceError:
adsgasdg is not definedat /app.js:6:112/26/2013 05:18:030.636 [ERROR] [4454] ReferenceError: adsgasdg is not definedat /app.js:6:1 |
Exception inside app.js start() method
The following code references an undefined variable inside an application's start()method.
// initialize appfunction start(app, express) { adsgasdg; // This line causes exception. app.use(express.favicon(__dirname + '/public/images/favicon.ico')); //set favicon} // release resourcesfunction stop() {} |
In this scenario, the Message field of the appc cloud list and the appc cloud loglist output indicates a ReferenceError and the name and location of the exception. The Status field of the appc cloud list command is set to "Failed to deploy".
$ appc acs list testappApp name: testapp-- URL: http://a3110b813195ca3a774913a767e49a1ce5f17e63.cloud-services.appcelerator.com-- Created at: Tue Dec 24 2013 21:15:19 GMT+0800 (CST)-- Node Version: 0.10.22-- Maximum allowed number of servers: 1-- Desired number of servers: 1-- Active version: 0.1.0-- Published at: Thu Dec 26 2013 09:20:40 GMT+0800 (CST)-- Status: Failed to deploy-- Message: ReferenceError: adsgasdg is not definedat Object.start (/app.js:4:5) $ acs loglist testapp12/26/2013 05:20:043.923 [INFO] [4488] ------------ Run MVC App ------------info: socket.io started12/26/2013 05:20:044.224 [ERROR] [4488] Failed to run start(). ReferenceError:
adsgasdg is not definedat Object.start (/app.js:4:5) 12/26/2013 05:20:044.225 [ERROR] [4488] ReferenceError: adsgasdg is not
definedat Object.start (/app.js:4:5) |
Exception in a controller, outside of a function
The following code references an undefined variable inside a controller, outside any function definition:
function index(req, res) { res.render('index', { title: 'Welcome to Node.ACS! ' + process.version });} asgasg;dkg;as // This line causes exception. |
When accessing the application and hitting the controller over HTTP, it returns the following error:
Cannot get / |
In this scenario, the appc cloud list output doesn't indicate a problem, but the appc cloud loglist indicates a ReferenceError and the name and location of the exception.
$ appc cloud list testappApp name: testapp-- URL: http://a3110b813195ca3a774913a767e49a1ce5f17e63.cloud-services.appcelerator.com-- Created at: Tue Dec 24 2013 21:15:19 GMT+0800 (CST)-- Node Version: 0.10.22-- Maximum allowed number of servers: 1-- Desired number of servers: 1-- Current number of deployed servers: 1-- Active version: 0.1.0-- Published at: Thu Dec 26 2013 09:24:54 GMT+0800 (CST)-- Servers:No. 1 ID: 52b81468754c4184e58e8789 Status: Deployed $ acs loglist testapp12/26/2013 05:24:059.035 [INFO] [4503] ------------ Run MVC App ------------info: socket.io started12/26/2013 05:24:059.427 [ERROR] [4503] Failed to load controller "application.js". ReferenceError: asgasg is not defined at /controllers/application.js:5:1 |
Exceptions are thrown at runtime
Exception in synchronous calls handling requests
The following code references an undefined variable inside a controller function.
function index(req, res) { asgasg;dkg;as // This line causes exception. res.render('index', { title: 'Welcome to Arrow Cloud! ' + process.version });} |
In this scenario, the appc cloud list output doesn't indicate a problem, but the appc cloud loglist indicates a ReferenceError and the name and location of the exception.
$ appc cloud list testappApp name: testapp-- URL: http://a3110b813195ca3a774913a767e49a1ce5f17e63.cloud-services.appcelerator.com-- Created at: Tue Dec 24 2013 21:15:19 GMT+0800 (CST)-- Node Version: 0.10.22-- Maximum allowed number of servers: 1-- Desired number of servers: 1-- Current number of deployed servers: 1-- Active version: 0.1.0-- Published at: Thu Dec 26 2013 09:29:52 GMT+0800 (CST)-- Servers:No. 1 ID: 52b81468754c4184e58e8789 Status: Deployed $ acs loglist testapp12/26/2013 05:33:003.721 [INFO] [4541] ------------ Run MVC App ------------info: socket.io started12/26/2013 05:33:004.122 [INFO] [4541] App startedReferenceError: asgasg is not defined at index (/controllers/application.js:3:5)[PERF] GET / 9 ms |
The response when accessing the application and hitting that function indicates the name and location of the reference error:
ReferenceError: asgasg is not defined at index (/controllers/application.js:2:4) |
Exception in asynchronous callbacks handling requests (or background jobs)
The following code sample uses the setTimeout() method to asynchronously call a function that contains an exception.
function index(req, res) { setTimeout(function(){ respond(res); }, 2000);}function respond(res) { asgasg;af //This line causes exception. res.render('index', { title: 'Welcome to Node.ACS! ' + process.version });} |
In this scenario when accessing the application over HTTP and hitting the function, the following error is returned:
An error has occurred: {"code":"ECONNRESET"} |
In this scenario, the appc cloud loglist indicates a ReferenceError and the corresponding stack trace; appc cloud list does not indicate any problem.
$ appc cloud loglist testapp12/26/2013 05:44:043.639 [INFO] [4606] ------------ Run MVC App ------------ info: socket.io started12/26/2013 05:44:044.054 [INFO] [4606] App started12/26/2013 05:44:053.999 [ERROR] [4606] ReferenceError: asgasg is not definedat respond (/controllers/application.js:8:5)at null._onTimeout (/controllers/application.js:3:9)at Timer.listOnTimeout [as ontimeout] (timers.js:110:15) 12/26/2013 05:44:059.627 [INFO] [4614] ------------ Run MVC App ------------info: socket.io started12/26/2013 05:45:000.029 [INFO] [4614] App started $ acs list testappApp name: testapp-- URL: http://a3110b813195ca3a774913a767e49a1ce5f17e63.cloud-services.appcelerator.com-- Created at: Tue Dec 24 2013 21:15:19 GMT+0800 (CST)-- Node Version: 0.10.22-- Maximum allowed number of servers: 1-- Desired number of servers: 1-- Current number of deployed servers: 1-- Active version: 0.1.0-- Published at: Thu Dec 26 2013 09:29:52 GMT+0800 (CST)-- Servers:No. 1 ID: 52b81468754c4184e58e8789 Status: Deployed |
Application crashes while handling requests
The following code has request handler that quickly uses up available memory, causing the application to crash.
function index(req, res) { respond(res);} function respond(res) { var cur = 167772160; var bcast = 184549375; var addresses = []; while (cur <= bcast){ cur += 1; addresses.push(cur); } console.log(addresses.length); console.log(addresses); // memory goes from a few megs to over a gig in seconds when trying to
print this res.send(addresses);} |
The appc cloud loglist output indicates "FATAL ERROR: JS Allocation failed - process
out of memory"; appc cloud list doesn't indicate any problem.
$ acs loglist testapp12/26/2013 05:58:042.432 [INFO] [4628] ------------ Run MVC App ------------info: socket.io started12/26/2013 05:58:042.828 [INFO] [4628] App startedFATAL ERROR: JS Allocation failed - process out of memory12/26/2013 05:59:000.030 [INFO] [4636] ------------ Run MVC App ------------info: socket.io started12/26/2013 05:59:000.434 [INFO] [4636] App started $ acs list testappApp name: testapp-- URL: http://a3110b813195ca3a774913a767e49a1ce5f17e63.cloud-services.appcelerator.com-- Created at: Tue Dec 24 2013 21:15:19 GMT+0800 (CST)-- Node Version: 0.10.22-- Maximum allowed number of servers: 1-- Desired number of servers: 1-- Current number of deployed servers: 1-- Active version: 0.1.0-- Published at: Thu Dec 26 2013 09:29:52 GMT+0800 (CST)-- Servers:No. 1 ID: 52b81468754c4184e58e8789 Status: Deployed |
Application crashes while running background jobs
The following code causes the application to run out of memory and crash
while processing a setTimeout() function call.
// initialize appfunction start(app, express) { app.use(express.favicon(__dirname + '/public/images/favicon.ico')); //set favicon setTimeout(dosth, 5000);} // release resourcesfunction stop() {} function dosth() { var cur = 167772160; var bcast = 184549375; var addresses = []; while (cur <= bcast){ cur += 1; addresses.push(cur); } console.log(addresses.length); console.log(addresses); // memory goes from a few megs to over a gig in seconds when trying to
print this} |
The appc cloud loglist output indicates "FATAL ERROR: JS Allocation failed - process
out of memory"; appc cloud list doesn't indicate any problem.
$ appc cloud loglist testapp12/26/2013 06:04:043.934 [INFO] [4667] ------------ Run MVC App ------------info: socket.io started12/26/2013 06:04:044.332 [INFO] [4667] App startedFATAL ERROR: JS Allocation failed - process out of memory12/26/2013 06:05:000.529 [INFO] [4671] ------------ Run MVC App ------------info: socket.io started12/26/2013 06:05:000.927 [INFO] [4671] App startedFATAL ERROR: JS Allocation failed - process out of memory $ acs list testappApp name: testapp-- URL: http://a3110b813195ca3a774913a767e49a1ce5f17e63.cloud-services.appcelerator.com-- Created at: Tue Dec 24 2013 21:15:19 GMT+0800 (CST)-- Node Version: 0.10.22-- Maximum allowed number of servers: 1-- Desired number of servers: 1-- Current number of deployed servers: 1-- Active version: 0.1.0-- Published at: Thu Dec 26 2013 09:29:52 GMT+0800 (CST)-- Servers:No. 1 ID: 52b81468754c4184e58e8789 Status: Deployed |
Installation errors
This section describes issues you may encounter when installing or upgrading API Runtime Services using NPM.
Error: ENOENT, no such file or directory
API Runtime Services installation fails with the following error:
...fs.js:427 return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode); ^Error: ENOENT, no such file or directory '/usr/local/lib/node_modules/acs/bin/acsx' at Object.fs.openSync (fs.js:427:18) at Object.fs.readFileSync (fs.js:284:15) at Object.<anonymous> (/usr/local/lib/node_modules/acs/scripts/config.js:21:19) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) at startup (node.js:119:16) at node.js:902:3 |
To resolve, try deleting your ~/.npm folder and cleaning the NPM cache, then re-installing:
rm -rf ~/.npmnpm cache clearsudo npm -g install acs |