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

Dashboard Subscription fails, when using dashboard default filter value on Native query with Required parameter #15705

Closed
auyer opened this issue Apr 20, 2021 · 6 comments · Fixed by #17967
Assignees
Labels
.Backend Priority:P2 Average run of the mill bug Querying/Native The SQL/native query editor Querying/Parameters & Variables Filter widgets, field filters, variables etc. Reporting/Dashboards Reporting/Pulses Now called Subscriptions .Reproduced Issues reproduced in test (usually Cypress) Type:Bug Product defects
Milestone

Comments

@auyer
Copy link

auyer commented Apr 20, 2021

Describe the bug
When sending a subscription email with a default filter set, the question will fail due to the filter not being set.

Logs

Full stacktrace
[2fecbf3c-9526-4fe8-8a57-c1334aceb4bf] 2021-04-20T20:26:28-03:00 ERROR metabase.query-processor.middleware.catch-exceptions Error processing query: null
{:database_id 2,
 :started_at #t "2021-04-20T23:26:27.771611Z[GMT]",
 :error_type :missing-required-parameter,
 :json_query
 {:constraints {:max-results 10000, :max-results-bare-rows 2000},
  :type :native,
  :middleware {:js-int-to-string? true, :add-default-userland-constraints? true},
  :native
  {:template-tags
   {"Dif_horas"
    {:id "e75db670-cdaf-f620-2fe9-d46a25f432af", :name "Dif_horas", :display-name "Dif horas", :type :number}},
   :query
   "select name, phone, email, product, date_format(created_at AT TIME ZONE 'America/Sao_Paulo', '%d/%c/%Y %T') as created_at, date_format(updated_at AT TIME ZONE 'America/Sao_Paulo', '%d/%c/%Y %T') as updated_at\nfrom ecommerce_med_db.checkout_accesses \nwhere date_diff('hour', updated_at AT TIME ZONE 'America/Sao_Paulo', now() AT TIME ZONE 'America/Sao_Paulo') > {{Dif_horas}} \nand date_diff('hour', updated_at AT TIME ZONE 'America/Sao_Paulo', now() AT TIME ZONE 'America/Sao_Paulo') < ({{Dif_horas}}+ 24)\norder by updated_at desc\n"},
  :database 2,
  :parameters
  ({:name "Horas",
    :slug "horas",
    :id "33124e1c",
    :type "category",
    :default "12",
    :target [:variable [:template-tag "Dif_horas"]]}),
  :async? false,
  :cache-ttl 3},
 :status :failed,
 :class clojure.lang.ExceptionInfo,
 :stacktrace
 ["--> driver.sql.parameters.substitute$substitute.invokeStatic(substitute.clj:89)"
  "driver.sql.parameters.substitute$substitute.invoke(substitute.clj:71)"
  "driver.sql$fn__80839.invokeStatic(sql.clj:44)"
  "driver.sql$fn__80839.invoke(sql.clj:40)"
  "query_processor.middleware.parameters.native$expand_inner.invokeStatic(native.clj:39)"
  "query_processor.middleware.parameters.native$expand_inner.invoke(native.clj:30)"
  "query_processor.middleware.parameters$expand_one.invokeStatic(parameters.clj:50)"
  "query_processor.middleware.parameters$expand_one.invoke(parameters.clj:41)"
  "query_processor.middleware.parameters$expand_all$replace_48264__48265.invoke(parameters.clj:59)"
  "mbql.util.match.impl$replace_in_collection$iter__17982__17986$fn__17987.invoke(impl.cljc:44)"
  "mbql.util.match.impl$replace_in_collection.invokeStatic(impl.cljc:43)"
  "mbql.util.match.impl$replace_in_collection.invoke(impl.cljc:38)"
  "query_processor.middleware.parameters$expand_all$replace_48264__48265.invoke(parameters.clj:59)"
  "query_processor.middleware.parameters$expand_all.invokeStatic(parameters.clj:59)"
  "query_processor.middleware.parameters$expand_all.invoke(parameters.clj:53)"
  "query_processor.middleware.parameters$expand_all.invokeStatic(parameters.clj:56)"
  "query_processor.middleware.parameters$expand_all.invoke(parameters.clj:53)"
  "query_processor.middleware.parameters$expand_parameters.invokeStatic(parameters.clj:77)"
  "query_processor.middleware.parameters$expand_parameters.invoke(parameters.clj:73)"
  "query_processor.middleware.parameters$fn__48280$substitute_parameters_STAR___48285$fn__48286.invoke(parameters.clj:82)"
  "query_processor.middleware.parameters$fn__48280$substitute_parameters_STAR___48285.invoke(parameters.clj:79)"
  "query_processor.middleware.parameters$substitute_parameters$fn__48306.invoke(parameters.clj:111)"
  "query_processor.middleware.resolve_referenced$resolve_referenced_card_resources$fn__46236.invoke(resolve_referenced.clj:79)"
  "query_processor.middleware.expand_macros$expand_macros$fn__46857.invoke(expand_macros.clj:155)"
  "query_processor.middleware.add_timezone_info$add_timezone_info$fn__44781.invoke(add_timezone_info.clj:15)"
  "query_processor.middleware.splice_params_in_response$splice_params_in_response$fn__49298.invoke(splice_params_in_response.clj:32)"
  "query_processor.middleware.resolve_database_and_driver$resolve_database_and_driver$fn__48509$fn__48513.invoke(resolve_database_and_driver.clj:31)"
  "driver$do_with_driver.invokeStatic(driver.clj:60)"
  "driver$do_with_driver.invoke(driver.clj:56)"
  "query_processor.middleware.resolve_database_and_driver$resolve_database_and_driver$fn__48509.invoke(resolve_database_and_driver.clj:25)"
  "query_processor.middleware.fetch_source_query$resolve_card_id_source_tables$fn__47097.invoke(fetch_source_query.clj:274)"
  "query_processor.middleware.store$initialize_store$fn__49307$fn__49308.invoke(store.clj:11)"
  "query_processor.store$do_with_store.invokeStatic(store.clj:44)"
  "query_processor.store$do_with_store.invoke(store.clj:38)"
  "query_processor.middleware.store$initialize_store$fn__49307.invoke(store.clj:10)"
  "query_processor.middleware.validate$validate_query$fn__49352.invoke(validate.clj:10)"
  "query_processor.middleware.normalize_query$normalize$fn__47233.invoke(normalize_query.clj:22)"
  "query_processor.middleware.add_rows_truncated$add_rows_truncated$fn__44627.invoke(add_rows_truncated.clj:35)"
  "query_processor.middleware.results_metadata$record_and_return_metadata_BANG_$fn__49283.invoke(results_metadata.clj:147)"
  "query_processor.middleware.constraints$add_default_userland_constraints$fn__46478.invoke(constraints.clj:42)"
  "query_processor.middleware.process_userland_query$process_userland_query$fn__48395.invoke(process_userland_query.clj:135)"
  "query_processor.middleware.catch_exceptions$catch_exceptions$fn__46418.invoke(catch_exceptions.clj:173)"
  "query_processor.reducible$async_qp$qp_STAR___37956$thunk__37957.invoke(reducible.clj:103)"
  "query_processor.reducible$async_qp$qp_STAR___37956.invoke(reducible.clj:109)"
  "query_processor.reducible$async_qp$qp_STAR___37956.invoke(reducible.clj:96)"
  "query_processor.reducible$sync_qp$qp_STAR___37965$fn__37966.invoke(reducible.clj:131)"
  "query_processor.reducible$sync_qp$qp_STAR___37965.invoke(reducible.clj:130)"
  "query_processor$process_userland_query.invokeStatic(query_processor.clj:239)"
  "query_processor$process_userland_query.doInvoke(query_processor.clj:235)"
  "query_processor$fn__49442$process_query_and_save_execution_BANG___49451$fn__49452.invoke(query_processor.clj:248)"
  "query_processor$fn__49442$process_query_and_save_execution_BANG___49451.invoke(query_processor.clj:243)"
  "query_processor$fn__49486$process_query_and_save_with_max_results_constraints_BANG___49495$fn__49496.invoke(query_processor.clj:260)"
  "query_processor$fn__49486$process_query_and_save_with_max_results_constraints_BANG___49495.invoke(query_processor.clj:256)"
  "pulse$execute_dashboard_subscription_card$fn__71899$fn__71900.doInvoke(pulse.clj:88)"
  "api.card$run_query_for_card_async.invokeStatic(card.clj:635)"
  "api.card$run_query_for_card_async.doInvoke(card.clj:610)"
  "pulse$execute_dashboard_subscription_card$fn__71899.invoke(pulse.clj:81)"
  "server.middleware.session$do_with_current_user.invokeStatic(session.clj:229)"
  "server.middleware.session$do_with_current_user.invoke(session.clj:221)"
  "pulse$execute_dashboard_subscription_card.invokeStatic(pulse.clj:80)"
  "pulse$execute_dashboard_subscription_card.invoke(pulse.clj:69)"
  "pulse$execute_dashboard$iter__71911__71915$fn__71916$fn__71917.invoke(pulse.clj:100)"
  "pulse$execute_dashboard$iter__71911__71915$fn__71916.invoke(pulse.clj:99)"
  "pulse$fn__72039.invokeStatic(pulse.clj:226)"
  "pulse$fn__72039.invoke(pulse.clj:221)"
  "pulse$results__GT_notifications$iter__72071__72075$fn__72076.invoke(pulse.clj:274)"
  "pulse$send_notifications_BANG_.invokeStatic(pulse.clj:316)"
  "pulse$send_notifications_BANG_.invoke(pulse.clj:315)"
  "pulse$send_pulse_BANG_.invokeStatic(pulse.clj:342)"
  "pulse$send_pulse_BANG_.doInvoke(pulse.clj:324)"
  "api.pulse$fn__72605.invokeStatic(pulse.clj:215)"
  "api.pulse$fn__72605.invoke(pulse.clj:204)"
  "server.middleware.auth$enforce_authentication$fn__75587.invoke(auth.clj:14)"
  "api.routes$fn__75709$fn__75711.invoke(routes.clj:70)"
  "server.routes$fn__77980$fn__77981.doInvoke(routes.clj:57)"
  "server.routes$fn__77968$fn__77970.invoke(routes.clj:41)"
  "server.middleware.exceptions$catch_uncaught_exceptions$fn__75700.invoke(exceptions.clj:98)"
  "server.middleware.exceptions$catch_api_exceptions$fn__75697.invoke(exceptions.clj:86)"
  "server.middleware.log$log_api_call$fn__77896$fn__77897.invoke(log.clj:195)"
  "server.middleware.log$log_api_call$fn__77896.invoke(log.clj:189)"
  "server.middleware.browser_cookie$ensure_browser_id_cookie$fn__77532.invoke(browser_cookie.clj:30)"
  "server.middleware.security$add_security_headers$fn__75662.invoke(security.clj:142)"
  "server.middleware.json$wrap_json_body$fn__77677.invoke(json.clj:62)"
  "server.middleware.json$wrap_streamed_json_response$fn__77695.invoke(json.clj:98)"
  "server.middleware.misc$maybe_set_site_url$fn__35500.invoke(misc.clj:58)"
  "server.middleware.session$bind_current_user$fn__42472$fn__42473.invoke(session.clj:248)"
  "server.middleware.session$do_with_current_user.invokeStatic(session.clj:229)"
  "server.middleware.session$do_with_current_user.invoke(session.clj:221)"
  "server.middleware.session$bind_current_user$fn__42472.invoke(session.clj:247)"
  "server.middleware.session$wrap_current_user_info$fn__42459.invoke(session.clj:207)"
  "server.middleware.session$wrap_session_id$fn__42445.invoke(session.clj:153)"
  "server.middleware.auth$wrap_api_key$fn__75595.invoke(auth.clj:27)"
  "server.middleware.misc$add_content_type$fn__35483.invoke(misc.clj:27)"
  "server.middleware.misc$disable_streaming_buffering$fn__35508.invoke(misc.clj:75)"
  "server.middleware.misc$bind_request$fn__35511.invoke(misc.clj:92)"
  "server.middleware.ssl$redirect_to_https_middleware$fn__77913.invoke(ssl.clj:38)"
  "server$async_proxy_handler$fn__77476.invoke(server.clj:71)"
  "server.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source)"],
 :context :pulse,
 :error "Cannot run the query: missing required parameters: #{\"Dif_horas\"}",
 :row_count 0,
 :running_time 0,
 :ex-data {:type :missing-required-parameter, :missing ("Dif_horas" "Dif_horas")},
 :data {:rows [], :cols []}}

