App crashes when uploading in a wholebook a file that belongs to a chapter-processed book
Current behaviour
When trying to upload a converted file of a chapter-processed book to a wholebook, the app crashes with the errors as below:
server_1 | 2022-07-27T12:51:45.272Z - error:
server_1 | {
server_1 | message: 'metadata.isbn: is an invalid additional property, metadata.issn: is an invalid additional property, metadata.nlmId: is an invalid additional property, metadata.notes: is an invalid additional property, metadata.volume: is an invalid additional property, metadata.pubDate: is an invalid additional property, metadata.pub_loc: is an invalid additional property, metadata.pub_name: is an invalid additional property, metadata.openAccess: is an invalid additional property, metadata.sourceType: is an invalid additional property, metadata.dateCreated: is an invalid additional property, metadata.dateUpdated: is an invalid additional property, metadata.copyrightYear: is an invalid additional property, metadata.copyrightHolder: is an invalid additional property, metadata.licenseStatement: is an invalid additional property, metadata.otherLicenseType: is an invalid additional property, metadata.openAccessLicense: is an invalid additional property, metadata.copyrightStatement: is an invalid additional property',
server_1 | stack: 'ValidationError: metadata.isbn: is an invalid additional property, metadata.issn: is an invalid additional property, metadata.nlmId: is an invalid additional property, metadata.notes: is an invalid additional property, metadata.volume: is an invalid additional property, metadata.pubDate: is an invalid additional property, metadata.pub_loc: is an invalid additional property, metadata.pub_name: is an invalid additional property, metadata.openAccess: is an invalid additional property, metadata.sourceType: is an invalid additional property, metadata.dateCreated: is an invalid additional property, metadata.dateUpdated: is an invalid additional property, metadata.copyrightYear: is an invalid additional property, metadata.copyrightHolder: is an invalid additional property, metadata.licenseStatement: is an invalid additional property, metadata.otherLicenseType: is an invalid additional property, metadata.openAccessLicense: is an invalid additional property, metadata.copyrightStatement: is an invalid additional property\n' +
server_1 | ' at Function.createValidationError (/home/node/app/node_modules/objection/lib/model/Model.js:363:12)\n' +
server_1 | ' at parseValidationError (/home/node/app/node_modules/objection/lib/model/AjvValidator.js:189:21)\n' +
server_1 | ' at AjvValidator.validate (/home/node/app/node_modules/objection/lib/model/AjvValidator.js:78:19)\n' +
server_1 | ' at validate (/home/node/app/node_modules/objection/lib/model/modelValidate.js:35:20)\n' +
server_1 | ' at BookComponent.$validate (/home/node/app/node_modules/objection/lib/model/Model.js:97:12)\n' +
server_1 | ' at setJson (/home/node/app/node_modules/objection/lib/model/modelSet.js:28:16)\n' +
server_1 | ' at BookComponent.$setJson (/home/node/app/node_modules/objection/lib/model/Model.js:135:12)\n' +
server_1 | ' at Function.fromJson (/home/node/app/node_modules/objection/lib/model/Model.js:286:11)\n' +
server_1 | ' at Function.ensureModel (/home/node/app/node_modules/objection/lib/model/Model.js:614:25)\n' +
server_1 | ' at UpdateOperation.onAdd (/home/node/app/node_modules/objection/lib/queryBuilder/operations/UpdateOperation.js:21:29)\n' +
server_1 | ' at QueryBuilder.callOperationMethod (/home/node/app/node_modules/objection/lib/queryBuilder/QueryBuilderOperationSupport.js:379:33)\n' +
server_1 | ' at QueryBuilder.addOperationUsingMethod (/home/node/app/node_modules/objection/lib/queryBuilder/QueryBuilderOperationSupport.js:410:28)\n' +
server_1 | ' at QueryBuilder.addOperation (/home/node/app/node_modules/objection/lib/queryBuilder/QueryBuilderOperationSupport.js:401:22)\n' +
server_1 | ' at /home/node/app/node_modules/objection/lib/queryBuilder/QueryBuilder.js:999:12\n' +
server_1 | ' at writeOperation (/home/node/app/node_modules/objection/lib/queryBuilder/QueryBuilder.js:1679:5)\n' +
server_1 | ' at QueryBuilder.patch (/home/node/app/node_modules/objection/lib/queryBuilder/QueryBuilder.js:996:12)',
server_1 | name: 'ValidationError',
server_1 | type: 'ModelValidation',
server_1 | data: {
server_1 | 'metadata.isbn': [
server_1 | {
server_1 | message: 'is an invalid additional property',
server_1 | keyword: 'additionalProperties',
server_1 | params: { additionalProperty: 'isbn' }
server_1 | }
server_1 | ],
server_1 | 'metadata.issn': [
server_1 | {
server_1 | message: 'is an invalid additional property',
server_1 | keyword: 'additionalProperties',
server_1 | params: { additionalProperty: 'issn' }
server_1 | }
server_1 | ],
server_1 | 'metadata.nlmId': [
server_1 | {
server_1 | message: 'is an invalid additional property',
server_1 | keyword: 'additionalProperties',
server_1 | params: { additionalProperty: 'nlmId' }
server_1 | }
server_1 | ],
server_1 | 'metadata.notes': [
server_1 | {
server_1 | message: 'is an invalid additional property',
server_1 | keyword: 'additionalProperties',
server_1 | params: { additionalProperty: 'notes' }
server_1 | }
server_1 | ],
server_1 | 'metadata.volume': [
server_1 | {
server_1 | message: 'is an invalid additional property',
server_1 | keyword: 'additionalProperties',
server_1 | params: { additionalProperty: 'volume' }
server_1 | }
server_1 | ],
server_1 | 'metadata.pubDate': [
server_1 | {
server_1 | message: 'is an invalid additional property',
server_1 | keyword: 'additionalProperties',
server_1 | params: { additionalProperty: 'pubDate' }
server_1 | }
server_1 | ],
server_1 | 'metadata.pub_loc': [
server_1 | {
server_1 | message: 'is an invalid additional property',
server_1 | keyword: 'additionalProperties',
server_1 | params: { additionalProperty: 'pub_loc' }
server_1 | }
server_1 | ],
server_1 | 'metadata.pub_name': [
server_1 | {
server_1 | message: 'is an invalid additional property',
server_1 | keyword: 'additionalProperties',
server_1 | params: { additionalProperty: 'pub_name' }
server_1 | }
server_1 | ],
server_1 | 'metadata.openAccess': [
server_1 | {
server_1 | message: 'is an invalid additional property',
server_1 | keyword: 'additionalProperties',
server_1 | params: { additionalProperty: 'openAccess' }
server_1 | }
server_1 | ],
server_1 | 'metadata.sourceType': [
server_1 | {
server_1 | message: 'is an invalid additional property',
server_1 | keyword: 'additionalProperties',
server_1 | params: { additionalProperty: 'sourceType' }
server_1 | }
server_1 | ],
server_1 | 'metadata.dateCreated': [
server_1 | {
server_1 | message: 'is an invalid additional property',
server_1 | keyword: 'additionalProperties',
server_1 | params: { additionalProperty: 'dateCreated' }
server_1 | }
server_1 | ],
server_1 | 'metadata.dateUpdated': [
server_1 | {
server_1 | message: 'is an invalid additional property',
server_1 | keyword: 'additionalProperties',
server_1 | params: { additionalProperty: 'dateUpdated' }
server_1 | }
server_1 | ],
server_1 | 'metadata.copyrightYear': [
server_1 | {
server_1 | message: 'is an invalid additional property',
server_1 | keyword: 'additionalProperties',
server_1 | params: { additionalProperty: 'copyrightYear' }
server_1 | }
server_1 | ],
server_1 | 'metadata.copyrightHolder': [
server_1 | {
server_1 | message: 'is an invalid additional property',
server_1 | keyword: 'additionalProperties',
server_1 | params: { additionalProperty: 'copyrightHolder' }
server_1 | }
server_1 | ],
server_1 | 'metadata.licenseStatement': [
server_1 | {
server_1 | message: 'is an invalid additional property',
server_1 | keyword: 'additionalProperties',
server_1 | params: { additionalProperty: 'licenseStatement' }
server_1 | }
server_1 | ],
server_1 | 'metadata.otherLicenseType': [
server_1 | {
server_1 | message: 'is an invalid additional property',
server_1 | keyword: 'additionalProperties',
server_1 | params: { additionalProperty: 'otherLicenseType' }
server_1 | }
server_1 | ],
server_1 | 'metadata.openAccessLicense': [
server_1 | {
server_1 | message: 'is an invalid additional property',
server_1 | keyword: 'additionalProperties',
server_1 | params: { additionalProperty: 'openAccessLicense' }
server_1 | }
server_1 | ],
server_1 | 'metadata.copyrightStatement': [
server_1 | {
server_1 | message: 'is an invalid additional property',
server_1 | keyword: 'additionalProperties',
server_1 | params: { additionalProperty: 'copyrightStatement' }
server_1 | }
server_1 | ]
server_1 | },
server_1 | statusCode: 400,
server_1 | modelClass: [class BookComponent extends BaseModel]
server_1 | }
server_1 | 2022-07-27T12:51:45.280Z - info: ::ffff:172.18.0.1 - - [27/Jul/2022:12:51:45 +0000] "POST /graphql HTTP/1.1" 200 528 "http://localhost:3020/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0"
server_1 |
server_1 | 2022-07-27T12:51:45.287Z - error: uncaughtException: Running command: Chapter Update Command Failed
server_1 | {
server_1 | date: 'Wed Jul 27 2022 12:51:45 GMT+0000 (Coordinated Universal Time)',
server_1 | process: {
server_1 | pid: 61,
server_1 | uid: 1000,
server_1 | gid: 1000,
server_1 | cwd: '/home/node/app',
server_1 | execPath: '/usr/local/bin/node',
server_1 | version: 'v16.14.2',
server_1 | argv: [ '/usr/local/bin/node', '/home/node/app/startServer.js' ],
server_1 | memoryUsage: {
server_1 | rss: 119812096,
server_1 | heapTotal: 64942080,
server_1 | heapUsed: 57077032,
server_1 | external: 1422407,
server_1 | arrayBuffers: 509083
server_1 | }
server_1 | },
server_1 | os: { loadavg: [ 0.97, 1.23, 1.09 ], uptime: 2595.24 },
server_1 | trace: [
server_1 | {
server_1 | column: 15,
server_1 | file: '/home/node/app/server/services/CommandService/baseCommand.js',
server_1 | function: 'Chapter.executeCommand',
server_1 | line: 30,
server_1 | method: 'executeCommand',
server_1 | native: false
server_1 | },
server_1 | {
server_1 | column: 5,
server_1 | file: 'node:internal/process/task_queues',
server_1 | function: 'processTicksAndRejections',
server_1 | line: 96,
server_1 | method: null,
server_1 | native: false
server_1 | },
server_1 | {
server_1 | column: 18,
server_1 | file: 'async /home/node/app/server/services/events/listeners/parseUploadedFile.js',
server_1 | function: null,
server_1 | line: 169,
server_1 | method: null,
server_1 | native: false
server_1 | }
server_1 | ],
server_1 | stack: [
server_1 | 'Error: Running command: Chapter Update Command Failed',
server_1 | ' at Chapter.executeCommand (/home/node/app/server/services/CommandService/baseCommand.js:30:15)',
server_1 | ' at processTicksAndRejections (node:internal/process/task_queues:96:5)',
server_1 | ' at async /home/node/app/server/services/events/listeners/parseUploadedFile.js:169:18'
server_1 | ]
server_1 | }
server_1 | [nodemon] app crashed - waiting for file changes before starting...
Steps to reproduce
[Provide a link to a live example or screenshots, and the steps to reproduce this bug]
- Create a new XML or PDF wholebook
- Upload in the converted section a file that belongs to a chapter-processed book, for example eh0072_3dprinting.bxml
- Check the error in the terminal and that the app has crashed
Environment
[Provide browser name and version and if you're working from a PC or Mac]
Possible solution
[Not required. Suggest a fix for the bug]
NCBI's priority feedback
[Select "Y" or "N" and provide an explanation]
- This bug is blocking NCBI's work on migration planning for deployment 1 (Y/N)
- This can be prioritised after deployment 1 (Y/N)
QA Steps
- Create a new XML or PDF wholebook
- Upload in the converted section a file that belongs to a chapter-processed book, for example eh0072_3dprinting.bxml
- The app should not crash
Example on ncbi site here