1
0
Fork 0

Fix TypeError for invalid manifests (3.4) (#7603)

* Fix TypeError for invalid manifests

* Remove unnecessary wrap

* Update CHANGELOG
This commit is contained in:
Alan Plum 2018-12-10 15:46:23 +01:00 committed by Michael Hackstein
parent 8557fdaf22
commit da4179af47
2 changed files with 20 additions and 23 deletions

View File

@ -1,6 +1,9 @@
v3.4.1 (XXXX-XX-XX)
-------------------
* fixed TypeError being thrown instead of validation errors when Foxx manifest
validation fails
* make AQL REMOVE operations use less memory with the RocksDB storage engine
the previous implementation of batch removals read everything to remove into

View File

@ -5,9 +5,15 @@ const joi = require('joi');
const semver = require('semver');
const util = require('util');
const joinPath = require('path').join;
const arangodb = require('@arangodb');
const ArangoError = arangodb.ArangoError;
const errors = arangodb.errors;
const {
plainServerVersion,
ArangoError,
errors: {
ERROR_INVALID_SERVICE_MANIFEST,
ERROR_SERVICE_MANIFEST_NOT_FOUND,
ERROR_MALFORMED_MANIFEST_FILE
}
} = require('@arangodb');
const il = require('@arangodb/util').inline;
const CANONICAL_SCHEMA = 'http://json.schemastore.org/foxx-manifest';
@ -161,7 +167,7 @@ const manifestSchema = {
};
function checkManifest (inputManifest, mount, complainAboutVersionMismatches) {
const serverVersion = arangodb.plainServerVersion();
const serverVersion = plainServerVersion();
const errors = [];
const manifest = {};
let legacy = false;
@ -317,9 +323,9 @@ function checkManifest (inputManifest, mount, complainAboutVersionMismatches) {
console.errorLines(error);
}
throw new ArangoError({
errorNum: errors.ERROR_INVALID_SERVICE_MANIFEST.code,
errorNum: ERROR_INVALID_SERVICE_MANIFEST.code,
errorMessage: dd`
${errors.ERROR_INVALID_SERVICE_MANIFEST.message}
${ERROR_INVALID_SERVICE_MANIFEST.message}
Manifest for service at "${mount}":
${errors.join('\n')}
`
@ -359,9 +365,9 @@ function validateManifestFile (filename, mount, complainAboutVersionMismatches)
let mf;
if (!fs.exists(filename)) {
throw new ArangoError({
errorNum: errors.ERROR_SERVICE_MANIFEST_NOT_FOUND.code,
errorNum: ERROR_SERVICE_MANIFEST_NOT_FOUND.code,
errorMessage: dd`
${errors.ERROR_SERVICE_MANIFEST_NOT_FOUND.message}
${ERROR_SERVICE_MANIFEST_NOT_FOUND.message}
File: ${filename}
`
});
@ -371,27 +377,15 @@ function validateManifestFile (filename, mount, complainAboutVersionMismatches)
} catch (e) {
throw Object.assign(
new ArangoError({
errorNum: errors.ERROR_MALFORMED_MANIFEST_FILE.code,
errorNum: ERROR_MALFORMED_MANIFEST_FILE.code,
errorMessage: dd`
${errors.ERROR_MALFORMED_MANIFEST_FILE.message}
File: ${filename}
`
}), {cause: e}
);
}
try {
mf = checkManifest(mf, mount, complainAboutVersionMismatches);
} catch (e) {
throw Object.assign(
new ArangoError({
errorNum: errors.ERROR_INVALID_SERVICE_MANIFEST.code,
errorMessage: dd`
${errors.ERROR_INVALID_SERVICE_MANIFEST.message}
${ERROR_MALFORMED_MANIFEST_FILE.message}
File: ${filename}
`
}), {cause: e}
);
}
mf = checkManifest(mf, mount, complainAboutVersionMismatches);
return mf;
}