[2fecbf3c-9526-4fe8-8a57-c1334aceb4bf] 2021-04-20T20:26:28-03:00 ERROR metabase.pulse.render Pulse card render error
clojure.lang.ExceptionInfo: Card has errors: Cannot run the query: missing required parameters: #{"Dif_horas"} {:database_id 2, :started_at #t "2021-04-20T23:26:27.771611Z[GMT]", :error_type :missing-required-parameter, :json_query {:constraints {:max-results 10000, :max-results-bare-rows 2000}, :type :native, :middleware {:js-int-to-string? true, :add-default-userland-constraints? true}, :native {:template-tags {"Dif_horas" {:id "e75db670-cdaf-f620-2fe9-d46a25f432af", :name "Dif_horas", :display-name "Dif horas", :type :number}}, :query "select name, phone, email, product, date_format(created_at AT TIME ZONE 'America/Sao_Paulo', '%d/%c/%Y %T') as created_at, date_format(updated_at AT TIME ZONE 'America/Sao_Paulo', '%d/%c/%Y %T') as updated_at\nfrom ecommerce_med_db.checkout_accesses \nwhere date_diff('hour', updated_at AT TIME ZONE 'America/Sao_Paulo', now() AT TIME ZONE 'America/Sao_Paulo') > {{Dif_horas}} \nand date_diff('hour', updated_at AT TIME ZONE 'America/Sao_Paulo', now() AT TIME ZONE 'America/Sao_Paulo') < ({{Dif_horas}}+ 24)\norder by updated_at desc\n"}, :database 2, :parameters ({:name "Horas", :slug "horas", :id "33124e1c", :type "category", :default "12", :target [:variable [:template-tag "Dif_horas"]]}), :async? false, :cache-ttl 3}, :status :failed, :class clojure.lang.ExceptionInfo, :stacktrace ["--> driver.sql.parameters.substitute$substitute.invokeStatic(substitute.clj:89)" "driver.sql.parameters.substitute$substitute.invoke(substitute.clj:71)" "driver.sql$fn__80839.invokeStatic(sql.clj:44)" "driver.sql$fn__80839.invoke(sql.clj:40)" "query_processor.middleware.parameters.native$expand_inner.invokeStatic(native.clj:39)" "query_processor.middleware.parameters.native$expand_inner.invoke(native.clj:30)" "query_processor.middleware.parameters$expand_one.invokeStatic(parameters.clj:50)" "query_processor.middleware.parameters$expand_one.invoke(parameters.clj:41)" "query_processor.middleware.parameters$expand_all$replace_48264__48265.invoke(parameters.clj:59)" "mbql.util.match.impl$replace_in_collection$iter__17982__17986$fn__17987.invoke(impl.cljc:44)" "mbql.util.match.impl$replace_in_collection.invokeStatic(impl.cljc:43)" "mbql.util.match.impl$replace_in_collection.invoke(impl.cljc:38)" "query_processor.middleware.parameters$expand_all$replace_48264__48265.invoke(parameters.clj:59)" "query_processor.middleware.parameters$expand_all.invokeStatic(parameters.clj:59)" "query_processor.middleware.parameters$expand_all.invoke(parameters.clj:53)" "query_processor.middleware.parameters$expand_all.invokeStatic(parameters.clj:56)" "query_processor.middleware.parameters$expand_all.invoke(parameters.clj:53)" "query_processor.middleware.parameters$expand_parameters.invokeStatic(parameters.clj:77)" "query_processor.middleware.parameters$expand_parameters.invoke(parameters.clj:73)" "query_processor.middleware.parameters$fn__48280$substitute_parameters_STAR___48285$fn__48286.invoke(parameters.clj:82)" "query_processor.middleware.parameters$fn__48280$substitute_parameters_STAR___48285.invoke(parameters.clj:79)" "query_processor.middleware.parameters$substitute_parameters$fn__48306.invoke(parameters.clj:111)" "query_processor.middleware.resolve_referenced$resolve_referenced_card_resources$fn__46236.invoke(resolve_referenced.clj:79)" "query_processor.middleware.expand_macros$expand_macros$fn__46857.invoke(expand_macros.clj:155)" "query_processor.middleware.add_timezone_info$add_timezone_info$fn__44781.invoke(add_timezone_info.clj:15)" "query_processor.middleware.splice_params_in_response$splice_params_in_response$fn__49298.invoke(splice_params_in_response.clj:32)" "query_processor.middleware.resolve_database_and_driver$resolve_database_and_driver$fn__48509$fn__48513.invoke(resolve_database_and_driver.clj:31)" "driver$do_with_driver.invokeStatic(driver.clj:60)" "driver$do_with_driver.invoke(driver.clj:56)" "query_processor.middleware.resolve_database_and_driver$resolve_database_and_driver$fn__48509.invoke(resolve_database_and_driver.clj:25)" "query_processor.middleware.fetch_source_query$resolve_card_id_source_tables$fn__47097.invoke(fetch_source_query.clj:274)" "query_processor.middleware.store$initialize_store$fn__49307$fn__49308.invoke(store.clj:11)" "query_processor.store$do_with_store.invokeStatic(store.clj:44)" "query_processor.store$do_with_store.invoke(store.clj:38)" "query_processor.middleware.store$initialize_store$fn__49307.invoke(store.clj:10)" "query_processor.middleware.validate$validate_query$fn__49352.invoke(validate.clj:10)" "query_processor.middleware.normalize_query$normalize$fn__47233.invoke(normalize_query.clj:22)" "query_processor.middleware.add_rows_truncated$add_rows_truncated$fn__44627.invoke(add_rows_truncated.clj:35)" "query_processor.middleware.results_metadata$record_and_return_metadata_BANG_$fn__49283.invoke(results_metadata.clj:147)" "query_processor.middleware.constraints$add_default_userland_constraints$fn__46478.invoke(constraints.clj:42)" "query_processor.middleware.process_userland_query$process_userland_query$fn__48395.invoke(process_userland_query.clj:135)" "query_processor.middleware.catch_exceptions$catch_exceptions$fn__46418.invoke(catch_exceptions.clj:173)" "query_processor.reducible$async_qp$qp_STAR___37956$thunk__37957.invoke(reducible.clj:103)" "query_processor.reducible$async_qp$qp_STAR___37956.invoke(reducible.clj:109)" "query_processor.reducible$async_qp$qp_STAR___37956.invoke(reducible.clj:96)" "query_processor.reducible$sync_qp$qp_STAR___37965$fn__37966.invoke(reducible.clj:131)" "query_processor.reducible$sync_qp$qp_STAR___37965.invoke(reducible.clj:130)" "query_processor$process_userland_query.invokeStatic(query_processor.clj:239)" "query_processor$process_userland_query.doInvoke(query_processor.clj:235)" "query_processor$fn__49442$process_query_and_save_execution_BANG___49451$fn__49452.invoke(query_processor.clj:248)" "query_processor$fn__49442$process_query_and_save_execution_BANG___49451.invoke(query_processor.clj:243)" "query_processor$fn__49486$process_query_and_save_with_max_results_constraints_BANG___49495$fn__49496.invoke(query_processor.clj:260)" "query_processor$fn__49486$process_query_and_save_with_max_results_constraints_BANG___49495.invoke(query_processor.clj:256)" "pulse$execute_dashboard_subscription_card$fn__71899$fn__71900.doInvoke(pulse.clj:88)" "api.card$run_query_for_card_async.invokeStatic(card.clj:635)" "api.card$run_query_for_card_async.doInvoke(card.clj:610)" "pulse$execute_dashboard_subscription_card$fn__71899.invoke(pulse.clj:81)" "server.middleware.session$do_with_current_user.invokeStatic(session.clj:229)" "server.middleware.session$do_with_current_user.invoke(session.clj:221)" "pulse$execute_dashboard_subscription_card.invokeStatic(pulse.clj:80)" "pulse$execute_dashboard_subscription_card.invoke(pulse.clj:69)" "pulse$execute_dashboard$iter__71911__71915$fn__71916$fn__71917.invoke(pulse.clj:100)" "pulse$execute_dashboard$iter__71911__71915$fn__71916.invoke(pulse.clj:99)" "pulse$fn__72039.invokeStatic(pulse.clj:226)" "pulse$fn__72039.invoke(pulse.clj:221)" "pulse$results__GT_notifications$iter__72071__72075$fn__72076.invoke(pulse.clj:274)" "pulse$send_notifications_BANG_.invokeStatic(pulse.clj:316)" "pulse$send_notifications_BANG_.invoke(pulse.clj:315)" "pulse$send_pulse_BANG_.invokeStatic(pulse.clj:342)" "pulse$send_pulse_BANG_.doInvoke(pulse.clj:324)" "api.pulse$fn__72605.invokeStatic(pulse.clj:215)" "api.pulse$fn__72605.invoke(pulse.clj:204)" "server.middleware.auth$enforce_authentication$fn__75587.invoke(auth.clj:14)" "api.routes$fn__75709$fn__75711.invoke(routes.clj:70)" "server.routes$fn__77980$fn__77981.doInvoke(routes.clj:57)" "server.routes$fn__77968$fn__77970.invoke(routes.clj:41)" "server.middleware.exceptions$catch_uncaught_exceptions$fn__75700.invoke(exceptions.clj:98)" "server.middleware.exceptions$catch_api_exceptions$fn__75697.invoke(exceptions.clj:86)" "server.middleware.log$log_api_call$fn__77896$fn__77897.invoke(log.clj:195)" "server.middleware.log$log_api_call$fn__77896.invoke(log.clj:189)" "server.middleware.browser_cookie$ensure_browser_id_cookie$fn__77532.invoke(browser_cookie.clj:30)" "server.middleware.security$add_security_headers$fn__75662.invoke(security.clj:142)" "server.middleware.json$wrap_json_body$fn__77677.invoke(json.clj:62)" "server.middleware.json$wrap_streamed_json_response$fn__77695.invoke(json.clj:98)" "server.middleware.misc$maybe_set_site_url$fn__35500.invoke(misc.clj:58)" "server.middleware.session$bind_current_user$fn__42472$fn__42473.invoke(session.clj:248)" "server.middleware.session$do_with_current_user.invokeStatic(session.clj:229)" "server.middleware.session$do_with_current_user.invoke(session.clj:221)" "server.middleware.session$bind_current_user$fn__42472.invoke(session.clj:247)" "server.middleware.session$wrap_current_user_info$fn__42459.invoke(session.clj:207)" "server.middleware.session$wrap_session_id$fn__42445.invoke(session.clj:153)" "server.middleware.auth$wrap_api_key$fn__75595.invoke(auth.clj:27)" "server.middleware.misc$add_content_type$fn__35483.invoke(misc.clj:27)" "server.middleware.misc$disable_streaming_buffering$fn__35508.invoke(misc.clj:75)" "server.middleware.misc$bind_request$fn__35511.invoke(misc.clj:92)" "server.middleware.ssl$redirect_to_https_middleware$fn__77913.invoke(ssl.clj:38)" "server$async_proxy_handler$fn__77476.invoke(server.clj:71)" "server.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source)"], :context :pulse, :error "Cannot run the query: missing required parameters: #{\"Dif_horas\"}", :row_count 0, :running_time 0, :ex-data {:type :missing-required-parameter, :missing ("Dif_horas" "Dif_horas")}, :data {:rows [], :cols []}}
	at metabase.pulse.render$fn__51836$render_pulse_card_body__51841$fn__51845.invoke(render.clj:97)
	at metabase.pulse.render$fn__51836$render_pulse_card_body__51841.invoke(render.clj:93)
	at metabase.pulse.render$fn__51872$render_pulse_card__51877$fn__51878.invoke(render.clj:116)
	at metabase.pulse.render$fn__51872$render_pulse_card__51877.invoke(render.clj:112)
	at metabase.pulse.render$fn__51899$render_pulse_section__51904$fn__51910$fn__51914.invoke(render.clj:139)
	at metabase.pulse.render$fn__51899$render_pulse_section__51904$fn__51910.invoke(render.clj:138)
	at metabase.pulse.render$fn__51899$render_pulse_section__51904.invoke(render.clj:135)
	at metabase.email.messages$render_message_body$fn__52617$fn__52618.invoke(messages.clj:387)
	at clojure.core$mapv$fn__8445.invoke(core.clj:6912)
	at clojure.lang.ArrayChunk.reduce(ArrayChunk.java:58)
	at clojure.core.protocols$fn__8154.invokeStatic(protocols.clj:136)
	at clojure.core.protocols$fn__8154.invoke(protocols.clj:124)
	at clojure.core.protocols$fn__8114$G__8109__8123.invoke(protocols.clj:19)
	at clojure.core.protocols$seq_reduce.invokeStatic(protocols.clj:31)
	at clojure.core.protocols$fn__8146.invokeStatic(protocols.clj:75)
	at clojure.core.protocols$fn__8146.invoke(protocols.clj:75)
	at clojure.core.protocols$fn__8088$G__8083__8101.invoke(protocols.clj:13)
	at clojure.core$reduce.invokeStatic(core.clj:6828)
	at clojure.core$mapv.invokeStatic(core.clj:6903)
	at clojure.core$mapv.invoke(core.clj:6903)
	at metabase.email.messages$render_message_body$fn__52617.invoke(messages.clj:387)
	at metabase.email.messages$render_message_body.invokeStatic(messages.clj:386)
	at metabase.email.messages$render_message_body.invoke(messages.clj:385)
	at metabase.email.messages$render_pulse_email.invokeStatic(messages.clj:402)
	at metabase.email.messages$render_pulse_email.invoke(messages.clj:399)
	at metabase.pulse$fn__72039.invokeStatic(pulse.clj:230)
	at metabase.pulse$fn__72039.invoke(pulse.clj:221)
	at clojure.lang.MultiFn.invoke(MultiFn.java:239)
	at metabase.pulse$results__GT_notifications$iter__72071__72075$fn__72076.invoke(pulse.clj:274)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:51)
	at clojure.lang.RT.seq(RT.java:535)
	at clojure.core$seq__5402.invokeStatic(core.clj:137)
	at clojure.core$seq__5402.invoke(core.clj:137)
	at metabase.pulse$send_notifications_BANG_.invokeStatic(pulse.clj:316)
	at metabase.pulse$send_notifications_BANG_.invoke(pulse.clj:315)
	at metabase.pulse$send_pulse_BANG_.invokeStatic(pulse.clj:342)
	at metabase.pulse$send_pulse_BANG_.doInvoke(pulse.clj:324)
	at clojure.lang.RestFn.invoke(RestFn.java:410)
	at metabase.api.pulse$fn__72605.invokeStatic(pulse.clj:215)
	at metabase.api.pulse$fn__72605.invoke(pulse.clj:204)
	at compojure.core$wrap_response$fn__1996.invoke(core.clj:160)
	at compojure.core$wrap_route_middleware$fn__1980.invoke(core.clj:132)
	at compojure.core$wrap_route_info$fn__1985.invoke(core.clj:139)
	at compojure.core$wrap_route_matches$fn__1989.invoke(core.clj:151)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$wrap_route_matches$fn__1989.invoke(core.clj:153)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$wrap_route_matches$fn__1989.invoke(core.clj:153)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$wrap_route_matches$fn__1989.invoke(core.clj:153)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$wrap_route_matches$fn__1989.invoke(core.clj:152)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008.invoke(core.clj:200)
	at metabase.server.middleware.auth$enforce_authentication$fn__75587.invoke(auth.clj:14)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008.invoke(core.clj:200)
	at compojure.core$make_context$handler__2036.invoke(core.clj:287)
	at compojure.core$make_context$fn__2038.invoke(core.clj:296)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$make_context$fn__2038.invoke(core.clj:297)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$make_context$fn__2038.invoke(core.clj:297)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$make_context$fn__2038.invoke(core.clj:297)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$make_context$fn__2038.invoke(core.clj:297)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$make_context$fn__2038.invoke(core.clj:297)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$make_context$fn__2038.invoke(core.clj:297)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$make_context$fn__2038.invoke(core.clj:297)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$make_context$fn__2038.invoke(core.clj:297)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$make_context$fn__2038.invoke(core.clj:297)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$make_context$fn__2038.invoke(core.clj:297)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$make_context$fn__2038.invoke(core.clj:297)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$make_context$fn__2038.invoke(core.clj:297)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$make_context$fn__2038.invoke(core.clj:297)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$make_context$fn__2038.invoke(core.clj:297)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$make_context$fn__2038.invoke(core.clj:297)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$make_context$fn__2038.invoke(core.clj:297)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$make_context$fn__2038.invoke(core.clj:297)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$make_context$fn__2038.invoke(core.clj:297)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$make_context$fn__2038.invoke(core.clj:297)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$make_context$fn__2038.invoke(core.clj:297)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$make_context$fn__2038.invoke(core.clj:297)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at metabase.api.routes$fn__75709$fn__75711.invoke(routes.clj:70)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008.invoke(core.clj:200)
	at clojure.lang.AFn.applyToHelper(AFn.java:160)
	at clojure.lang.AFn.applyTo(AFn.java:144)
	at clojure.core$apply.invokeStatic(core.clj:665)
	at clojure.core$apply.invoke(core.clj:660)
	at metabase.server.routes$fn__77980$fn__77981.doInvoke(routes.clj:57)
	at clojure.lang.RestFn.invoke(RestFn.java:436)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008.invoke(core.clj:200)
	at compojure.core$make_context$handler__2036.invoke(core.clj:287)
	at compojure.core$make_context$fn__2038.invoke(core.clj:296)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$wrap_route_matches$fn__1989.invoke(core.clj:153)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$wrap_route_matches$fn__1989.invoke(core.clj:153)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at compojure.core$wrap_route_matches$fn__1989.invoke(core.clj:153)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008$f__2009$respond_SINGLEQUOTE___2010.invoke(core.clj:197)
	at metabase.server.routes$fn__77968$fn__77970.invoke(routes.clj:41)
	at compojure.core$routes$fn__2008$f__2009.invoke(core.clj:198)
	at compojure.core$routes$fn__2008.invoke(core.clj:200)
	at metabase.server.middleware.exceptions$catch_uncaught_exceptions$fn__75700.invoke(exceptions.clj:98)
	at metabase.server.middleware.exceptions$catch_api_exceptions$fn__75697.invoke(exceptions.clj:86)
	at metabase.server.middleware.log$log_api_call$fn__77896$fn__77897.invoke(log.clj:195)
	at toucan.db$_do_with_call_counting.invokeStatic(db.clj:216)
	at toucan.db$_do_with_call_counting.invoke(db.clj:209)
	at metabase.server.middleware.log$log_api_call$fn__77896.invoke(log.clj:189)
	at metabase.server.middleware.browser_cookie$ensure_browser_id_cookie$fn__77532.invoke(browser_cookie.clj:30)
	at metabase.server.middleware.security$add_security_headers$fn__75662.invoke(security.clj:142)
	at metabase.server.middleware.json$wrap_json_body$fn__77677.invoke(json.clj:62)
	at metabase.server.middleware.json$wrap_streamed_json_response$fn__77695.invoke(json.clj:98)
	at ring.middleware.keyword_params$wrap_keyword_params$fn__78237.invoke(keyword_params.clj:55)
	at ring.middleware.params$wrap_params$fn__78253.invoke(params.clj:69)
	at metabase.server.middleware.misc$maybe_set_site_url$fn__35500.invoke(misc.clj:58)
	at metabase.server.middleware.session$bind_current_user$fn__42472$fn__42473.invoke(session.clj:248)
	at metabase.server.middleware.session$do_with_current_user.invokeStatic(session.clj:229)
	at metabase.server.middleware.session$do_with_current_user.invoke(session.clj:221)
	at metabase.server.middleware.session$bind_current_user$fn__42472.invoke(session.clj:247)
	at metabase.server.middleware.session$wrap_current_user_info$fn__42459.invoke(session.clj:207)
	at metabase.server.middleware.session$wrap_session_id$fn__42445.invoke(session.clj:153)
	at metabase.server.middleware.auth$wrap_api_key$fn__75595.invoke(auth.clj:27)
	at ring.middleware.cookies$wrap_cookies$fn__78157.invoke(cookies.clj:216)
	at metabase.server.middleware.misc$add_content_type$fn__35483.invoke(misc.clj:27)
	at metabase.server.middleware.misc$disable_streaming_buffering$fn__35508.invoke(misc.clj:75)
	at ring.middleware.gzip$wrap_gzip$fn__78199.invoke(gzip.clj:86)
	at metabase.server.middleware.misc$bind_request$fn__35511.invoke(misc.clj:92)
	at metabase.server.middleware.ssl$redirect_to_https_middleware$fn__77913.invoke(ssl.clj:38)
	at metabase.server$async_proxy_handler$fn__77476.invoke(server.clj:71)
	at metabase.server.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
	at org.eclipse.jetty.server.Server.handle(Server.java:516)
	at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)
	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:556)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
	at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:773)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:905)
	at java.base/java.lang.Thread.run(Unknown Source)

