Fix bug where values of vparams get mixed up

This commit is contained in:
Zaid Abdulla committed 2017-04-10 15:26:44 -07:00
1 parent 09b3d7cb1c
commit dc5c12c8ce
1 file changed
+20 -22
+20 -22
View File
@@ -346,14 +346,14 @@ runProvisions = (sessionContext, provisions, startRevision, endRevision, callbac
allClear = [] allClear = []
counter = 3 counter = 3
allProvisions = provisionsCache.get(sessionContext) allProvisions = provisionsCache.get(sessionContext)
for provision in provisions for provision, j in provisions
if not allProvisions[provision[0]]? if not allProvisions[provision[0]]?
if defaultProvisions[provision[0]] if defaultProvisions[provision[0]]
done = defaultProvisions[provision[0]](sessionContext, provision, allDeclarations, startRevision, endRevision) and done done = defaultProvisions[provision[0]](sessionContext, provision, allDeclarations[j] = [], startRevision, endRevision) and done
continue continue
counter += 2 counter += 2
sandbox.run(allProvisions[provision[0]].script, do (j) -> sandbox.run(allProvisions[provision[0]].script,
{args: provision.slice(1)}, sessionContext, startRevision, endRevision, {args: provision.slice(1)}, sessionContext, startRevision, endRevision,
(err, _fault, _clear, _declarations, _done) -> (err, _fault, _clear, _declarations, _done) ->
if err or _fault if err or _fault
@@ -361,18 +361,18 @@ runProvisions = (sessionContext, provisions, startRevision, endRevision, callbac
return counter = 0 return counter = 0
done &&= _done done &&= _done
allDeclarations[j] = _declarations or []
if _declarations.length allClear[j] = _clear or []
allDeclarations = allDeclarations.concat(_declarations)
if _clear.length
allClear = allClear.concat(_clear)
if (counter -= 2) == 1 if (counter -= 2) == 1
allDeclarations = Array.prototype.concat.apply([], allDeclarations)
allClear = Array.prototype.concat.apply([], allClear)
return callback(null, null, done, allDeclarations, allClear) return callback(null, null, done, allDeclarations, allClear)
) )
if (counter -= 2) == 1 if (counter -= 2) == 1
allDeclarations = Array.prototype.concat.apply([], allDeclarations)
allClear = Array.prototype.concat.apply([], allClear)
return callback(null, null, done, allDeclarations, allClear) return callback(null, null, done, allDeclarations, allClear)
@@ -383,10 +383,10 @@ runVirtualParameters = (sessionContext, provisions, startRevision, endRevision,
allClear = [] allClear = []
counter = 3 counter = 3
allVirtualParameters = virtualParametersCache.get(sessionContext) allVirtualParameters = virtualParametersCache.get(sessionContext)
for provision in provisions for provision, j in provisions
counter += 2 counter += 2
globals = {TIMESTAMPS: provision[1], VALUES: provision[2]} globals = {TIMESTAMPS: provision[1], VALUES: provision[2]}
sandbox.run(allVirtualParameters[provision[0]].script, globals, do (j) -> sandbox.run(allVirtualParameters[provision[0]].script, globals,
sessionContext, startRevision, endRevision, sessionContext, startRevision, endRevision,
(err, _fault, _clear, _declarations, _done, _returnValue) -> (err, _fault, _clear, _declarations, _done, _returnValue) ->
if err or _fault if err or _fault
@@ -394,34 +394,32 @@ runVirtualParameters = (sessionContext, provisions, startRevision, endRevision,
return counter = 0 return counter = 0
done &&= _done done &&= _done
allDeclarations[j] = _declarations or []
if _declarations.length allClear[j] = _clear or []
allDeclarations = allDeclarations.concat(_declarations) virtualParameterUpdates[j] = _returnValue if _done
if _clear.length
allClear = allClear.concat(_clear)
if _done
virtualParameterUpdates.push(_returnValue)
if (counter -= 2) == 1 if (counter -= 2) == 1
toClear = null toClear = null
if virtualParameterUpdates.length == provisions.length if done
for vpu, i in virtualParameterUpdates for vpu, i in virtualParameterUpdates
toClear = commitVirtualParameter(sessionContext, provisions[i], vpu, toClear) toClear = commitVirtualParameter(sessionContext, provisions[i], vpu, toClear)
clear(sessionContext, toClear, (err) -> clear(sessionContext, toClear, (err) ->
allDeclarations = Array.prototype.concat.apply([], allDeclarations)
allClear = Array.prototype.concat.apply([], allClear)
return callback(err, null, done, allDeclarations, allClear) return callback(err, null, done, allDeclarations, allClear)
) )
) )
if (counter -= 2) == 1 if (counter -= 2) == 1
toClear = null toClear = null
if virtualParameterUpdates.length == provisions.length if done
for vpu, i in virtualParameterUpdates for vpu, i in virtualParameterUpdates
toClear = commitVirtualParameter(sessionContext, provisions[i], vpu, toClear) toClear = commitVirtualParameter(sessionContext, provisions[i], vpu, toClear)
clear(sessionContext, toClear, (err) -> clear(sessionContext, toClear, (err) ->
allDeclarations = Array.prototype.concat.apply([], allDeclarations)
allClear = Array.prototype.concat.apply([], allClear)
return callback(err, null, done, allDeclarations, allClear) return callback(err, null, done, allDeclarations, allClear)
) )