From 2bfaff35a2716a06c685d788d900c9cf8a4052b8 Mon Sep 17 00:00:00 2001 From: hetunandu Date: Fri, 20 Aug 2021 17:19:23 +0530 Subject: [PATCH 1/2] Debugging --- app/client/src/reducers/evaluationReducers/treeReducer.ts | 2 +- app/client/src/sagas/EvaluationsSaga.ts | 7 +++++++ app/client/src/workers/evaluation.worker.ts | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/client/src/reducers/evaluationReducers/treeReducer.ts b/app/client/src/reducers/evaluationReducers/treeReducer.ts index 8a92a99719dc..88be9e94a68a 100644 --- a/app/client/src/reducers/evaluationReducers/treeReducer.ts +++ b/app/client/src/reducers/evaluationReducers/treeReducer.ts @@ -18,7 +18,7 @@ const evaluatedTreeReducer = createImmerReducer(initialState, { }>, ) => { const { dataTree, updates } = action.payload; - if (Object.keys(dataTree).length) { + if (updates.length === 0) { return dataTree; } for (const update of updates) { diff --git a/app/client/src/sagas/EvaluationsSaga.ts b/app/client/src/sagas/EvaluationsSaga.ts index 7cd96d80f5ce..f6eb1ec4dfe5 100644 --- a/app/client/src/sagas/EvaluationsSaga.ts +++ b/app/client/src/sagas/EvaluationsSaga.ts @@ -43,6 +43,7 @@ import { } from "./PostEvaluationSagas"; import { getAppMode } from "selectors/applicationSelectors"; import { APP_MODE } from "entities/App"; +import { diff } from "deep-diff"; let widgetTypeConfigMap: WidgetTypeConfigMap; @@ -86,6 +87,12 @@ function* evaluateTreeSaga( const updatedDataTree = yield select(getDataTree); + const postDiffs = diff(updatedDataTree, dataTree); + if (postDiffs && postDiffs.length) { + debugger; + yield put(setEvaluatedTree(dataTree, [])); + } + log.debug({ dataTree: updatedDataTree }); logs.forEach((evalLog: any) => log.debug(evalLog)); yield call(evalErrorHandler, errors, updatedDataTree, evaluationOrder); diff --git a/app/client/src/workers/evaluation.worker.ts b/app/client/src/workers/evaluation.worker.ts index 917786c373b5..187aa0c7c3a7 100644 --- a/app/client/src/workers/evaluation.worker.ts +++ b/app/client/src/workers/evaluation.worker.ts @@ -68,6 +68,7 @@ ctx.addEventListener( updates = JSON.parse(JSON.stringify(updateResponse.updates)); evaluationOrder = updateResponse.evaluationOrder; unEvalUpdates = updateResponse.unEvalUpdates; + dataTree = dataTreeEvaluator.evalTree; } dependencies = dataTreeEvaluator.inverseDependencyMap; errors = dataTreeEvaluator.errors; From 01f4da23e7a40e4b85df79fc7738c5e5b1745dea Mon Sep 17 00:00:00 2001 From: hetunandu Date: Tue, 24 Aug 2021 11:04:10 +0530 Subject: [PATCH 2/2] Revert of perf fixes --- app/client/src/sagas/EvaluationsSaga.ts | 11 ++++------- app/client/src/workers/DataTreeEvaluator.ts | 6 ------ app/client/src/workers/evaluation.worker.ts | 6 +----- 3 files changed, 5 insertions(+), 18 deletions(-) diff --git a/app/client/src/sagas/EvaluationsSaga.ts b/app/client/src/sagas/EvaluationsSaga.ts index f6eb1ec4dfe5..5024eb0a0d0e 100644 --- a/app/client/src/sagas/EvaluationsSaga.ts +++ b/app/client/src/sagas/EvaluationsSaga.ts @@ -72,7 +72,6 @@ function* evaluateTreeSaga( evaluationOrder, logs, unEvalUpdates, - updates, } = workerResponse; PerformanceTracker.stopAsyncTracking( PerformanceTransactionName.DATA_TREE_EVALUATION, @@ -80,6 +79,10 @@ function* evaluateTreeSaga( PerformanceTracker.startAsyncTracking( PerformanceTransactionName.SET_EVALUATED_TREE, ); + const oldDataTree = yield select(getDataTree); + + const updates = diff(oldDataTree, dataTree) || []; + yield put(setEvaluatedTree(dataTree, updates)); PerformanceTracker.stopAsyncTracking( PerformanceTransactionName.SET_EVALUATED_TREE, @@ -87,12 +90,6 @@ function* evaluateTreeSaga( const updatedDataTree = yield select(getDataTree); - const postDiffs = diff(updatedDataTree, dataTree); - if (postDiffs && postDiffs.length) { - debugger; - yield put(setEvaluatedTree(dataTree, [])); - } - log.debug({ dataTree: updatedDataTree }); logs.forEach((evalLog: any) => log.debug(evalLog)); yield call(evalErrorHandler, errors, updatedDataTree, evaluationOrder); diff --git a/app/client/src/workers/DataTreeEvaluator.ts b/app/client/src/workers/DataTreeEvaluator.ts index 9bac012d9e7c..2231afed5b5a 100644 --- a/app/client/src/workers/DataTreeEvaluator.ts +++ b/app/client/src/workers/DataTreeEvaluator.ts @@ -123,11 +123,9 @@ export default class DataTreeEvaluator { updateDataTree( unEvalTree: DataTree, ): { - updates: Diff[]; evaluationOrder: string[]; unEvalUpdates: DataTreeDiff[]; } { - const oldEvalTree = _.cloneDeep(this.evalTree); const totalStart = performance.now(); // Calculate diff const diffCheckTimeStart = performance.now(); @@ -136,7 +134,6 @@ export default class DataTreeEvaluator { // We want to check if no diffs are present and bail out early if (differences.length === 0) { return { - updates: [], evaluationOrder: [], unEvalUpdates: [], }; @@ -197,8 +194,6 @@ export default class DataTreeEvaluator { const evalTreeDiffsStart = performance.now(); - const evaluationChanges = diff(oldEvalTree, newEvalTree); - const evalTreeDiffsStop = performance.now(); const totalEnd = performance.now(); @@ -220,7 +215,6 @@ export default class DataTreeEvaluator { }; this.logs.push({ timeTakenForSubTreeEval }); return { - updates: evaluationChanges || [], evaluationOrder, unEvalUpdates: translatedDiffs, }; diff --git a/app/client/src/workers/evaluation.worker.ts b/app/client/src/workers/evaluation.worker.ts index 187aa0c7c3a7..eb747acfc218 100644 --- a/app/client/src/workers/evaluation.worker.ts +++ b/app/client/src/workers/evaluation.worker.ts @@ -18,7 +18,6 @@ import { validateWidgetProperty, } from "./evaluationUtils"; import DataTreeEvaluator from "workers/DataTreeEvaluator"; -import { Diff } from "deep-diff"; const ctx: Worker = self as any; @@ -51,7 +50,6 @@ ctx.addEventListener( let errors: EvalError[] = []; let logs: any[] = []; let dependencies: DependencyMap = {}; - let updates: Diff[] = []; let evaluationOrder: string[] = []; let unEvalUpdates: DataTreeDiff[] = []; try { @@ -65,10 +63,9 @@ ctx.addEventListener( } else { dataTree = {}; const updateResponse = dataTreeEvaluator.updateDataTree(unevalTree); - updates = JSON.parse(JSON.stringify(updateResponse.updates)); evaluationOrder = updateResponse.evaluationOrder; unEvalUpdates = updateResponse.unEvalUpdates; - dataTree = dataTreeEvaluator.evalTree; + dataTree = JSON.parse(JSON.stringify(dataTreeEvaluator.evalTree)); } dependencies = dataTreeEvaluator.inverseDependencyMap; errors = dataTreeEvaluator.errors; @@ -96,7 +93,6 @@ ctx.addEventListener( errors, evaluationOrder, logs, - updates, unEvalUpdates, }; }