Files
cloudron-box/src/scripts/backupupload.js
Girish Ramakrishnan 5a4c2a4974 Remove max_old_space and use as much as we can
process.memoryUsage() is our friend. also, with --expose-gc we
can use global.gc(). we don't use it yet though

part of #626
2019-04-02 21:42:41 -07:00

55 lines
1.5 KiB
JavaScript
Executable File

#!/bin/bash
':' //# comment; exec /usr/bin/env node --expose-gc "$0" "$@"
// to understand the above hack read http://sambal.org/2014/02/passing-options-node-shebang-line/
'use strict';
if (process.argv[2] === '--check') return console.log('OK');
require('supererror')({ splatchError: true });
var assert = require('assert'),
backups = require('../backups.js'),
database = require('../database.js'),
debug = require('debug')('box:backupupload');
function initialize(callback) {
assert.strictEqual(typeof callback, 'function');
database.initialize(callback);
}
// Main process starts here
const backupId = process.argv[2];
const format = process.argv[3];
const dataLayoutString = process.argv[4];
debug(`Backing up ${dataLayoutString} to ${backupId}`);
process.on('SIGTERM', function () {
process.exit(0);
});
// this can happen when the backup task is terminated (not box code)
process.on('disconnect', function () {
debug('parent process died');
process.exit(0);
});
initialize(function (error) {
if (error) throw error;
backups.upload(backupId, format, dataLayoutString, (progress) => process.send(progress), function resultHandler(error) {
if (error) debug('upload completed with error', error);
debug('upload completed');
process.send({ result: error ? error.message : '' });
// https://nodejs.org/api/process.html are exit codes used by node. apps.js uses the value below
// to check apptask crashes
process.exit(error ? 50 : 0);
});
});