From b16edd321590725111c40f9c8777033a66468986 Mon Sep 17 00:00:00 2001 From: Cam Saul <1455846+camsaul@users.noreply.github.com> Date: Thu, 13 Jul 2023 23:33:05 -0700 Subject: [PATCH] Potentially fix StackOverflow in flaky tests (#32375) --- src/metabase/models/permissions_group.clj | 8 ++++---- src/metabase/models/user.clj | 23 +++++++++++++---------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/metabase/models/permissions_group.clj b/src/metabase/models/permissions_group.clj index a66ff9da783..5984eb23100 100644 --- a/src/metabase/models/permissions_group.clj +++ b/src/metabase/models/permissions_group.clj @@ -106,10 +106,10 @@ (t2/define-before-update :model/PermissionsGroup [group] (let [changes (t2/changes group)] - (u/prog1 group - (check-not-magic-group group) - (when-let [group-name (:name changes)] - (check-name-not-already-taken group-name))))) + (u/prog1 group + (check-not-magic-group group) + (when-let [group-name (:name changes)] + (check-name-not-already-taken group-name))))) ;;; ---------------------------------------------------- Util Fns ---------------------------------------------------- diff --git a/src/metabase/models/user.clj b/src/metabase/models/user.clj index b29865c20c4..ecb0de60ad7 100644 --- a/src/metabase/models/user.clj +++ b/src/metabase/models/user.clj @@ -91,17 +91,20 @@ (t2/define-after-insert :model/User [{user-id :id, superuser? :is_superuser, :as user}] (u/prog1 user - ;; add the newly created user to the magic perms groups - (binding [perms-group-membership/*allow-changing-all-users-group-members* true] - (log/info (trs "Adding User {0} to All Users permissions group..." user-id)) - (t2/insert! PermissionsGroupMembership - :user_id user-id - :group_id (:id (perms-group/all-users)))) + ;; add the newly created user to the magic perms groups. + (log/info (trs "Adding User {0} to All Users permissions group..." user-id)) (when superuser? - (log/info (trs "Adding User {0} to Admin permissions group..." user-id)) - (t2/insert! PermissionsGroupMembership - :user_id user-id - :group_id (:id (perms-group/admin)))))) + (log/info (trs "Adding User {0} to All Users permissions group..." user-id))) + (let [groups (filter some? [(perms-group/all-users) + (when superuser? (perms-group/admin))])] + (binding [perms-group-membership/*allow-changing-all-users-group-members* true] + ;; do a 'simple' insert against the Table name so we don't trigger the after-insert behavior + ;; for [[metabase.models.permissions-group-membership]]... we don't want it recursively trying to update + ;; the user + (t2/insert! (t2/table-name :model/PermissionsGroupMembership) + (for [group groups] + {:user_id user-id + :group_id (u/the-id group)})))))) (t2/define-before-update :model/User [{:keys [id] :as user}] -- GitLab