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