Only invalidate syncState after read stage

This is in order to reduce the number of commit iterations especially
during the initial discovery of the data model.
This commit is contained in:
Zaid Abdulla committed 2017-11-04 22:09:52 -07:00
1 parent 14bf276112
commit ed873cdd4a
1 file changed
+7 -4
+7 -4
View File
@@ -573,10 +573,6 @@ 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
@@ -715,6 +711,13 @@ 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
# Only check after read stage is complete to minimize reprocessing of
# declarations especially during initial discovery of data model
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