I created a user that has only view permission on a sub-collection. This sub-collection contains a dashboard and questions (in native SQL) used for the creation of the dashboard.
The user can indeed visualize the dashboard and the questions (even if he has no permissions to access the data of the concerned database nor write questions on that database), he can create dashboard subscriptions and send emails but there is errors, we can read "An error occurred while displaying this card." instead of the returning data/charts in the content of the email as it should be if I understand well.
Can you confirm it's a bug?
Here is the diagnostic infos:
{
"browser-info": {
"language": "fr",
"platform": "Linux x86_64",
"userAgent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0",
"vendor": ""
},
"system-info": {
"file.encoding": "UTF-8",
"java.runtime.name": "OpenJDK Runtime Environment",
"java.runtime.version": "1.8.0_232-b09",
"java.vendor": "AdoptOpenJDK",
"java.vendor.url": "http://java.oracle.com/",
"java.version": "1.8.0_232",
"java.vm.name": "OpenJDK 64-Bit Server VM",
"java.vm.version": "25.232-b09",
"os.name": "Linux",
"os.version": "4.4.0-210-generic",
"user.language": "fr",
"user.timezone": "Europe/Paris"
},
"metabase-info": {
"databases": [
"h2",
"oracle"
],
"hosting-env": "unknown",
"application-database": "postgres",
"application-database-details": {
"database": {
"name": "PostgreSQL",
"version": "12.5"
},
"jdbc-driver": {
"name": "PostgreSQL JDBC Driver",
"version": "42.2.18"
}
},
"run-mode": "prod",
"version": {
"tag": "v0.40.4",
"date": "2021-09-09",
"branch": "release-x.40.x",
"hash": "16d2e53"
},
"settings": {
"report-timezone": "Europe/Paris"
}
}
}
and a part of the message from the log console:
ERROR middleware.catch-exceptions :: Error processing query: null
{:database_id 2,
:started_at #t "2021-09-22T14:16:53.489+02:00[Europe/Paris]",
:error_type :missing-required-permissions,
:json_query
{:constraints {:max-results 10000, :max-results-bare-rows 2000},
:type :native,
:middleware {:js-int-to-string? true, :ignore-cached-results? nil, :add-default-userland-constraints? true},
:native
{:query
"select count(*) XXXXXXXXX",
:template-tags {}},
:database 2,
:parameters (),
:async? false,
:cache-ttl 16},
:status :failed,
:class clojure.lang.ExceptionInfo,
:stacktrace
["--> query_processor.middleware.permissions$perms_exception.invokeStatic(permissions.clj:27)"
"query_processor.middleware.permissions$perms_exception.doInvoke(permissions.clj:22)"
"query_processor.middleware.permissions$perms_exception.invokeStatic(permissions.clj:24)"
"query_processor.middleware.permissions$perms_exception.invoke(permissions.clj:22)"
"query_processor.middleware.permissions$fn__46833$check_ad_hoc_query_perms__46838$fn__46842.invoke(permissions.clj:60)"
"query_processor.middleware.permissions$fn__46833$check_ad_hoc_query_perms__46838.invoke(permissions.clj:49)"
"query_processor.middleware.permissions$fn__46870$check_query_permissions_STAR___46875$fn__46876.invoke(permissions.clj:71)"
"query_processor.middleware.permissions$fn__46870$check_query_permissions_STAR___46875.invoke(permissions.clj:64)"
"query_processor.middleware.permissions$check_query_permissions$fn__46889.invoke(permissions.clj:80)"
"query_processor.middleware.pre_alias_aggregations$pre_alias_aggregations$fn__49010.invoke(pre_alias_aggregations.clj:40)"
"query_processor.middleware.cumulative_aggregations$handle_cumulative_aggregations$fn__47090.invoke(cumulative_aggregations.clj:60)"
"query_processor.middleware.resolve_joined_fields$resolve_joined_fields$fn__49307.invoke(resolve_joined_fields.clj:102)"
"query_processor.middleware.resolve_joins$resolve_joins$fn__49620.invoke(resolve_joins.clj:171)"
"query_processor.middleware.add_implicit_joins$add_implicit_joins$fn__45164.invoke(add_implicit_joins.clj:190)"
"query_processor.middleware.large_int_id$convert_id_to_string$fn__47853.invoke(large_int_id.clj:59)"
"query_processor.middleware.format_rows$format_rows$fn__47834.invoke(format_rows.clj:74)"
"query_processor.middleware.add_default_temporal_unit$add_default_temporal_unit$fn__44458.invoke(add_default_temporal_unit.clj:23)"
"query_processor.middleware.desugar$desugar$fn__47156.invoke(desugar.clj:21)"
"query_processor.middleware.binning$update_binning_strategy$fn__45975.invoke(binning.clj:229)"
"query_processor.middleware.resolve_fields$resolve_fields$fn__46692.invoke(resolve_fields.clj:34)"
"query_processor.middleware.add_dimension_projections$add_remapping$fn__44813.invoke(add_dimension_projections.clj:312)"
"query_processor.middleware.add_implicit_clauses$add_implicit_clauses$fn__45042.invoke(add_implicit_clauses.clj:147)"
"query_processor.middleware.upgrade_field_literals$upgrade_field_literals$fn__50030.invoke(upgrade_field_literals.clj:40)"
"query_processor.middleware.add_source_metadata$add_source_metadata_for_source_queries$fn__45327.invoke(add_source_metadata.clj:123)"
"query_processor.middleware.reconcile_breakout_and_order_by_bucketing$reconcile_breakout_and_order_by_bucketing$fn__49182.invoke(reconcile_breakout_and_order_by_bucketing.clj:100)"
"query_processor.middleware.auto_bucket_datetimes$auto_bucket_datetimes$fn__45535.invoke(auto_bucket_datetimes.clj:147)"
"query_processor.middleware.resolve_source_table$resolve_source_tables$fn__46739.invoke(resolve_source_table.clj:45)"
"query_processor.middleware.parameters$substitute_parameters$fn__48992.invoke(parameters.clj:111)"
"query_processor.middleware.resolve_referenced$resolve_referenced_card_resources$fn__46791.invoke(resolve_referenced.clj:79)"
"query_processor.middleware.expand_macros$expand_macros$fn__47540.invoke(expand_macros.clj:184)"
"query_processor.middleware.add_timezone_info$add_timezone_info$fn__45336.invoke(add_timezone_info.clj:15)"
"query_processor.middleware.splice_params_in_response$splice_params_in_response$fn__49983.invoke(splice_params_in_response.clj:32)"
"query_processor.middleware.resolve_database_and_driver$resolve_database_and_driver$fn__49193$fn__49197.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__49193.invoke(resolve_database_and_driver.clj:25)"
"query_processor.middleware.fetch_source_query$resolve_card_id_source_tables$fn__47780.invoke(fetch_source_query.clj:274)"
"query_processor.middleware.store$initialize_store$fn__49992$fn__49993.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__49992.invoke(store.clj:10)"
"query_processor.middleware.validate$validate_query$fn__50037.invoke(validate.clj:10)"
"query_processor.middleware.normalize_query$normalize$fn__47916.invoke(normalize_query.clj:22)"
"query_processor.middleware.add_rows_truncated$add_rows_truncated$fn__45182.invoke(add_rows_truncated.clj:35)"
"query_processor.middleware.results_metadata$record_and_return_metadata_BANG_$fn__49968.invoke(results_metadata.clj:147)"
"query_processor.middleware.constraints$add_default_userland_constraints$fn__47033.invoke(constraints.clj:42)"
"query_processor.middleware.process_userland_query$process_userland_query$fn__49079.invoke(process_userland_query.clj:134)"
"query_processor.middleware.catch_exceptions$catch_exceptions$fn__46973.invoke(catch_exceptions.clj:173)"
"query_processor.reducible$async_qp$qp_STAR___38255$thunk__38256.invoke(reducible.clj:103)"
"query_processor.reducible$async_qp$qp_STAR___38255.invoke(reducible.clj:109)"
"query_processor.reducible$async_qp$qp_STAR___38255.invoke(reducible.clj:96)"
"query_processor.reducible$sync_qp$qp_STAR___38264$fn__38265.invoke(reducible.clj:131)"
"query_processor.reducible$sync_qp$qp_STAR___38264.invoke(reducible.clj:130)"
"query_processor$process_userland_query.invokeStatic(query_processor.clj:241)"
"query_processor$process_userland_query.doInvoke(query_processor.clj:237)"
"query_processor$fn__50127$process_query_and_save_execution_BANG___50136$fn__50137.invoke(query_processor.clj:250)"
"query_processor$fn__50127$process_query_and_save_execution_BANG___50136.invoke(query_processor.clj:245)"
"query_processor$fn__50171$process_query_and_save_with_max_results_constraints_BANG___50180$fn__50181.invoke(query_processor.clj:262)"
"query_processor$fn__50171$process_query_and_save_with_max_results_constraints_BANG___50180.invoke(query_processor.clj:258)"
"pulse$execute_dashboard_subscription_card$fn__73037$fn__73038.doInvoke(pulse.clj:88)"
"api.card$run_query_for_card_async.invokeStatic(card.clj:640)"
"api.card$run_query_for_card_async.doInvoke(card.clj:613)"
"pulse$execute_dashboard_subscription_card$fn__73037.invoke(pulse.clj:81)"
"server.middleware.session$do_with_current_user.invokeStatic(session.clj:238)"
"server.middleware.session$do_with_current_user.invoke(session.clj:230)"
"pulse$execute_dashboard_subscription_card.invokeStatic(pulse.clj:80)"
"pulse$execute_dashboard_subscription_card.invoke(pulse.clj:69)"
"pulse$execute_dashboard$iter__73050__73054$fn__73055.invoke(pulse.clj:110)"
"pulse$fn__73178.invokeStatic(pulse.clj:236)"
"pulse$fn__73178.invoke(pulse.clj:231)"
"pulse$results__GT_notifications$iter__73210__73214$fn__73215.invoke(pulse.clj:284)"
"pulse$send_notifications_BANG_.invokeStatic(pulse.clj:326)"
"pulse$send_notifications_BANG_.invoke(pulse.clj:325)"
"pulse$send_pulse_BANG_.invokeStatic(pulse.clj:352)"
"pulse$send_pulse_BANG_.doInvoke(pulse.clj:334)"
"api.pulse$fn__73745.invokeStatic(pulse.clj:215)"
"api.pulse$fn__73745.invoke(pulse.clj:204)"
"server.middleware.auth$enforce_authentication$fn__77073.invoke(auth.clj:14)"
"api.routes$fn__77139$fn__77141.invoke(routes.clj:70)"
"server.routes$fn__79375$fn__79376.doInvoke(routes.clj:57)"
"server.routes$fn__79363$fn__79365.invoke(routes.clj:41)"
"server.middleware.exceptions$catch_uncaught_exceptions$fn__77130.invoke(exceptions.clj:98)"
"server.middleware.exceptions$catch_api_exceptions$fn__77127.invoke(exceptions.clj:86)"
"server.middleware.log$log_api_call$fn__79289$fn__79290$fn__79291.invoke(log.clj:209)"
"driver.sql_jdbc.execute.diagnostic$do_with_diagnostic_info.invokeStatic(diagnostic.clj:15)"
"driver.sql_jdbc.execute.diagnostic$do_with_diagnostic_info.invoke(diagnostic.clj:9)"
"server.middleware.log$log_api_call$fn__79289$fn__79290.invoke(log.clj:201)"
"server.middleware.log$log_api_call$fn__79289.invoke(log.clj:200)"
"server.middleware.browser_cookie$ensure_browser_id_cookie$fn__78908.invoke(browser_cookie.clj:30)"
"server.middleware.security$add_security_headers$fn__57741.invoke(security.clj:148)"
"server.middleware.json$wrap_json_body$fn__79053.invoke(json.clj:62)"
"server.middleware.json$wrap_streamed_json_response$fn__79071.invoke(json.clj:98)"
"server.middleware.offset_paging$handle_paging$fn__57763.invoke(offset_paging.clj:42)"
"server.middleware.misc$maybe_set_site_url$fn__36092.invoke(misc.clj:59)"
"server.middleware.session$bind_current_user$fn__42990$fn__42991.invoke(session.clj:257)"
"server.middleware.session$do_with_current_user.invokeStatic(session.clj:238)"
"server.middleware.session$do_with_current_user.invoke(session.clj:230)"
"server.middleware.session$bind_current_user$fn__42990.invoke(session.clj:256)"
"server.middleware.session$wrap_current_user_info$fn__42977.invoke(session.clj:216)"
"server.middleware.session$wrap_session_id$fn__42963.invoke(session.clj:162)"
"server.middleware.auth$wrap_api_key$fn__77081.invoke(auth.clj:27)"
"server.middleware.misc$add_content_type$fn__36075.invoke(misc.clj:27)"
"server.middleware.misc$disable_streaming_buffering$fn__36100.invoke(misc.clj:76)"
"server.middleware.misc$bind_request$fn__36103.invoke(misc.clj:93)"
"server.middleware.ssl$redirect_to_https_middleware$fn__79308.invoke(ssl.clj:38)"
"server$async_proxy_handler$fn__78852.invoke(server.clj:71)"
"server.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source)"],
:context :pulse,
:error "You do not have permissions to run this query.",
:row_count 0,
:running_time 0,
:ex-data
{:type :missing-required-permissions,
:required-permissions #{"/db/2/native/"},
:actual-permissions #{"/collection/4/read/" "/collection/2/" "/db/1/" "/db/1/native/" "/db/1/schema/"},
:permissions-error? true},
:data {:rows [], :cols []}}
2021-09-22 14:16:53,844 ERROR pulse.render :: Pulse card render error
clojure.lang.ExceptionInfo: Card has errors: You do not have permissions to run this query. {:database_id 2, :started_at #t "2021-09-22T14:16:53.489+02:00[Europe/Paris]", :error_type :missing-required-permissions, :json_query {:constraints {:max-results 10000, :max-results-bare-rows 2000}, :type :native, :middleware {:js-int-to-string? true, :ignore-cached-results? nil, :add-default-userland-constraints? true}, :native {:query "select count(*) XXXXXXXXXXXXX\n", :template-tags {}}, :database 2, :parameters (), :async? false, :cache-ttl 16}, :status :failed, :class clojure.lang.ExceptionInfo, :stacktrace ["--> query_processor.middleware.permissions$perms_exception.invokeStatic(permissions.clj:27)" "query_processor.middleware.permissions$perms_exception.doInvoke(permissions.clj:22)" "query_processor.middleware.permissions$perms_exception.invokeStatic(permissions.clj:24)" "query_processor.middleware.permissions$perms_exception.invoke(permissions.clj:22)" "query_processor.middleware.permissions$fn__46833$check_ad_hoc_query_perms__46838$fn__46842.invoke(permissions.clj:60)" "query_processor.middleware.permissions$fn__46833$check_ad_hoc_query_perms__46838.invoke(permissions.clj:49)" "query_processor.middleware.permissions$fn__46870$check_query_permissions_STAR___46875$fn__46876.invoke(permissions.clj:71)" "query_processor.middleware.permissions$fn__46870$check_query_permissions_STAR___46875.invoke(permissions.clj:64)" "query_processor.middleware.permissions$check_query_permissions$fn__46889.invoke(permissions.clj:80)" "query_processor.middleware.pre_alias_aggregations$pre_alias_aggregations$fn__49010.invoke(pre_alias_aggregations.clj:40)" "query_processor.middleware.cumulative_aggregations$handle_cumulative_aggregations$fn__47090.invoke(cumulative_aggregations.clj:60)" "query_processor.middleware.resolve_joined_fields$resolve_joined_fields$fn__49307.invoke(resolve_joined_fields.clj:102)" "query_processor.middleware.resolve_joins$resolve_joins$fn__49620.invoke(resolve_joins.clj:171)" "query_processor.middleware.add_implicit_joins$add_implicit_joins$fn__45164.invoke(add_implicit_joins.clj:190)" "query_processor.middleware.large_int_id$convert_id_to_string$fn__47853.invoke(large_int_id.clj:59)" "query_processor.middleware.format_rows$format_rows$fn__47834.invoke(format_rows.clj:74)" "query_processor.middleware.add_default_temporal_unit$add_default_temporal_unit$fn__44458.invoke(add_default_temporal_unit.clj:23)" "query_processor.middleware.desugar$desugar$fn__47156.invoke(desugar.clj:21)" "query_processor.middleware.binning$update_binning_strategy$fn__45975.invoke(binning.clj:229)" "query_processor.middleware.resolve_fields$resolve_fields$fn__46692.invoke(resolve_fields.clj:34)" "query_processor.middleware.add_dimension_projections$add_remapping$fn__44813.invoke(add_dimension_projections.clj:312)" "query_processor.middleware.add_implicit_clauses$add_implicit_clauses$fn__45042.invoke(add_implicit_clauses.clj:147)" "query_processor.middleware.upgrade_field_literals$upgrade_field_literals$fn__50030.invoke(upgrade_field_literals.clj:40)" "query_processor.middleware.add_source_metadata$add_source_metadata_for_source_queries$fn__45327.invoke(add_source_metadata.clj:123)" "query_processor.middleware.reconcile_breakout_and_order_by_bucketing$reconcile_breakout_and_order_by_bucketing$fn__49182.invoke(reconcile_breakout_and_order_by_bucketing.clj:100)" "query_processor.middleware.auto_bucket_datetimes$auto_bucket_datetimes$fn__45535.invoke(auto_bucket_datetimes.clj:147)" "query_processor.middleware.resolve_source_table$resolve_source_tables$fn__46739.invoke(resolve_source_table.clj:45)" "query_processor.middleware.parameters$substitute_parameters$fn__48992.invoke(parameters.clj:111)" "query_processor.middleware.resolve_referenced$resolve_referenced_card_resources$fn__46791.invoke(resolve_referenced.clj:79)" "query_processor.middleware.expand_macros$expand_macros$fn__47540.invoke(expand_macros.clj:184)" "query_processor.middleware.add_timezone_info$add_timezone_info$fn__45336.invoke(add_timezone_info.clj:15)" "query_processor.middleware.splice_params_in_response$splice_params_in_response$fn__49983.invoke(splice_params_in_response.clj:32)" "query_processor.middleware.resolve_database_and_driver$resolve_database_and_driver$fn__49193$fn__49197.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__49193.invoke(resolve_database_and_driver.clj:25)" "query_processor.middleware.fetch_source_query$resolve_card_id_source_tables$fn__47780.invoke(fetch_source_query.clj:274)" "query_processor.middleware.store$initialize_store$fn__49992$fn__49993.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__49992.invoke(store.clj:10)" "query_processor.middleware.validate$validate_query$fn__50037.invoke(validate.clj:10)" "query_processor.middleware.normalize_query$normalize$fn__47916.invoke(normalize_query.clj:22)" "query_processor.middleware.add_rows_truncated$add_rows_truncated$fn__45182.invoke(add_rows_truncated.clj:35)" "query_processor.middleware.results_metadata$record_and_return_metadata_BANG_$fn__49968.invoke(results_metadata.clj:147)" "query_processor.middleware.constraints$add_default_userland_constraints$fn__47033.invoke(constraints.clj:42)" "query_processor.middleware.process_userland_query$process_userland_query$fn__49079.invoke(process_userland_query.clj:134)" "query_processor.middleware.catch_exceptions$catch_exceptions$fn__46973.invoke(catch_exceptions.clj:173)" "query_processor.reducible$async_qp$qp_STAR___38255$thunk__38256.invoke(reducible.clj:103)" "query_processor.reducible$async_qp$qp_STAR___38255.invoke(reducible.clj:109)" "query_processor.reducible$async_qp$qp_STAR___38255.invoke(reducible.clj:96)" "query_processor.reducible$sync_qp$qp_STAR___38264$fn__38265.invoke(reducible.clj:131)" "query_processor.reducible$sync_qp$qp_STAR___38264.invoke(reducible.clj:130)" "query_processor$process_userland_query.invokeStatic(query_processor.clj:241)" "query_processor$process_userland_query.doInvoke(query_processor.clj:237)" "query_processor$fn__50127$process_query_and_save_execution_BANG___50136$fn__50137.invoke(query_processor.clj:250)" "query_processor$fn__50127$process_query_and_save_execution_BANG___50136.invoke(query_processor.clj:245)" "query_processor$fn__50171$process_query_and_save_with_max_results_constraints_BANG___50180$fn__50181.invoke(query_processor.clj:262)" "query_processor$fn__50171$process_query_and_save_with_max_results_constraints_BANG___50180.invoke(query_processor.clj:258)" "pulse$execute_dashboard_subscription_card$fn__73037$fn__73038.doInvoke(pulse.clj:88)" "api.card$run_query_for_card_async.invokeStatic(card.clj:640)" "api.card$run_query_for_card_async.doInvoke(card.clj:613)" "pulse$execute_dashboard_subscription_card$fn__73037.invoke(pulse.clj:81)" "server.middleware.session$do_with_current_user.invokeStatic(session.clj:238)" "server.middleware.session$do_with_current_user.invoke(session.clj:230)" "pulse$execute_dashboard_subscription_card.invokeStatic(pulse.clj:80)" "pulse$execute_dashboard_subscription_card.invoke(pulse.clj:69)" "pulse$execute_dashboard$iter__73050__73054$fn__73055.invoke(pulse.clj:110)" "pulse$fn__73178.invokeStatic(pulse.clj:236)" "pulse$fn__73178.invoke(pulse.clj:231)" "pulse$results__GT_notifications$iter__73210__73214$fn__73215.invoke(pulse.clj:284)" "pulse$send_notifications_BANG_.invokeStatic(pulse.clj:326)" "pulse$send_notifications_BANG_.invoke(pulse.clj:325)" "pulse$send_pulse_BANG_.invokeStatic(pulse.clj:352)" "pulse$send_pulse_BANG_.doInvoke(pulse.clj:334)" "api.pulse$fn__73745.invokeStatic(pulse.clj:215)" "api.pulse$fn__73745.invoke(pulse.clj:204)" "server.middleware.auth$enforce_authentication$fn__77073.invoke(auth.clj:14)" "api.routes$fn__77139$fn__77141.invoke(routes.clj:70)" "server.routes$fn__79375$fn__79376.doInvoke(routes.clj:57)" "server.routes$fn__79363$fn__79365.invoke(routes.clj:41)" "server.middleware.exceptions$catch_uncaught_exceptions$fn__77130.invoke(exceptions.clj:98)" "server.middleware.exceptions$catch_api_exceptions$fn__77127.invoke(exceptions.clj:86)" "server.middleware.log$log_api_call$fn__79289$fn__79290$fn__79291.invoke(log.clj:209)" "driver.sql_jdbc.execute.diagnostic$do_with_diagnostic_info.invokeStatic(diagnostic.clj:15)" "driver.sql_jdbc.execute.diagnostic$do_with_diagnostic_info.invoke(diagnostic.clj:9)" "server.middleware.log$log_api_call$fn__79289$fn__79290.invoke(log.clj:201)" "server.middleware.log$log_api_call$fn__79289.invoke(log.clj:200)" "server.middleware.browser_cookie$ensure_browser_id_cookie$fn__78908.invoke(browser_cookie.clj:30)" "server.middleware.security$add_security_headers$fn__57741.invoke(security.clj:148)" "server.middleware.json$wrap_json_body$fn__79053.invoke(json.clj:62)" "server.middleware.json$wrap_streamed_json_response$fn__79071.invoke(json.clj:98)" "server.middleware.offset_paging$handle_paging$fn__57763.invoke(offset_paging.clj:42)" "server.middleware.misc$maybe_set_site_url$fn__36092.invoke(misc.clj:59)" "server.middleware.session$bind_current_user$fn__42990$fn__42991.invoke(session.clj:257)" "server.middleware.session$do_with_current_user.invokeStatic(session.clj:238)" "server.middleware.session$do_with_current_user.invoke(session.clj:230)" "server.middleware.session$bind_current_user$fn__42990.invoke(session.clj:256)" "server.middleware.session$wrap_current_user_info$fn__42977.invoke(session.clj:216)" "server.middleware.session$wrap_session_id$fn__42963.invoke(session.clj:162)" "server.middleware.auth$wrap_api_key$fn__77081.invoke(auth.clj:27)" "server.middleware.misc$add_content_type$fn__36075.invoke(misc.clj:27)" "server.middleware.misc$disable_streaming_buffering$fn__36100.invoke(misc.clj:76)" "server.middleware.misc$bind_request$fn__36103.invoke(misc.clj:93)" "server.middleware.ssl$redirect_to_https_middleware$fn__79308.invoke(ssl.clj:38)" "server$async_proxy_handler$fn__78852.invoke(server.clj:71)" "server.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source)"], :context :pulse, :error "You do not have permissions to run this query.", :row_count 0, :running_time 0, :ex-data {:type :missing-required-permissions, :required-permissions #{"/db/2/native/"}, :actual-permissions #{"/collection/4/read/" "/collection/2/" "/db/1/" "/db/1/native/" "/db/1/schema/"}, :permissions-error? true}, :data {:rows [], :cols []}}
at metabase.pulse.render$fn__52543$render_pulse_card_body__52548$fn__52552.invoke(render.clj:97)
at metabase.pulse.render$fn__52543$render_pulse_card_body__52548.invoke(render.clj:93)
at metabase.pulse.render$fn__52579$render_pulse_card__52584$fn__52585.invoke(render.clj:116)
at metabase.pulse.render$fn__52579$render_pulse_card__52584.invoke(render.clj:112)
at metabase.pulse.render$fn__52606$render_pulse_section__52611$fn__52617$fn__52621.invoke(render.clj:139)
at metabase.pulse.render$fn__52606$render_pulse_section__52611$fn__52617.invoke(render.clj:138)
at metabase.pulse.render$fn__52606$render_pulse_section__52611.invoke(render.clj:135)
at metabase.email.messages$render_message_body$fn__53324$fn__53325.invoke(messages.clj:391)
at clojure.core$mapv$fn__8445.invoke(core.clj:6912)
at clojure.core.protocols$fn__8159.invokeStatic(protocols.clj:168)
at clojure.core.protocols$fn__8159.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__53324.invoke(messages.clj:391)
at metabase.email.messages$render_message_body.invokeStatic(messages.clj:390)
at metabase.email.messages$render_message_body.invoke(messages.clj:389)
at metabase.email.messages$render_pulse_email.invokeStatic(messages.clj:406)
at metabase.email.messages$render_pulse_email.invoke(messages.clj:403)
at metabase.pulse$fn__73178.invokeStatic(pulse.clj:240)
at metabase.pulse$fn__73178.invoke(pulse.clj:231)
at clojure.lang.MultiFn.invoke(MultiFn.java:239)
at metabase.pulse$results__GT_notifications$iter__73210__73214$fn__73215.invoke(pulse.clj:284)
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:326)
at metabase.pulse$send_notifications_BANG_.invoke(pulse.clj:325)
at metabase.pulse$send_pulse_BANG_.invokeStatic(pulse.clj:352)
at metabase.pulse$send_pulse_BANG_.doInvoke(pulse.clj:334)
at clojure.lang.RestFn.invoke(RestFn.java:410)
at metabase.api.pulse$fn__73745.invokeStatic(pulse.clj:215)
at metabase.api.pulse$fn__73745.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__77073.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__77139$fn__77141.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__79375$fn__79376.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__79363$fn__79365.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__77130.invoke(exceptions.clj:98)
at metabase.server.middleware.exceptions$catch_api_exceptions$fn__77127.invoke(exceptions.clj:86)
at metabase.server.middleware.log$log_api_call$fn__79289$fn__79290$fn__79291.invoke(log.clj:209)
at metabase.driver.sql_jdbc.execute.diagnostic$do_with_diagnostic_info.invokeStatic(diagnostic.clj:15)
at metabase.driver.sql_jdbc.execute.diagnostic$do_with_diagnostic_info.invoke(diagnostic.clj:9)
at metabase.server.middleware.log$log_api_call$fn__79289$fn__79290.invoke(log.clj:201)
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__79289.invoke(log.clj:200)
at metabase.server.middleware.browser_cookie$ensure_browser_id_cookie$fn__78908.invoke(browser_cookie.clj:30)
at metabase.server.middleware.security$add_security_headers$fn__57741.invoke(security.clj:148)
at metabase.server.middleware.json$wrap_json_body$fn__79053.invoke(json.clj:62)
at metabase.server.middleware.json$wrap_streamed_json_response$fn__79071.invoke(json.clj:98)
at metabase.server.middleware.offset_paging$handle_paging$fn__57763.invoke(offset_paging.clj:42)
at ring.middleware.keyword_params$wrap_keyword_params$fn__79632.invoke(keyword_params.clj:55)
at ring.middleware.params$wrap_params$fn__79648.invoke(params.clj:69)
at metabase.server.middleware.misc$maybe_set_site_url$fn__36092.invoke(misc.clj:59)
at metabase.server.middleware.session$bind_current_user$fn__42990$fn__42991.invoke(session.clj:257)
at metabase.server.middleware.session$do_with_current_user.invokeStatic(session.clj:238)
at metabase.server.middleware.session$do_with_current_user.invoke(session.clj:230)
at metabase.server.middleware.session$bind_current_user$fn__42990.invoke(session.clj:256)
at metabase.server.middleware.session$wrap_current_user_info$fn__42977.invoke(session.clj:216)
at metabase.server.middleware.session$wrap_session_id$fn__42963.invoke(session.clj:162)
at metabase.server.middleware.auth$wrap_api_key$fn__77081.invoke(auth.clj:27)
at ring.middleware.cookies$wrap_cookies$fn__79552.invoke(cookies.clj:216)
at metabase.server.middleware.misc$add_content_type$fn__36075.invoke(misc.clj:27)
at metabase.server.middleware.misc$disable_streaming_buffering$fn__36100.invoke(misc.clj:76)
at ring.middleware.gzip$wrap_gzip$fn__79594.invoke(gzip.clj:86)
at metabase.server.middleware.misc$bind_request$fn__36103.invoke(misc.clj:93)
at metabase.server.middleware.ssl$redirect_to_https_middleware$fn__79308.invoke(ssl.clj:38)
at metabase.server$async_proxy_handler$fn__78852.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.lang.Thread.run(Thread.java:748)
2021-09-22 14:16:53,875 INFO api.card :: Question's average execution duration is 155,0 ms; using 'magic' TTL of 2,0 s
I hid my SQL native query in the log, but there are no metabase field filter in my queries (some bug has already been reported on the site on that subject but it's not the case here I think).
The collection number 4 is my subcollection from which I have read permission, the collection number 2 is my personal collection (the database 1 is the sample dataset).
I tried too to duplicate in my personal collection the dashboard, I have the same problem during the sending of email via its dashboard subscription.
I have no such problem when I send email from a dashboard subscription in a dashboard in my personal collection, where this dashboard contains native questions to a database where I have all the permissions (the sample dataset in this case).
Another problem:
when I try to create a pulse with this user, I can't access to the questions of the subcollection where I have only read permission (and no permission to the db) in the pulse form. Maybe those 2 problems are linked...
Do you think those problems could be solved in a future version? do you have workaround at that time?
Thanks a lot in advance, Best regards