Replace endless_cycle with more specific faults

This commit is contained in:
Zaid Abdulla committed 2017-10-31 12:58:00 -07:00
1 parent 947b4d7118
commit a436f17888
2 files changed
+31 -14

No files matched your search

+4 -3
View File
@@ -343,12 +343,13 @@ applyPresets = (sessionContext) ->
sessionContext.faultsTouched ?= {}
sessionContext.faultsTouched[channel] = true
sessionContext.presetCycles = (sessionContext.presetCycles or 0) + 1
# Don't increment when processing individual channels (e.g. after fault)
sessionContext.presetCycles = (sessionContext.presetCycles or 0) + 1 if not whiteList?
if sessionContext.presetCycles > MAX_CYCLES
fault = {
code: 'endless_cycle'
message: 'The provision seems to be repeating indefinitely'
code: 'preset_loop'
message: 'The presets are stuck in an endless configuration loop'
timestamp: sessionContext.timestamp
}
recordFault(sessionContext, fault)
+27 -11
View File
@@ -113,7 +113,7 @@ loadParameters = (sessionContext, callback) ->
generateRpcId = (sessionContext) ->
return sessionContext.timestamp.toString(16) +
sessionContext.cycle.toString(16).slice(-1) +
"0#{sessionContext.cycle.toString(16)}".slice(-2) +
"0#{sessionContext.rpcCount.toString(16)}".slice(-2)
@@ -641,17 +641,33 @@ rpcRequest = (sessionContext, _declarations, callback) ->
return rpcRequest(sessionContext, null, callback)
)
if sessionContext.rpcCount >= 255 or
sessionContext.revisions.length >= 8 or
sessionContext.cycle >= 16 or
sessionContext.iteration >= MAX_ITERATIONS * (sessionContext.cycle + 1)
fault = {
code: 'endless_cycle'
message: 'The provision seems to be repeating indefinitely'
if sessionContext.rpcCount >= 255
return callback(null, {
code: 'too_many_rpcs'
message: 'Too many RPC requests'
timestamp: sessionContext.timestamp
}
return callback(null, fault)
})
if sessionContext.revisions.length >= 8
return callback(null, {
code: 'deeply_nested_vparams'
message: 'Virtual parameters are referencing other virtual parameters in a deeply nested manner'
timestamp: sessionContext.timestamp
})
if sessionContext.cycle >= 255
return callback(null, {
code: 'too_many_cycles'
message: 'Too many provision cycles'
timestamp: sessionContext.timestamp
})
if sessionContext.iteration >= MAX_ITERATIONS * (sessionContext.cycle + 1)
return callback(null, {
code: 'too_many_commits'
message: 'Too many commit iterations'
timestamp: sessionContext.timestamp
})
if (sessionContext.syncState?.virtualParameterDeclarations?.length or 0) < sessionContext.declarations.length
inception = sessionContext.syncState?.virtualParameterDeclarations?.length or 0