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?
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
@@ -715,6 +711,13 @@ rpcRequest = (sessionContext, _declarations, callback) ->
if not provisions
sessionContext.rpcRequest = generateGetRpcRequest(sessionContext)
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
timestamp = sessionContext.timestamp + sessionContext.iteration + 1