To Reproduce
Steps to reproduce the behavior:

  1. Create a question with a simple filter (in our case, the question results in a simple table).
  2. Add it to a Dashboard
  3. Create a subscription, with "attach data", and click on "send now"
  4. See error in log and email.

Expected behavior
The default value should be used in que question.

Screenshots
Dashboard with simple filter and default value:
image

Subscription settings:
image

Email generated:
image

Information about your Metabase Installation:

  • Your browser and the version: Firefox 88
  • Your operating system: Linux
  • Your databases: AWS Athena & Postgres
  • Metabase version: 0.39.0.1
  • Metabase hosting environment: Docker
  • Metabase internal database: Postgres

Severity
High. I have to create artificial workarrounds to make the subscriptions work.
The severity depends on how the acctual subscription will be sent (will update this part as soon as I get an update).
If this only happens in the "Send Now" action, this is at least annoying because we cant test subscriptions properly.

@auyer auyer added .Needs Triage Type:Bug Product defects labels Apr 20, 2021
@auyer

This comment has been minimized.

@auyer
Copy link
Author

auyer commented Apr 21, 2021

Update: I found that the default filter in the dashboard is being ignored. It only worked when I added a default value in the question itself.

@nemanjaglumac

This comment has been minimized.

@auyer
Copy link
Author

