From 070272ae24cd441076e64a0aa20b37adce1e2a84 Mon Sep 17 00:00:00 2001 From: Braden Shepherdson <braden@metabase.com> Date: Mon, 5 Dec 2022 12:21:06 -0500 Subject: [PATCH] Serdes v2: Fix flaky e2e test (#26934) It could generate Dimensions which depend on their own parent Fields, which causes the Fields to have circular deps and fail to load. This prevents Fields from allowing dependencies on themselves. --- src/metabase/models/field.clj | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/metabase/models/field.clj b/src/metabase/models/field.clj index 7e3f9270a98..bd8927f253d 100644 --- a/src/metabase/models/field.clj +++ b/src/metabase/models/field.clj @@ -410,14 +410,16 @@ (defmethod serdes.base/serdes-dependencies "Field" [field] ;; Fields depend on their parent Table, plus any foreign Fields referenced by their Dimensions. ;; Take the path, but drop the Field section to get the parent Table's path instead. - (let [table (pop (serdes.base/serdes-path field)) + (let [this (serdes.base/serdes-path field) + table (pop this) fks (some->> field :fk_target_field_id serdes.util/field->path) human (->> (:dimensions field) (keep :human_readable_field_id) (map serdes.util/field->path) set)] (cond-> (set/union #{table} human) - fks (set/union #{fks})))) + fks (set/union #{fks}) + true (disj this)))) (defn- extract-dimensions [dimensions] (->> (for [dim dimensions] -- GitLab