Hi Metabase,
I have a Dashboard and a email subscription.
If I choose to attach results in csv, email is sent, if I choose to attach in XLS, email failed, in the Log:
2022-05-24 15:34:43,793 WARN util.XMLHelper :: SAX Feature unsupported [log suppressed for 5 minutes]http://javax.xml.XMLConstants/property/accessExternalStylesheet
java.lang.IllegalArgumentException: Not supported: http://javax.xml.XMLConstants/property/accessExternalStylesheet
at org.apache.xalan.processor.TransformerFactoryImpl.setAttribute(TransformerFactoryImpl.java:571)
at org.apache.poi.util.XMLHelper.trySet(XMLHelper.java:284)
at org.apache.poi.util.XMLHelper.getTransformerFactory(XMLHelper.java:225)
at org.apache.poi.util.XMLHelper.newTransformer(XMLHelper.java:231)
at org.apache.poi.openxml4j.opc.StreamHelper.saveXmlInStream(StreamHelper.java:56)
at org.apache.poi.openxml4j.opc.internal.ZipContentTypeManager.saveImpl(ZipContentTypeManager.java:68)
at org.apache.poi.openxml4j.opc.internal.ContentTypeManager.save(ContentTypeManager.java:450)
at org.apache.poi.openxml4j.opc.ZipPackage.saveImpl(ZipPackage.java:563)
at org.apache.poi.openxml4j.opc.OPCPackage.save(OPCPackage.java:1490)
at org.apache.poi.ooxml.POIXMLDocument.write(POIXMLDocument.java:227)
at org.apache.poi.xssf.streaming.SXSSFWorkbook.write(SXSSFWorkbook.java:968)
at dk.ative.docjure.spreadsheet$save_workbook_into_stream_BANG_.invokeStatic(spreadsheet.clj:106)
at dk.ative.docjure.spreadsheet$save_workbook_into_stream_BANG_.invoke(spreadsheet.clj:101)
at metabase.query_processor.streaming.xlsx$fn$reify__39174.finish_BANG_(xlsx.clj:514)
at metabase.email.messages$stream_api_results_to_export_format$fn__57922$fn__57923.invoke(messages.clj:371)
at metabase.query_processor.store$do_with_store.invokeStatic(store.clj:44)
at metabase.query_processor.store$do_with_store.invoke(store.clj:38)
at metabase.email.messages$stream_api_results_to_export_format$fn__57922.invoke(messages.clj:355)
at metabase.driver$do_with_driver.invokeStatic(driver.clj:75)
at metabase.driver$do_with_driver.invoke(driver.clj:71)
at metabase.email.messages$stream_api_results_to_export_format.invokeStatic(messages.clj:354)
at metabase.email.messages$stream_api_results_to_export_format.invoke(messages.clj:342)
at metabase.email.messages$result_attachment$fn__57939.invoke(messages.clj:384)
at metabase.email.messages$result_attachment.invokeStatic(messages.clj:383)
at metabase.email.messages$result_attachment.invoke(messages.clj:373)
at clojure.core$map$fn__5884.invoke(core.clj:2759)
at clojure.lang.LazySeq.sval(LazySeq.java:42)
at clojure.lang.LazySeq.seq(LazySeq.java:51)
at clojure.lang.Cons.next(Cons.java:39)
at clojure.lang.RT.boundedLength(RT.java:1793)
at clojure.lang.RestFn.applyTo(RestFn.java:130)
at clojure.core$apply.invokeStatic(core.clj:667)
at clojure.core$mapcat.invokeStatic(core.clj:2787)
at clojure.core$mapcat.doInvoke(core.clj:2787)
at clojure.lang.RestFn.invoke(RestFn.java:423)
at metabase.email.messages$result_attachments.invokeStatic(messages.clj:388)
at metabase.email.messages$result_attachments.invoke(messages.clj:387)
at metabase.email.messages$render_message_body.invokeStatic(messages.clj:455)
at metabase.email.messages$render_message_body.invoke(messages.clj:438)
at metabase.email.messages$render_pulse_email.invokeStatic(messages.clj:467)
at metabase.email.messages$render_pulse_email.invoke(messages.clj:464)
at metabase.pulse$fn__76417.invokeStatic(pulse.clj:293)
at metabase.pulse$fn__76417.invoke(pulse.clj:282)
at clojure.lang.MultiFn.invoke(MultiFn.java:239)
at metabase.pulse$results__GT_notifications$iter__76447__76451$fn__76452.invoke(pulse.clj:345)
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__5419.invokeStatic(core.clj:139)
at clojure.core$seq__5419.invoke(core.clj:139)
at metabase.pulse$send_notifications_BANG_.invokeStatic(pulse.clj:387)
at metabase.pulse$send_notifications_BANG_.invoke(pulse.clj:386)
at metabase.pulse$send_pulse_BANG_.invokeStatic(pulse.clj:415)
at metabase.pulse$send_pulse_BANG_.doInvoke(pulse.clj:395)
at clojure.lang.RestFn.invoke(RestFn.java:410)
at metabase.api.pulse$fn__77604.invokeStatic(pulse.clj:239)
at metabase.api.pulse$fn__77604.invoke(pulse.clj:225)
at compojure.core$wrap_response$fn__28036.invoke(core.clj:160)
at compojure.core$wrap_route_middleware$fn__28020.invoke(core.clj:132)
at compojure.core$wrap_route_info$fn__28025.invoke(core.clj:139)
at compojure.core$wrap_route_matches$fn__28029.invoke(core.clj:151)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$wrap_route_matches$fn__28029.invoke(core.clj:153)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$wrap_route_matches$fn__28029.invoke(core.clj:153)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$wrap_route_matches$fn__28029.invoke(core.clj:153)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$wrap_route_matches$fn__28029.invoke(core.clj:152)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048.invoke(core.clj:200)
at metabase.server.middleware.auth$enforce_authentication$fn__66749.invoke(auth.clj:14)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048.invoke(core.clj:200)
at compojure.core$make_context$handler__28076.invoke(core.clj:289)
at compojure.core$make_context$fn__28080.invoke(core.clj:299)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$make_context$fn__28080.invoke(core.clj:300)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$make_context$fn__28080.invoke(core.clj:300)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$make_context$fn__28080.invoke(core.clj:300)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$make_context$fn__28080.invoke(core.clj:300)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$make_context$fn__28080.invoke(core.clj:300)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$make_context$fn__28080.invoke(core.clj:300)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$make_context$fn__28080.invoke(core.clj:300)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$make_context$fn__28080.invoke(core.clj:300)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$make_context$fn__28080.invoke(core.clj:300)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$make_context$fn__28080.invoke(core.clj:300)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$make_context$fn__28080.invoke(core.clj:300)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$make_context$fn__28080.invoke(core.clj:300)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$make_context$fn__28080.invoke(core.clj:300)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$make_context$fn__28080.invoke(core.clj:300)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$make_context$fn__28080.invoke(core.clj:300)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$make_context$fn__28080.invoke(core.clj:300)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$make_context$fn__28080.invoke(core.clj:300)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$make_context$fn__28080.invoke(core.clj:300)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$make_context$fn__28080.invoke(core.clj:300)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$make_context$fn__28080.invoke(core.clj:300)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$make_context$fn__28080.invoke(core.clj:300)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$make_context$fn__28080.invoke(core.clj:300)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at metabase.api.routes$fn__78112$fn__78115.invoke(routes.clj:59)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048.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:667)
at clojure.core$apply.invoke(core.clj:662)
at metabase.server.routes$fn__78262$fn__78263.doInvoke(routes.clj:67)
at clojure.lang.RestFn.invoke(RestFn.java:436)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048.invoke(core.clj:200)
at compojure.core$make_context$handler__28076.invoke(core.clj:289)
at compojure.core$make_context$fn__28080.invoke(core.clj:299)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$wrap_route_matches$fn__28029.invoke(core.clj:153)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$wrap_route_matches$fn__28029.invoke(core.clj:153)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at compojure.core$wrap_route_matches$fn__28029.invoke(core.clj:153)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048$f__28049$respond_SINGLEQUOTE___28050.invoke(core.clj:197)
at metabase.server.routes$fn__78248$fn__78250.invoke(routes.clj:45)
at compojure.core$routes$fn__28048$f__28049.invoke(core.clj:198)
at compojure.core$routes$fn__28048.invoke(core.clj:200)
at metabase.server.middleware.exceptions$catch_uncaught_exceptions$fn__75074.invoke(exceptions.clj:98)
at metabase.server.middleware.exceptions$catch_api_exceptions$fn__75071.invoke(exceptions.clj:86)
at metabase.server.middleware.log$log_api_call$fn__78732$fn__78733$fn__78734.invoke(log.clj:211)
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__78732$fn__78733.invoke(log.clj:203)
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__78732.invoke(log.clj:202)
at metabase.server.middleware.browser_cookie$ensure_browser_id_cookie$fn__81968.invoke(browser_cookie.clj:38)
at metabase.server.middleware.security$add_security_headers$fn__60352.invoke(security.clj:148)
at metabase.server.middleware.json$wrap_json_body$fn__81107.invoke(json.clj:63)
at metabase.server.middleware.json$wrap_streamed_json_response$fn__81125.invoke(json.clj:99)
at metabase.server.middleware.offset_paging$handle_paging$fn__60376.invoke(offset_paging.clj:42)
at ring.middleware.keyword_params$wrap_keyword_params$fn__82235.invoke(keyword_params.clj:55)
at ring.middleware.params$wrap_params$fn__82254.invoke(params.clj:77)
at metabase.server.middleware.misc$maybe_set_site_url$fn__35182.invoke(misc.clj:59)
at metabase.server.middleware.session$bind_current_user$fn__46653$fn__46654.invoke(session.clj:291)
at metabase.server.middleware.session$do_with_current_user.invokeStatic(session.clj:270)
at metabase.server.middleware.session$do_with_current_user.invoke(session.clj:259)
at metabase.server.middleware.session$bind_current_user$fn__46653.invoke(session.clj:290)
at metabase.server.middleware.session$wrap_current_user_info$fn__46635.invoke(session.clj:240)
at metabase.server.middleware.session$wrap_session_id$fn__46619.invoke(session.clj:173)
at metabase.server.middleware.auth$wrap_api_key$fn__66757.invoke(auth.clj:27)
at ring.middleware.cookies$wrap_cookies$fn__82155.invoke(cookies.clj:216)
at metabase.server.middleware.misc$add_content_type$fn__35165.invoke(misc.clj:27)
at metabase.server.middleware.misc$disable_streaming_buffering$fn__35190.invoke(misc.clj:76)
at ring.middleware.gzip$wrap_gzip$fn__82197.invoke(gzip.clj:86)
at metabase.server.middleware.misc$bind_request$fn__35193.invoke(misc.clj:93)
at metabase.server.middleware.ssl$redirect_to_https_middleware$fn__81984.invoke(ssl.clj:38)
at metabase.server$async_proxy_handler$fn__78504.invoke(server.clj:73)
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:400)
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:645)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:392)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
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:338)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
at java.lang.Thread.run(Unknown Source)
My setup:
{
"browser-info": {
"language": "en-US",
"platform": "Win32",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36",
"vendor": "Google Inc."
},
"system-info": {
"file.encoding": "Cp1252",
"java.runtime.name": "Java(TM) SE Runtime Environment",
"java.runtime.version": "1.8.0_221-b11",
"java.vendor": "Oracle Corporation",
"java.vendor.url": "http://java.oracle.com/",
"java.version": "1.8.0_221",
"java.vm.name": "Java HotSpot(TM) 64-Bit Server VM",
"java.vm.version": "25.221-b11",
"os.name": "Windows Server 2016",
"os.version": "10.0",
"user.language": "en",
"user.timezone": "Europe/Paris"
},
"metabase-info": {
"databases": [
"sqlserver",
"mysql",
"sqlite",
"postgres",
"googleanalytics",
"h2"
],
"hosting-env": "unknown",
"application-database": "postgres",
"application-database-details": {
"database": {
"name": "PostgreSQL",
"version": "12.2"
},
"jdbc-driver": {
"name": "PostgreSQL JDBC Driver",
"version": "42.3.2"
}
},
"run-mode": "prod",
"version": {
"tag": "v0.43.1",
"date": "2022-05-16",
"branch": "release-x.43.x",
"hash": "7f1a1c4"
},
"settings": {
"report-timezone": "Europe/Paris"
}
}
}
Best regards
Nicolas