Replace endless_cycle with more specific faults
This commit is contained in:
1 parent
947b4d7118
commit
a436f17888
2 files changed
+31
-14
No files matched your search
+4
-3
@@ -343,12 +343,13 @@ applyPresets = (sessionContext) ->
|
|||||||
sessionContext.faultsTouched ?= {}
|
sessionContext.faultsTouched ?= {}
|
||||||
sessionContext.faultsTouched[channel] = true
|
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
|
if sessionContext.presetCycles > MAX_CYCLES
|
||||||
fault = {
|
fault = {
|
||||||
code: 'endless_cycle'
|
code: 'preset_loop'
|
||||||
message: 'The provision seems to be repeating indefinitely'
|
message: 'The presets are stuck in an endless configuration loop'
|
||||||
timestamp: sessionContext.timestamp
|
timestamp: sessionContext.timestamp
|
||||||
}
|
}
|
||||||
recordFault(sessionContext, fault)
|
recordFault(sessionContext, fault)
|
||||||
|
|||||||
+27
-11
@@ -113,7 +113,7 @@ loadParameters = (sessionContext, callback) ->
|
|||||||
|
|
||||||
generateRpcId = (sessionContext) ->
|
generateRpcId = (sessionContext) ->
|
||||||
return sessionContext.timestamp.toString(16) +
|
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)
|
"0#{sessionContext.rpcCount.toString(16)}".slice(-2)
|
||||||
|
|
||||||
|
|
||||||
@@ -641,17 +641,33 @@ rpcRequest = (sessionContext, _declarations, callback) ->
|
|||||||
return rpcRequest(sessionContext, null, callback)
|
return rpcRequest(sessionContext, null, callback)
|
||||||
)
|
)
|
||||||
|
|
||||||
if sessionContext.rpcCount >= 255 or
|
if sessionContext.rpcCount >= 255
|
||||||
sessionContext.revisions.length >= 8 or
|
return callback(null, {
|
||||||
sessionContext.cycle >= 16 or
|
code: 'too_many_rpcs'
|
||||||
sessionContext.iteration >= MAX_ITERATIONS * (sessionContext.cycle + 1)
|
message: 'Too many RPC requests'
|
||||||
|
|
||||||
fault = {
|
|
||||||
code: 'endless_cycle'
|
|
||||||
message: 'The provision seems to be repeating indefinitely'
|
|
||||||
timestamp: sessionContext.timestamp
|
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
|
if (sessionContext.syncState?.virtualParameterDeclarations?.length or 0) < sessionContext.declarations.length
|
||||||
inception = sessionContext.syncState?.virtualParameterDeclarations?.length or 0
|
inception = sessionContext.syncState?.virtualParameterDeclarations?.length or 0
|
||||||
|
|||||||
Reference in new issue
Block a user