Fix sync state invalidation bug

This commit is contained in:
Zaid Abdulla committed 2017-06-16 12:10:24 -07:00
1 parent defa0c2d41
commit 9787dd2be7
1 file changed
+8 -16
+8 -16
View File
@@ -569,6 +569,10 @@ rpcRequest = (sessionContext, _declarations, callback) ->
if sessionContext.rpcRequest?
return callback(null, null, generateRpcId(sessionContext), sessionContext.rpcRequest)
if sessionContext.deviceData.changes.has('prerequisite')
delete sessionContext.syncState
device.clearTrackers(sessionContext.deviceData, 'prerequisite')
if sessionContext.virtualParameters.length == 0 and
sessionContext.declarations.length == 0 and
not _declarations?.length and
@@ -680,11 +684,6 @@ rpcRequest = (sessionContext, _declarations, callback) ->
if not provisions
sessionContext.rpcRequest = generateGetRpcRequest(sessionContext)
if not sessionContext.rpcRequest
if sessionContext.deviceData.changes.has('prerequisite')
delete sessionContext.syncState
device.clearTrackers(sessionContext.deviceData, 'prerequisite')
return rpcRequest(sessionContext, null, callback)
toClear = null
timestamp = sessionContext.timestamp + sessionContext.iteration + 1
@@ -762,20 +761,12 @@ rpcRequest = (sessionContext, _declarations, callback) ->
toClear = device.set(sessionContext.deviceData, p, timestamp, {value: [timestamp, v]}, toClear)
)
if toClear
if toClear or sessionContext.deviceData.changes.has('prerequisite')
return clear(sessionContext, toClear, (err) ->
return callback(err) if err
if sessionContext.deviceData.changes.has('prerequisite')
delete sessionContext.syncState
device.clearTrackers(sessionContext.deviceData, 'prerequisite')
return rpcRequest(sessionContext, null, callback)
rpcRequest(sessionContext, null, callback)
)
if sessionContext.deviceData.changes.has('prerequisite')
delete sessionContext.syncState
device.clearTrackers(sessionContext.deviceData, 'prerequisite')
return rpcRequest(sessionContext, null, callback)
provisions = generateSetVirtualParameterProvisions(sessionContext, sessionContext.syncState.virtualParameterDeclarations[inception])
if not provisions
sessionContext.rpcRequest = generateSetRpcRequest(sessionContext)
@@ -816,7 +807,8 @@ rpcRequest = (sessionContext, _declarations, callback) ->
toClear = device.set(sessionContext.deviceData, ['VirtualParameters', vparams[i][0]], timestamp, vpu, toClear)
clear(sessionContext, toClear, (err) ->
return rpcRequest(sessionContext, null, callback)
return callback(err) if err
rpcRequest(sessionContext, null, callback)
)