Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Serialization breaks when there's an x-ray of a model of internal analytics #41946

Open
paoliniluis opened this issue Apr 29, 2024 · 0 comments
Labels
Administration/Metabase analytics Pro and Enterprise meta analytics, fka audit Priority:P2 Average run of the mill bug Type:Bug Product defects

Comments

@paoliniluis
Copy link
Contributor

Describe the bug

make an x-ray of the query log model and then export/import it, it will break

To Reproduce

  1. x-ray the "query log" model
  2. do an export and then an import
  3. see the error

Expected behavior

It should just work

Logs

2024-04-29 10:42:37,581 INFO v2.load :: Loading Database  > Table  > Field 
clojure.lang.ExceptionInfo: Failed to read file for Database  > Table  > Field  {:path [{:model "Database", :id nil} {:model "Table", :id nil} {:model "Field", :id nil}], :deps-chain #{[#ordered/map ([:id "KypmvlTTRLfnnx5aF6MGJ"] [:model "Card"])]}, :error :metabase-enterprise.serialization.v2.load/not-found, :toucan2/context-trace [["resolve connection" {:toucan2.connection/connectable metabase.db.connection.ApplicationDB}] ["resolve connection" {:toucan2.connection/connectable :default}] ["resolve connection" {:toucan2.connection/connectable nil}]]}
	at metabase_enterprise.serialization.v2.load$load_one_BANG_$fn__106406.invoke(load.clj:52)
	at metabase_enterprise.serialization.v2.load$load_one_BANG_.invokeStatic(load.clj:49)
	at metabase_enterprise.serialization.v2.load$load_one_BANG_.invoke(load.clj:33)
	at metabase_enterprise.serialization.v2.load$load_deps_BANG_$loader__106400.invoke(load.clj:23)
	at clojure.lang.PersistentVector.reduce(PersistentVector.java:343)
	at clojure.core$reduce.invokeStatic(core.clj:6886)
	at clojure.core$reduce.invoke(core.clj:6869)
	at metabase_enterprise.serialization.v2.load$load_deps_BANG_.invokeStatic(load.clj:31)
	at metabase_enterprise.serialization.v2.load$load_deps_BANG_.invoke(load.clj:14)
	at metabase_enterprise.serialization.v2.load$load_one_BANG_.invokeStatic(load.clj:60)
	at metabase_enterprise.serialization.v2.load$load_one_BANG_.invoke(load.clj:33)
	at clojure.core.protocols$fn__8249.invokeStatic(protocols.clj:168)
	at clojure.core.protocols$fn__8249.invoke(protocols.clj:124)
	at clojure.core.protocols$fn__8204$G__8199__8213.invoke(protocols.clj:19)
	at clojure.core.protocols$seq_reduce.invokeStatic(protocols.clj:31)
	at clojure.core.protocols$fn__8236.invokeStatic(protocols.clj:75)
	at clojure.core.protocols$fn__8236.invoke(protocols.clj:75)
	at clojure.core.protocols$fn__8178$G__8173__8191.invoke(protocols.clj:13)
	at clojure.core$reduce.invokeStatic(core.clj:6887)
	at clojure.core$reduce.invoke(core.clj:6869)
	at metabase_enterprise.serialization.v2.load$load_metabase_BANG_$with_connection_STAR___106413$with_transaction_STAR___106414.invoke(load.clj:89)
	at toucan2.connection$bind_current_connectable_fn$fn__21143.invoke(connection.clj:104)
	at metabase.db.connection$do_transaction$thunk__32323.invoke(connection.clj:150)
	at metabase.db.connection$do_transaction.invokeStatic(connection.clj:162)
	at metabase.db.connection$do_transaction.invoke(connection.clj:146)
	at metabase.db.connection$do_with_transaction_primary_method_java_sql_Connection.invokeStatic(connection.clj:199)
	at metabase.db.connection$do_with_transaction_primary_method_java_sql_Connection.invoke(connection.clj:172)
	at clojure.lang.AFn.applyToHelper(AFn.java:165)
	at clojure.lang.AFn.applyTo(AFn.java:144)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.invoke(RestFn.java:457)
	at clojure.core$partial$fn__5908.invoke(core.clj:2643)
	at clojure.lang.AFn.applyToHelper(AFn.java:160)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.invoke(RestFn.java:436)
	at methodical.impl.combo.threaded$fn__18233$fn__18234$fn__18237.invoke(threaded.clj:71)
	at methodical.impl.combo.threaded$reducer_fn$fn__18203$fn__18207.invoke(threaded.clj:23)
	at clojure.lang.ArrayChunk.reduce(ArrayChunk.java:58)
	at clojure.core.protocols$fn__8244.invokeStatic(protocols.clj:136)
	at clojure.core.protocols$fn__8244.invoke(protocols.clj:124)
	at clojure.core.protocols$fn__8204$G__8199__8213.invoke(protocols.clj:19)
	at clojure.core.protocols$seq_reduce.invokeStatic(protocols.clj:31)
	at clojure.core.protocols$fn__8236.invokeStatic(protocols.clj:75)
	at clojure.core.protocols$fn__8236.invoke(protocols.clj:75)
	at clojure.core.protocols$fn__8178$G__8173__8191.invoke(protocols.clj:13)
	at clojure.core$reduce.invokeStatic(core.clj:6887)
	at clojure.core$reduce.invoke(core.clj:6869)
	at methodical.impl.combo.threaded$reducer_fn$fn__18203.invoke(threaded.clj:21)
	at clojure.core$comp$fn__5876.invoke(core.clj:2588)
	at methodical.impl.combo.threaded$combine_with_threader$fn__18213.invoke(threaded.clj:44)
	at clojure.lang.AFn.applyToHelper(AFn.java:160)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.invoke(RestFn.java:436)
	at toucan2.connection$do_with_transaction_around_method_toucan2_connection_default.invokeStatic(connection.clj:249)
	at toucan2.connection$do_with_transaction_around_method_toucan2_connection_default.invoke(connection.clj:245)
	at clojure.lang.AFn.applyToHelper(AFn.java:165)
	at clojure.lang.AFn.applyTo(AFn.java:144)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.invoke(RestFn.java:457)
	at clojure.core$partial$fn__5908.invoke(core.clj:2643)
	at clojure.lang.AFn.applyToHelper(AFn.java:160)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.invoke(RestFn.java:436)
	at methodical.impl.standard$invoke_multifn.invokeStatic(standard.clj:58)
	at methodical.impl.standard$invoke_multifn.invoke(standard.clj:47)
	at methodical.impl.standard.StandardMultiFn.invoke(standard.clj:195)
	at metabase_enterprise.serialization.v2.load$load_metabase_BANG_$with_connection_STAR___106413.invoke(load.clj:79)
	at toucan2.connection$bind_current_connectable_fn$fn__21143.invoke(connection.clj:104)
	at toucan2.connection$bind_current_connectable_fn$fn__21143.invoke(connection.clj:104)
	at toucan2.connection$bind_current_connectable_fn$fn__21143.invoke(connection.clj:104)
	at toucan2.jdbc.connection$do_with_connection_primary_method_javax_sql_DataSource.invokeStatic(connection.clj:18)
	at toucan2.jdbc.connection$do_with_connection_primary_method_javax_sql_DataSource.invoke(connection.clj:15)
	at clojure.lang.AFn.applyToHelper(AFn.java:160)
	at clojure.lang.AFn.applyTo(AFn.java:144)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.invoke(RestFn.java:436)
	at clojure.core$partial$fn__5908.invoke(core.clj:2642)
	at clojure.lang.AFn.applyToHelper(AFn.java:156)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.invoke(RestFn.java:421)
	at methodical.impl.combo.threaded$fn__18233$fn__18234$fn__18235.invoke(threaded.clj:70)
	at methodical.impl.combo.threaded$reducer_fn$fn__18203$fn__18207.invoke(threaded.clj:23)
	at clojure.lang.ArrayChunk.reduce(ArrayChunk.java:58)
	at clojure.core.protocols$fn__8244.invokeStatic(protocols.clj:136)
	at clojure.core.protocols$fn__8244.invoke(protocols.clj:124)
	at clojure.core.protocols$fn__8204$G__8199__8213.invoke(protocols.clj:19)
	at clojure.core.protocols$seq_reduce.invokeStatic(protocols.clj:31)
	at clojure.core.protocols$fn__8236.invokeStatic(protocols.clj:75)
	at clojure.core.protocols$fn__8236.invoke(protocols.clj:75)
	at clojure.core.protocols$fn__8178$G__8173__8191.invoke(protocols.clj:13)
	at clojure.core$reduce.invokeStatic(core.clj:6887)
	at clojure.core$reduce.invoke(core.clj:6869)
	at methodical.impl.combo.threaded$reducer_fn$fn__18203.invoke(threaded.clj:21)
	at clojure.core$comp$fn__5876.invoke(core.clj:2587)
	at methodical.impl.combo.threaded$combine_with_threader$fn__18213.invoke(threaded.clj:43)
	at clojure.lang.AFn.applyToHelper(AFn.java:156)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.invoke(RestFn.java:421)
	at toucan2.connection$do_with_connection_around_method_toucan2_connection_default.invokeStatic(connection.clj:118)
	at toucan2.connection$do_with_connection_around_method_toucan2_connection_default.invoke(connection.clj:106)
	at clojure.lang.AFn.applyToHelper(AFn.java:160)
	at clojure.lang.AFn.applyTo(AFn.java:144)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.invoke(RestFn.java:436)
	at clojure.core$partial$fn__5908.invoke(core.clj:2642)
	at clojure.lang.AFn.applyToHelper(AFn.java:156)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.invoke(RestFn.java:421)
	at methodical.impl.standard$invoke_multifn.invokeStatic(standard.clj:55)
	at methodical.impl.standard$invoke_multifn.invoke(standard.clj:47)
	at methodical.impl.standard.StandardMultiFn.invoke(standard.clj:193)
	at metabase.db.connection$do_with_connection_primary_method_default.invokeStatic(connection.clj:142)
	at metabase.db.connection$do_with_connection_primary_method_default.invoke(connection.clj:140)
	at clojure.lang.AFn.applyToHelper(AFn.java:160)
	at clojure.lang.AFn.applyTo(AFn.java:144)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.invoke(RestFn.java:436)
	at clojure.core$partial$fn__5908.invoke(core.clj:2642)
	at clojure.lang.AFn.applyToHelper(AFn.java:156)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.invoke(RestFn.java:421)
	at methodical.impl.combo.threaded$fn__18233$fn__18234$fn__18235.invoke(threaded.clj:70)
	at methodical.impl.combo.threaded$reducer_fn$fn__18203$fn__18207.invoke(threaded.clj:23)
	at clojure.lang.ArrayChunk.reduce(ArrayChunk.java:58)
	at clojure.core.protocols$fn__8244.invokeStatic(protocols.clj:136)
	at clojure.core.protocols$fn__8244.invoke(protocols.clj:124)
	at clojure.core.protocols$fn__8204$G__8199__8213.invoke(protocols.clj:19)
	at clojure.core.protocols$seq_reduce.invokeStatic(protocols.clj:31)
	at clojure.core.protocols$fn__8236.invokeStatic(protocols.clj:75)
	at clojure.core.protocols$fn__8236.invoke(protocols.clj:75)
	at clojure.core.protocols$fn__8178$G__8173__8191.invoke(protocols.clj:13)
	at clojure.core$reduce.invokeStatic(core.clj:6887)
	at clojure.core$reduce.invoke(core.clj:6869)
	at methodical.impl.combo.threaded$reducer_fn$fn__18203.invoke(threaded.clj:21)
	at clojure.core$comp$fn__5876.invoke(core.clj:2587)
	at methodical.impl.combo.threaded$combine_with_threader$fn__18213.invoke(threaded.clj:43)
	at clojure.lang.AFn.applyToHelper(AFn.java:156)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.invoke(RestFn.java:421)
	at toucan2.connection$do_with_connection_around_method_toucan2_connection_default.invokeStatic(connection.clj:118)
	at toucan2.connection$do_with_connection_around_method_toucan2_connection_default.invoke(connection.clj:106)
	at clojure.lang.AFn.applyToHelper(AFn.java:160)
	at clojure.lang.AFn.applyTo(AFn.java:144)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.invoke(RestFn.java:436)
	at clojure.core$partial$fn__5908.invoke(core.clj:2642)
	at clojure.lang.AFn.applyToHelper(AFn.java:156)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.invoke(RestFn.java:421)
	at methodical.impl.standard$invoke_multifn.invokeStatic(standard.clj:55)
	at methodical.impl.standard$invoke_multifn.invoke(standard.clj:47)
	at methodical.impl.standard.StandardMultiFn.invoke(standard.clj:193)
	at toucan2.connection$do_with_connection_primary_method_.invokeStatic(connection.clj:204)
	at toucan2.connection$do_with_connection_primary_method_.invoke(connection.clj:194)
	at clojure.lang.AFn.applyToHelper(AFn.java:160)
	at clojure.lang.AFn.applyTo(AFn.java:144)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.invoke(RestFn.java:436)
	at clojure.core$partial$fn__5908.invoke(core.clj:2642)
	at clojure.lang.AFn.applyToHelper(AFn.java:156)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.invoke(RestFn.java:421)
	at methodical.impl.combo.threaded$fn__18233$fn__18234$fn__18235.invoke(threaded.clj:70)
	at methodical.impl.combo.threaded$reducer_fn$fn__18203$fn__18207.invoke(threaded.clj:23)
	at clojure.lang.ArrayChunk.reduce(ArrayChunk.java:58)
	at clojure.core.protocols$fn__8244.invokeStatic(protocols.clj:136)
	at clojure.core.protocols$fn__8244.invoke(protocols.clj:124)
	at clojure.core.protocols$fn__8204$G__8199__8213.invoke(protocols.clj:19)
	at clojure.core.protocols$seq_reduce.invokeStatic(protocols.clj:31)
	at clojure.core.protocols$fn__8236.invokeStatic(protocols.clj:75)
	at clojure.core.protocols$fn__8236.invoke(protocols.clj:75)
	at clojure.core.protocols$fn__8178$G__8173__8191.invoke(protocols.clj:13)
	at clojure.core$reduce.invokeStatic(core.clj:6887)
	at clojure.core$reduce.invoke(core.clj:6869)
	at methodical.impl.combo.threaded$reducer_fn$fn__18203.invoke(threaded.clj:21)
	at clojure.core$comp$fn__5876.invoke(core.clj:2587)
	at methodical.impl.combo.threaded$combine_with_threader$fn__18213.invoke(threaded.clj:43)
	at clojure.lang.AFn.applyToHelper(AFn.java:156)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.invoke(RestFn.java:421)
	at toucan2.connection$do_with_connection_around_method_toucan2_connection_default.invokeStatic(connection.clj:118)
	at toucan2.connection$do_with_connection_around_method_toucan2_connection_default.invoke(connection.clj:106)
	at clojure.lang.AFn.applyToHelper(AFn.java:160)
	at clojure.lang.AFn.applyTo(AFn.java:144)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.invoke(RestFn.java:436)
	at clojure.core$partial$fn__5908.invoke(core.clj:2642)
	at clojure.lang.AFn.applyToHelper(AFn.java:156)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.invoke(RestFn.java:421)
	at methodical.impl.standard$invoke_multifn.invokeStatic(standard.clj:55)
	at methodical.impl.standard$invoke_multifn.invoke(standard.clj:47)
	at methodical.impl.standard.StandardMultiFn.invoke(standard.clj:193)
	at metabase_enterprise.serialization.v2.load$load_metabase_BANG_.invokeStatic(load.clj:79)
	at metabase_enterprise.serialization.v2.load$load_metabase_BANG_.doInvoke(load.clj:75)
	at clojure.lang.RestFn.invoke(RestFn.java:423)
	at metabase_enterprise.serialization.cmd$v2_load_internal_BANG_.invokeStatic(cmd.clj:102)
	at metabase_enterprise.serialization.cmd$v2_load_internal_BANG_.doInvoke(cmd.clj:83)
	at clojure.lang.RestFn.invoke(RestFn.java:464)
	at metabase_enterprise.serialization.cmd$v2_load_BANG_$fn__106446.invoke(cmd.clj:114)
	at metabase_enterprise.serialization.cmd$v2_load_BANG_.invokeStatic(cmd.clj:113)
	at metabase_enterprise.serialization.cmd$v2_load_BANG_.invoke(cmd.clj:104)
	at clojure.lang.AFn.applyToHelper(AFn.java:156)
	at clojure.lang.AFn.applyTo(AFn.java:144)
	at clojure.lang.Var.applyTo(Var.java:705)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$apply.invoke(core.clj:662)
	at metabase.cmd$call_enterprise.invokeStatic(cmd.clj:54)
	at metabase.cmd$call_enterprise.doInvoke(cmd.clj:43)
	at clojure.lang.RestFn.invoke(RestFn.java:439)
	at metabase.cmd$import.invokeStatic(cmd.clj:191)
	at metabase.cmd$import.doInvoke(cmd.clj:188)
	at clojure.lang.RestFn.invoke(RestFn.java:410)
	at clojure.lang.AFn.applyToHelper(AFn.java:154)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$apply.invoke(core.clj:662)
	at metabase.cmd$run_cmd$fn__108438.invoke(cmd.clj:301)
	at metabase.cmd$run_cmd.invokeStatic(cmd.clj:300)
	at metabase.cmd$run_cmd.invoke(cmd.clj:290)
	at clojure.lang.Var.invoke(Var.java:388)
	at metabase.core$run_cmd.invokeStatic(core.clj:181)
	at metabase.core$run_cmd.invoke(core.clj:179)
	at metabase.core$entrypoint.invokeStatic(core.clj:203)
	at metabase.core$entrypoint.doInvoke(core.clj:198)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.lang.Var.applyTo(Var.java:705)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$apply.invoke(core.clj:662)
	at metabase.bootstrap$_main.invokeStatic(bootstrap.clj:31)
	at metabase.bootstrap$_main.doInvoke(bootstrap.clj:28)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at metabase.bootstrap.main(Unknown Source)
Caused by: java.lang.NullPointerException
	at metabase.util.yaml$from_file.invokeStatic(yaml.clj:36)
	at metabase.util.yaml$from_file.doInvoke(yaml.clj:33)
	at clojure.lang.RestFn.invoke(RestFn.java:423)
	at metabase_enterprise.serialization.v2.ingest$ingest_file.invokeStatic(ingest.clj:55)
	at metabase_enterprise.serialization.v2.ingest$ingest_file.invoke(ingest.clj:50)
	at metabase_enterprise.serialization.v2.ingest.YamlIngestion.ingest_one(ingest.clj:88)
	at metabase_enterprise.serialization.v2.load$load_one_BANG_$fn__106406.invoke(load.clj:50)
	... 244 more
Command failed with exception: Failed to read file for Database  > Table  > Field 

Information about your Metabase installation

v49, postgres

Severity

P2

Additional context

NA

@paoliniluis paoliniluis added Type:Bug Product defects Priority:P2 Average run of the mill bug Administration/Metabase analytics Pro and Enterprise meta analytics, fka audit labels Apr 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Administration/Metabase analytics Pro and Enterprise meta analytics, fka audit Priority:P2 Average run of the mill bug Type:Bug Product defects
Projects
None yet
Development

No branches or pull requests

1 participant