From fa6cc264168f6ce9b8d3cf92ce1c604499a9f85d Mon Sep 17 00:00:00 2001 From: Matiss Janis Aboltins <matiss@mja.lv> Date: Wed, 14 Aug 2024 19:42:04 +0100 Subject: [PATCH] :recycle: cleanup iterableTopologicalSort feature flag (#3262) --- .../src/components/settings/Experimental.tsx | 3 -- .../src/hooks/useFeatureFlag.ts | 1 - .../spreadsheet/graph-data-structure.ts | 30 +------------------ packages/loot-core/src/types/prefs.d.ts | 3 +- upcoming-release-notes/3262.md | 6 ++++ 5 files changed, 8 insertions(+), 35 deletions(-) create mode 100644 upcoming-release-notes/3262.md diff --git a/packages/desktop-client/src/components/settings/Experimental.tsx b/packages/desktop-client/src/components/settings/Experimental.tsx index fec5f04ca..ab49f18c4 100644 --- a/packages/desktop-client/src/components/settings/Experimental.tsx +++ b/packages/desktop-client/src/components/settings/Experimental.tsx @@ -89,9 +89,6 @@ export function ExperimentalFeatures() { Goal templates </FeatureToggle> <FeatureToggle flag="simpleFinSync">SimpleFIN sync</FeatureToggle> - <FeatureToggle flag="iterableTopologicalSort"> - Iterable topological sort budget - </FeatureToggle> </View> ) : ( <Link diff --git a/packages/desktop-client/src/hooks/useFeatureFlag.ts b/packages/desktop-client/src/hooks/useFeatureFlag.ts index 689b3772e..f67564045 100644 --- a/packages/desktop-client/src/hooks/useFeatureFlag.ts +++ b/packages/desktop-client/src/hooks/useFeatureFlag.ts @@ -8,7 +8,6 @@ const DEFAULT_FEATURE_FLAG_STATE: Record<FeatureFlag, boolean> = { goalTemplatesEnabled: false, spendingReport: false, simpleFinSync: false, - iterableTopologicalSort: true, }; export function useFeatureFlag(name: FeatureFlag): boolean { diff --git a/packages/loot-core/src/server/spreadsheet/graph-data-structure.ts b/packages/loot-core/src/server/spreadsheet/graph-data-structure.ts index be2669d1f..f5bc30a92 100644 --- a/packages/loot-core/src/server/spreadsheet/graph-data-structure.ts +++ b/packages/loot-core/src/server/spreadsheet/graph-data-structure.ts @@ -1,5 +1,3 @@ -import { getPrefs } from '../prefs'; - // @ts-strict-ignore export function Graph() { const graph = { @@ -81,42 +79,16 @@ export function Graph() { function topologicalSort(sourceNodes) { const visited = new Set(); const sorted = []; - const prefs = getPrefs(); - const iterableTopologicalSort = - prefs != null ? prefs['flags.iterableTopologicalSort'] : false; sourceNodes.forEach(name => { if (!visited.has(name)) { - if (iterableTopologicalSort) { - topologicalSortIterable(name, visited, sorted); - } else { - topologicalSortUntil(name, visited, sorted, 0); - } + topologicalSortIterable(name, visited, sorted); } }); return sorted; } - function topologicalSortUntil(name, visited, sorted, level) { - visited.add(name); - if (level > 2500) { - console.error('Limit of recursions reached while sorting budget: 2500'); - return; - } - - const iter = adjacent(name).values(); - let cur = iter.next(); - while (!cur.done) { - if (!visited.has(cur.value)) { - topologicalSortUntil(cur.value, visited, sorted, level + 1); - } - cur = iter.next(); - } - - sorted.unshift(name); - } - function topologicalSortIterable(name, visited, sorted) { const stackTrace: StackItem[] = []; diff --git a/packages/loot-core/src/types/prefs.d.ts b/packages/loot-core/src/types/prefs.d.ts index ee5aa40ec..3d3664a87 100644 --- a/packages/loot-core/src/types/prefs.d.ts +++ b/packages/loot-core/src/types/prefs.d.ts @@ -6,8 +6,7 @@ export type FeatureFlag = | 'reportBudget' | 'goalTemplatesEnabled' | 'spendingReport' - | 'simpleFinSync' - | 'iterableTopologicalSort'; + | 'simpleFinSync'; /** * Cross-device preferences. These sync across devices when they are changed. diff --git a/upcoming-release-notes/3262.md b/upcoming-release-notes/3262.md new file mode 100644 index 000000000..51cfaaee1 --- /dev/null +++ b/upcoming-release-notes/3262.md @@ -0,0 +1,6 @@ +--- +category: Maintenance +authors: [Matissjanis] +--- + +Cleanup `iterableTopologicalSort` feature flag. -- GitLab