Skip to content

Commit cbe0a5a

Browse files
committed
Merge branch 'master' into promisify-persistence-item
# Conflicts: # lib/server-code/api/persistence-item.js
2 parents 4e79f0e + 79029ea commit cbe0a5a

File tree

9 files changed

+42
-35
lines changed

9 files changed

+42
-35
lines changed

lib/server-code/api/persistence-item.js

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,7 @@
11
'use strict';
22

3-
const Backendless = require('backendless');
4-
5-
function promisify(fn, context) {
6-
if (Backendless.promisesEnabled()) {
7-
return fn.bind(context);
8-
}
9-
10-
return function() {
11-
return new Promise((resolve, reject) => {
12-
const args = Array.prototype.slice.call(arguments);
13-
args.push(new Backendless.Async(resolve, reject));
14-
15-
fn.apply(context, args);
16-
});
17-
};
18-
}
3+
const Backendless = require('backendless'),
4+
promisify = require('../../util/promise').promisifyBackendless;
195

206
class PersistenceItem {
217
constructor() {

lib/server-code/runners/cloud.js

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,19 @@
33
const logger = require('../../util/logger'),
44
DriverService = require('../services/driver'),
55
tasksExecutor = require('./tasks/executor'),
6+
promisify = require('../../util/promise').promisifyBackendless,
67
Backendless = require('backendless');
78

9+
function flushPendingLogs() {
10+
return promisify(Backendless.Logging.flush, Backendless.Logging)();
11+
}
12+
813
function finalize() {
9-
if (Backendless.Logging.messagesCount) {
10-
return new Promise((resolve, reject) => {
11-
return Backendless.Logging.flush(new Backendless.Async(resolve, reject));
12-
});
13-
}
14+
return flushPendingLogs();
1415
}
1516

1617
exports.start = function(opts) {
17-
logger.info('Starting Cloud Code Runner');
18+
logger.debug('Starting Cloud Code Runner');
1819

1920
const driver = new DriverService(opts.driverHost, opts.driverPort, opts.driverRunnerId);
2021

@@ -23,15 +24,17 @@ exports.start = function(opts) {
2324
}
2425

2526
function processTask(task) {
26-
logger.info(`[${task.id}] Processing started`);
27+
logger.debug(`[${task.id}] Processing started`);
2728

2829
return tasksExecutor.execute(task, opts)
2930
.then((result) => {
30-
logger.info(`[${task.id}] Processing finished`);
31+
logger.debug(`[${task.id}] Processing finished`);
3132

3233
return result && driver.sendResult(task.id, result);
3334
});
3435
}
3536

36-
return getTask().then(processTask).then(finalize);
37+
return getTask()
38+
.then(processTask)
39+
.then(finalize);
3740
};

lib/server-code/runners/debug.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ const logger = require('../../util/logger'),
44
file = require('../../util/file'),
55
redis = require('redis'),
66
promiseWhile = require('../../util/promise').promiseWhile,
7-
denodeify = require('../../util/promise').denodeify,
7+
denodeify = require('../../util/promise').promisifyNode,
88
ApiServerService = require('../services/api-server'),
99
tasksExecutor = require('./tasks/executor'),
1010
ServerCodeModel = require('../model');

lib/server-code/runners/tasks/executor.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,8 @@ executor.execute = function(task, runnerOpts, model) {
9696
.then((taskExecutor) => taskExecutor(task, runnerOpts, model))
9797
.then(result => result && invocationResult(null, result))
9898
.catch((err) => {
99-
logger.error(err);
99+
logger.error(`Error: ${err.message || err}`);
100+
100101
return invocationResult(err);
101102
});
102103
};

lib/server-code/runners/tasks/invoke-handler.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ function buildModel(task, runnerOpts) {
111111
const modelDescriptorPath = `${codePath}/model.json`;
112112

113113
if (!fs.existsSync(modelDescriptorPath)) {
114-
logger.error(`Application Model descriptor not found (${modelDescriptorPath})`);
114+
throw new Error(`Application Model descriptor not found [${modelDescriptorPath}]`);
115115
}
116116

117117
const modelDescriptor = require(modelDescriptorPath);

lib/server-code/services/api-server.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use strict';
22

3-
const denodeify = require('../../util/promise').denodeify,
3+
const denodeify = require('../../util/promise').promisifyNode,
44
logger = require('../../util/logger'),
55
request = denodeify(require('request'));
66

lib/server-code/services/driver.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,12 @@ class DriverService {
7373
}
7474

7575
getRequest(requestId) {
76-
logger.info('Getting task from CodeRunner Driver');
76+
logger.debug('Getting task from CodeRunner Driver');
7777

7878
return this.send('getRequest', 'GET', requestId)
7979
.then(res => {
8080
if (res.statusCode === 200) {
81-
logger.info('Task successfully received');
81+
logger.debug('Task successfully received');
8282
return res.body;
8383
}
8484

@@ -87,12 +87,12 @@ class DriverService {
8787
}
8888

8989
sendResult(requestId, result) {
90-
logger.info('Sending Execution Result back to CodeRunner Driver');
90+
logger.debug('Sending Execution Result back to CodeRunner Driver');
9191

9292
return this.send('sendResult', 'POST', requestId, result)
9393
.then(res => {
9494
if (res.statusCode === 200) {
95-
logger.info('Successfully sent');
95+
logger.debug('Successfully sent');
9696
} else {
9797
throw new Error(parseError(res));
9898
}

lib/util/promise.js

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
'use strict';
22

3+
const Backendless = require('backendless');
4+
35
/**
46
* Wraps a NodeJS continuation passing function and returns an equivalent version that returns a promise.
57
* An analogue to the Q.denodeify
@@ -9,7 +11,7 @@
911
*
1012
* @returns {function}
1113
*/
12-
exports.denodeify = function(fn, context) {
14+
exports.promisifyNode = function(fn, context) {
1315
return function() {
1416
return new Promise((resolve, reject) => {
1517
const args = Array.prototype.slice.call(arguments);
@@ -20,6 +22,21 @@ exports.denodeify = function(fn, context) {
2022
};
2123
};
2224

25+
exports.promisifyBackendless = function(fn, context) {
26+
if (Backendless.promisesEnabled()) {
27+
return fn.bind(context);
28+
}
29+
30+
return function() {
31+
return new Promise((resolve, reject) => {
32+
const args = Array.prototype.slice.call(arguments);
33+
args.push(new Backendless.Async(resolve, reject));
34+
35+
fn.apply(context, args);
36+
});
37+
};
38+
};
39+
2340
exports.promiseWhile = function(predicate, action) {
2441
function loop() {
2542
return predicate() && Promise.resolve(action()).then(loop);

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
"backendless"
3434
],
3535
"dependencies": {
36-
"backendless": "^3.0.13",
36+
"backendless": "^3.1.1",
3737
"commander": "^2.9.0",
3838
"glob": "^6.0.4",
3939
"jszip": "^2.5.0",

0 commit comments

Comments
 (0)