auyer commented Apr 21, 2021

My filter (in the question) was a number. In the dashboard, it had to be "Other Categories", because I am not able to select number directly.

Let me try it again:

1- Create question with a number filter
2- The question must not have a default value.
3- Add question to a dashboard and create a filter of type "Other Categories"
4- The Dashboard should have a default value, and it should be linked to the question
5- Save it, and test the "Send Email Now" functionality

@flamber flamber added Priority:P2 Average run of the mill bug Reporting/Pulses Now called Subscriptions Querying/Parameters & Variables Filter widgets, field filters, variables etc. Reporting/Dashboards Querying/Native The SQL/native query editor and removed .Needs Triage labels Apr 21, 2021
@flamber flamber changed the title Metabase 0.39.0.1 fails to use dafault filter value when sending subscription Dashboard Subscription fails, when using dashboard default filter value on Native query with Required parameter Apr 21, 2021
@flamber
Copy link
Contributor

flamber commented Apr 21, 2021

Reproduce:

  1. SELECT COUNT(*) FROM ORDERS WHERE QUANTITY={{qty}} with qty as Number filter and Required
    image
  2. Add to dashboard, and add category filter and connect to question and set default filter value
    image
  3. Subscription - input email - notice it says it will use dashboard defaults - click send test email
    image
  4. The email received - and the log has a big stacktrace about missing-required-parameter:
    image

