Fix sync state invalidation bug
This commit is contained in:
1 parent
defa0c2d41
commit
9787dd2be7
1 file changed
+8
-16
+8
-16
@@ -569,6 +569,10 @@ rpcRequest = (sessionContext, _declarations, callback) ->
|
|||||||
if sessionContext.rpcRequest?
|
if sessionContext.rpcRequest?
|
||||||
return callback(null, null, generateRpcId(sessionContext), 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
|
if sessionContext.virtualParameters.length == 0 and
|
||||||
sessionContext.declarations.length == 0 and
|
sessionContext.declarations.length == 0 and
|
||||||
not _declarations?.length and
|
not _declarations?.length and
|
||||||
@@ -680,11 +684,6 @@ rpcRequest = (sessionContext, _declarations, callback) ->
|
|||||||
if not provisions
|
if not provisions
|
||||||
sessionContext.rpcRequest = generateGetRpcRequest(sessionContext)
|
sessionContext.rpcRequest = generateGetRpcRequest(sessionContext)
|
||||||
if not sessionContext.rpcRequest
|
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
|
toClear = null
|
||||||
timestamp = sessionContext.timestamp + sessionContext.iteration + 1
|
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)
|
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 clear(sessionContext, toClear, (err) ->
|
||||||
return callback(err) if err
|
return callback(err) if err
|
||||||
if sessionContext.deviceData.changes.has('prerequisite')
|
rpcRequest(sessionContext, null, callback)
|
||||||
delete sessionContext.syncState
|
|
||||||
device.clearTrackers(sessionContext.deviceData, 'prerequisite')
|
|
||||||
return 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])
|
provisions = generateSetVirtualParameterProvisions(sessionContext, sessionContext.syncState.virtualParameterDeclarations[inception])
|
||||||
if not provisions
|
if not provisions
|
||||||
sessionContext.rpcRequest = generateSetRpcRequest(sessionContext)
|
sessionContext.rpcRequest = generateSetRpcRequest(sessionContext)
|
||||||
@@ -816,7 +807,8 @@ rpcRequest = (sessionContext, _declarations, callback) ->
|
|||||||
toClear = device.set(sessionContext.deviceData, ['VirtualParameters', vparams[i][0]], timestamp, vpu, toClear)
|
toClear = device.set(sessionContext.deviceData, ['VirtualParameters', vparams[i][0]], timestamp, vpu, toClear)
|
||||||
|
|
||||||
clear(sessionContext, toClear, (err) ->
|
clear(sessionContext, toClear, (err) ->
|
||||||
return rpcRequest(sessionContext, null, callback)
|
return callback(err) if err
|
||||||
|
rpcRequest(sessionContext, null, callback)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user