[DocumentUpdaterManager] use a new NullBytesInOpError

This commit is contained in:
Jakob Ackermann 2020-08-20 11:30:22 +01:00
parent af50f9b02c
commit 6828becb46
2 changed files with 14 additions and 8 deletions

View file

@ -6,7 +6,7 @@ const _ = require('underscore')
const logger = require('logger-sharelatex') const logger = require('logger-sharelatex')
const settings = require('settings-sharelatex') const settings = require('settings-sharelatex')
const metrics = require('metrics-sharelatex') const metrics = require('metrics-sharelatex')
const { UpdateTooLargeError } = require('./Errors') const { NullBytesInOpError, UpdateTooLargeError } = require('./Errors')
const rclient = require('redis-sharelatex').createClient( const rclient = require('redis-sharelatex').createClient(
settings.redis.documentupdater settings.redis.documentupdater
@ -116,12 +116,7 @@ const DocumentUpdaterManager = {
const jsonChange = JSON.stringify(change) const jsonChange = JSON.stringify(change)
if (jsonChange.indexOf('\u0000') !== -1) { if (jsonChange.indexOf('\u0000') !== -1) {
// memory corruption check // memory corruption check
const error = new Error('null bytes found in op') return callback(new NullBytesInOpError(jsonChange))
logger.error(
{ err: error, project_id, doc_id, jsonChange },
error.message
)
return callback(error)
} }
const updateSize = jsonChange.length const updateSize = jsonChange.length

View file

@ -15,10 +15,21 @@ class DataTooLargeToParseError extends OError {
} }
} }
class NullBytesInOpError extends OError {
constructor(jsonChange) {
super('null bytes found in op', { jsonChange })
}
}
class UpdateTooLargeError extends OError { class UpdateTooLargeError extends OError {
constructor(updateSize) { constructor(updateSize) {
super('update is too large', { updateSize }) super('update is too large', { updateSize })
} }
} }
module.exports = { CodedError, DataTooLargeToParseError, UpdateTooLargeError } module.exports = {
CodedError,
DataTooLargeToParseError,
NullBytesInOpError,
UpdateTooLargeError
}