@nemanjaglumac nemanjaglumac added this to Backlog in Cypress Testing Apr 21, 2021
nemanjaglumac added a commit that referenced this issue Apr 21, 2021
nemanjaglumac added a commit that referenced this issue Apr 21, 2021
…rd filter value on native query with required parameter (#15727)

* Use real SMTP instead of a dummy one

* Add repro for #15705
@nemanjaglumac nemanjaglumac added the .Reproduced Issues reproduced in test (usually Cypress) label Apr 21, 2021
@daltojohnso
Copy link
Contributor

I think this is BE?

It is an issue with variable params specifically--I'm seeing the error message "Error determining value for parameter". Native queries with field filters work fine. I do see a...

 :parameters
  ({:name "Qty",
    :slug "qty",
    :id "7fc54300",
    :type "string/=",
    :sectionId "string",
    :default "21",
    :target [:variable [:template-tag "qty"]]})

in the stack trace, but didn't look further than that. Maybe we need to take the :default value and put it in a :value property to mimic how it is sent when sent via the /api/card/:cardId/query endpoint.

@pawit-metabase pawit-metabase self-assigned this Sep 20, 2021
pawit-metabase added a commit that referenced this issue Sep 20, 2021
When loading dashboard filters, the default value is in `:default`
not in `:value`. In the field filter code path, the default is
copied to `:value`. Fix the issue by calling the same code for
non-field filters too.

Fixes #15705
pawit-metabase added a commit that referenced this issue Sep 22, 2021
When loading dashboard filters, the default value is in `:default`
not in `:value`. In the field filter code path, the default is
copied to `:value`. Fix the issue by calling the same code for
non-field filters too.

Fixes #15705
@flamber flamber added this to the 0.41 milestone Sep 22, 2021
This was referenced Feb 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
.Backend Priority:P2 Average run of the mill bug Querying/Native The SQL/native query editor Querying/Parameters & Variables Filter widgets, field filters, variables etc. Reporting/Dashboards Reporting/Pulses Now called Subscriptions .Reproduced Issues reproduced in test (usually Cypress) Type:Bug Product defects
Projects
Development

Successfully merging a pull request may close this issue.

5 participants