Closed romkavt closed 3 years ago
Hello @romkavt
It would be great to implement support of entire plantuml.com/stdlib embedded into PlantUML. Looks strange: "!include <C4/C4_Container>" works well, but "!include <archimate/Archimate>" or "!include <aws/common>" does not.
It should work... :thinking: Could you please share the complete stacktrace/log or a sample diagram that reproduces this issue?
Here's a working example on https://kroki.io (running v0.10.0)
!include <archimate/Archimate>
!include <aws/common>
!include <aws/Storage/AmazonS3/AmazonS3>
!include <aws/Storage/AmazonS3/bucket/bucket>
rectangle GO #lightgreen
rectangle STOP #red
rectangle WAIT #orange
AMAZONS3(s3_internal)
AMAZONS3(s3_partner,"Vendor's S3")
s3_internal <- s3_partner
Thanks for your attention
Here is an example of diagram:
@startuml
title Базовый модуль SDK: YooId
!include <archimate/Archimate>
Grouping(SDK, "SDK") {
Application_Component(SdkYooId, "YooId SDK\n(SDK авторизаций\nсервисов)")
Application_Service(ServiceYooId, "user-auth-center-api")
Rel_Access_w_Right(SdkYooId, ServiceYooId, "взаимодействует")
Application_DataObject(UserAuthorization, "Авторизация\nпользователя YooId\n(авторизация СЦА)")
Rel_Association_Right(UserAuthorization, SdkYooId, "хранит\nна устройстве")
Application_Function(FuncYooIdSignIn, "Функции учетной записи YooId:\n\n1. Вход/выход в учетную запись YooId\n2. Открытие новой учетной записи YooId на основе контекста регистрации в прикладном сервисе\n3. Открытие WebView в авторизованном состоянии\n4. Хранение авторизации на устройстве\n5. Аутентификация на устройстве\n(Код доступа, биометрия)")
Rel_Assignment_Down(SdkYooId, FuncYooIdSignIn, "реализует")
}
Application_Component(App, "Приложение ЛК YooKassa")
Rel_Aggregation(App, SdkYooId, "содержит")
Application_Function(FuncApp, "Личный кабинет YooKassa")
Rel_Assignment_Left(App, FuncApp, "реализует")
@enduml
Here are log messages:
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
yuzutech/kroki latest e74da1442c93 11 days ago 434MB
yuzutech/kroki-excalidraw latest 2a02f4048390 5 weeks ago 413MB
yuzutech/kroki-bpmn latest 459dd2c8cc1e 5 weeks ago 413MB
yuzutech/kroki-mermaid latest 01208df126a6 5 weeks ago 440MB
yuzutech/kroki-blockdiag latest ebc85d84c8fb 5 weeks ago 113MB
yuzutech/kroki jdk-11 96c7a4962470 5 weeks ago 428MB
yuzutech/kroki jdk11-alpine 96c7a4962470 5 weeks ago 428MB
kroki-builder-static-svgbob latest ab7e4d49039b 5 weeks ago 1.74GB
kroki-builder-static-erd latest 08e4c1bd43ca 5 weeks ago 2.56GB
kroki-builder-bytefield alpine 628e19dc9545 5 weeks ago 267MB
kroki-builder-bytefield latest 628e19dc9545 5 weeks ago 267MB
kroki-builder-wavedrom alpine 76a241f77ea7 5 weeks ago 261MB
kroki-builder-wavedrom latest 76a241f77ea7 5 weeks ago 261MB
kroki-builder-vega alpine 8700efa3f102 5 weeks ago 665MB
kroki-builder-vega latest 8700efa3f102 5 weeks ago 665MB
kroki-builder-nomnoml alpine 485e094c95a4 5 weeks ago 263MB
kroki-builder-nomnoml latest 485e094c95a4 5 weeks ago 263MB
yuzutech/kroki <none> d53c24754abc 6 weeks ago 433MB
$docker run -p8000:8000 yuzutech/kroki
{"timestamp":"1612258307272","level":"INFO","thread":"vert.x-eventloop-thread-1","logger":"io.vertx.core.impl.launcher.commands.VertxIsolatedDeployer","message":"Succeeded in deploying verticle","context":"default"}
{"timestamp":"1612258801236","level":"INFO","thread":"vert.x-eventloop-thread-0","mdc":{"path":"/plantuml/svg/eNqFVN9r01AUfs9fcd1TC5vDXy9DZMWijAnCihMhULL02kXbm5KkDhRh7Zx7UOz0cQNFUJ9jbWbWru2_cO5_5Hdvsi1bM-xDc3KT853v-845WfYDywvazYYROEGDM_pMIf2lCfXlBzpmdIJwIHdoJD-ySnl1iT1z3ZWacc0RdqNd4-yu5dmbTtMK-GLpNLpnGA89t91yRL2AnHk2h_-5IntjMPxKrVbDsa3AcUX1vttsuYKLoFCpvdTIeFlfVTFTqHQGQn3ZpYncphjUQvke12NTyA5FOOtTjAiEi3NFY6ZChXuvHJsX0utpjbbPvQWrHWwu2Kiu4paDdJW9xhvVkm1z369uVdec-maW3CUYFAch0NE2UUTHsgOqfRgWyW4en7IVWI83XnA7KDwBhxIouJ7zWj9UgPuzWmXPFDRFAfQgaQ3Ouyg2kr2kHTAqzyQ8pu_0i_aLWWm-79pOQiZRl8Mj0w25C8iQxoDrgseYQiZ3lEocT071UpSn9UFb2CooqEDjVZy6WNE6f8CiMQ11L2OFuKccw9FETZ0ydar7GicKl0xhihvXGX2Ru8rqRTWfScion8lH9CmTj6lNHbqJ5K94Yyi3kdlF2Yjpcn1d8r8MmJYOgztpFtKHCMa6FUPtA6zZxs0fXVkZFKb6QJGmujVDGgF5oDFO2IURjkxxK4fkU76x7vAtjXGxyXoSgHSGNdEsJrKn2kWxKW4D72fav0gfRvnrFLMrO2uKO0DZxyMlVMmN5Tut5GzIrk4t0EHSo0FCDl2fUjjP6DcQwFpZrojI3qUZxaA0sZnVsrslMvs3O0na8RCuQszZ2r01jPzPDE7V9H3T4kdgcHTuyyEdqFavWr5vAUMTqdc9XtcgSWp2MTrJzgPqSC2H2oArpz-te4gX9-Ch_rTCQG3DWJGeqXxuwSP-PCV-jpSr2ljmooZP-T-PJxIO","method":"GET","service_name":"plantuml","action":"request_received","bytes_read":"0","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36"},"logger":"io.kroki.server.service.DiagramHandler","message":"Request received GET /plantuml/svg/eNqFVN9r01AUfs9fcd1TC5vDXy9DZMWijAnCihMhULL02kXbm5KkDhRh7Zx7UOz0cQNFUJ9jbWbWru2_cO5_5Hdvsi1bM-xDc3KT853v-845WfYDywvazYYROEGDM_pMIf2lCfXlBzpmdIJwIHdoJD-ySnl1iT1z3ZWacc0RdqNd4-yu5dmbTtMK-GLpNLpnGA89t91yRL2AnHk2h_-5IntjMPxKrVbDsa3AcUX1vttsuYKLoFCpvdTIeFlfVTFTqHQGQn3ZpYncphjUQvke12NTyA5FOOtTjAiEi3NFY6ZChXuvHJsX0utpjbbPvQWrHWwu2Kiu4paDdJW9xhvVkm1z369uVdec-maW3CUYFAch0NE2UUTHsgOqfRgWyW4en7IVWI83XnA7KDwBhxIouJ7zWj9UgPuzWmXPFDRFAfQgaQ3Ouyg2kr2kHTAqzyQ8pu_0i_aLWWm-79pOQiZRl8Mj0w25C8iQxoDrgseYQiZ3lEocT071UpSn9UFb2CooqEDjVZy6WNE6f8CiMQ11L2OFuKccw9FETZ0ydar7GicKl0xhihvXGX2Ru8rqRTWfScion8lH9CmTj6lNHbqJ5K94Yyi3kdlF2Yjpcn1d8r8MmJYOgztpFtKHCMa6FUPtA6zZxs0fXVkZFKb6QJGmujVDGgF5oDFO2IURjkxxK4fkU76x7vAtjXGxyXoSgHSGNdEsJrKn2kWxKW4D72fav0gfRvnrFLMrO2uKO0DZxyMlVMmN5Tut5GzIrk4t0EHSo0FCDl2fUjjP6DcQwFpZrojI3qUZxaA0sZnVsrslMvs3O0na8RCuQszZ2r01jPzPDE7V9H3T4kdgcHTuyyEdqFavWr5vAUMTqdc9XtcgSWp2MTrJzgPqSC2H2oArpz-te4gX9-Ch_rTCQG3DWJGeqXxuwSP-PCV-jpSr2ljmooZP-T-PJxIO","context":"default"}
{"timestamp":"1612258801952","level":"INFO","thread":"vert.x-eventloop-thread-0","mdc":{"path":"/plantuml/svg/eNqFVN9r01AUfs9fcd1TC5vDXy9DZMWijAnCihMhULL02kXbm5KkDhRh7Zx7UOz0cQNFUJ9jbWbWru2_cO5_5Hdvsi1bM-xDc3KT853v-845WfYDywvazYYROEGDM_pMIf2lCfXlBzpmdIJwIHdoJD-ySnl1iT1z3ZWacc0RdqNd4-yu5dmbTtMK-GLpNLpnGA89t91yRL2AnHk2h_-5IntjMPxKrVbDsa3AcUX1vttsuYKLoFCpvdTIeFlfVTFTqHQGQn3ZpYncphjUQvke12NTyA5FOOtTjAiEi3NFY6ZChXuvHJsX0utpjbbPvQWrHWwu2Kiu4paDdJW9xhvVkm1z369uVdec-maW3CUYFAch0NE2UUTHsgOqfRgWyW4en7IVWI83XnA7KDwBhxIouJ7zWj9UgPuzWmXPFDRFAfQgaQ3Ouyg2kr2kHTAqzyQ8pu_0i_aLWWm-79pOQiZRl8Mj0w25C8iQxoDrgseYQiZ3lEocT071UpSn9UFb2CooqEDjVZy6WNE6f8CiMQ11L2OFuKccw9FETZ0ydar7GicKl0xhihvXGX2Ru8rqRTWfScion8lH9CmTj6lNHbqJ5K94Yyi3kdlF2Yjpcn1d8r8MmJYOgztpFtKHCMa6FUPtA6zZxs0fXVkZFKb6QJGmujVDGgF5oDFO2IURjkxxK4fkU76x7vAtjXGxyXoSgHSGNdEsJrKn2kWxKW4D72fav0gfRvnrFLMrO2uKO0DZxyMlVMmN5Tut5GzIrk4t0EHSo0FCDl2fUjjP6DcQwFpZrojI3qUZxaA0sZnVsrslMvs3O0na8RCuQszZ2r01jPzPDE7V9H3T4kdgcHTuyyEdqFavWr5vAUMTqdc9XtcgSWp2MTrJzgPqSC2H2oArpz-te4gX9-Ch_rTCQG3DWJGeqXxuwSP-PCV-jpSr2ljmooZP-T-PJxIO","took":"700","method":"GET","service_name":"plantuml","action":"convert","file_format":"svg","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36"},"logger":"io.kroki.server.service.DiagramHandler","message":"Convert took 700ms","context":"default"}
{"timestamp":"1612258801957","level":"ERROR","thread":"vert.x-eventloop-thread-0","mdc":{"error_message":"Syntax Error? (line: 4)","path":"/plantuml/svg/eNqFVN9r01AUfs9fcd1TC5vDXy9DZMWijAnCihMhULL02kXbm5KkDhRh7Zx7UOz0cQNFUJ9jbWbWru2_cO5_5Hdvsi1bM-xDc3KT853v-845WfYDywvazYYROEGDM_pMIf2lCfXlBzpmdIJwIHdoJD-ySnl1iT1z3ZWacc0RdqNd4-yu5dmbTtMK-GLpNLpnGA89t91yRL2AnHk2h_-5IntjMPxKrVbDsa3AcUX1vttsuYKLoFCpvdTIeFlfVTFTqHQGQn3ZpYncphjUQvke12NTyA5FOOtTjAiEi3NFY6ZChXuvHJsX0utpjbbPvQWrHWwu2Kiu4paDdJW9xhvVkm1z369uVdec-maW3CUYFAch0NE2UUTHsgOqfRgWyW4en7IVWI83XnA7KDwBhxIouJ7zWj9UgPuzWmXPFDRFAfQgaQ3Ouyg2kr2kHTAqzyQ8pu_0i_aLWWm-79pOQiZRl8Mj0w25C8iQxoDrgseYQiZ3lEocT071UpSn9UFb2CooqEDjVZy6WNE6f8CiMQ11L2OFuKccw9FETZ0ydar7GicKl0xhihvXGX2Ru8rqRTWfScion8lH9CmTj6lNHbqJ5K94Yyi3kdlF2Yjpcn1d8r8MmJYOgztpFtKHCMa6FUPtA6zZxs0fXVkZFKb6QJGmujVDGgF5oDFO2IURjkxxK4fkU76x7vAtjXGxyXoSgHSGNdEsJrKn2kWxKW4D72fav0gfRvnrFLMrO2uKO0DZxyMlVMmN5Tut5GzIrk4t0EHSo0FCDl2fUjjP6DcQwFpZrojI3qUZxaA0sZnVsrslMvs3O0na8RCuQszZ2r01jPzPDE7V9H3T4kdgcHTuyyEdqFavWr5vAUMTqdc9XtcgSWp2MTrJzgPqSC2H2oArpz-te4gX9-Ch_rTCQG3DWJGeqXxuwSP-PCV-jpSr2ljmooZP-T-PJxIO","method":"GET","action":"error","error_code":"400","failure_class_name":"io.kroki.server.error.BadRequestException","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36"},"logger":"io.kroki.server.error.ErrorHandler","message":"An error occurred","context":"default","exception":"io.kroki.server.error.BadRequestException: Syntax Error? (line: 4)\n\tat io.kroki.server.service.Plantuml.convert(Plantuml.java:219)\n\tat io.kroki.server.service.Plantuml.convert(Plantuml.java:190)\n\tat io.kroki.server.service.DiagramHandler.convert(DiagramHandler.java:152)\n\tat io.kroki.server.service.DiagramHandler.lambda$createGet$1(DiagramHandler.java:56)\n\tat io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1036)\n\tat io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:95)\n\tat io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:132)\n\tat io.kroki.server.service.DiagramHandler.lambda$createRequestReceived$0(DiagramHandler.java:38)\n\tat io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1036)\n\tat io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:131)\n\tat io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:132)\n\tat io.vertx.ext.web.handler.impl.CorsHandlerImpl.handle(CorsHandlerImpl.java:125)\n\tat io.vertx.ext.web.handler.impl.CorsHandlerImpl.handle(CorsHandlerImpl.java:38)\n\tat io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1036)\n\tat io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:131)\n\tat io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:132)\n\tat io.vertx.ext.web.impl.RouterImpl.handle(RouterImpl.java:54)\n\tat io.vertx.ext.web.impl.RouterImpl.handle(RouterImpl.java:36)\n\tat io.vertx.core.http.impl.WebSocketRequestHandler.handle(WebSocketRequestHandler.java:50)\n\tat io.vertx.core.http.impl.WebSocketRequestHandler.handle(WebSocketRequestHandler.java:32)\n\tat io.vertx.core.http.impl.Http1xServerConnection.handleMessage(Http1xServerConnection.java:136)\n\tat io.vertx.core.impl.ContextImpl.executeTask(ContextImpl.java:366)\n\tat io.vertx.core.impl.EventLoopContext.execute(EventLoopContext.java:43)\n\tat io.vertx.core.impl.ContextImpl.executeFromIO(ContextImpl.java:229)\n\tat io.vertx.core.net.impl.VertxHandler.channelRead(VertxHandler.java:163)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)\n\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)\n\tat io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93)\n\tat io.netty.handler.codec.http.websocketx.extensions.WebSocketServerExtensionHandler.channelRead(WebSocketServerExtensionHandler.java:101)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)\n\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)\n\tat io.vertx.core.http.impl.Http1xUpgradeToH2CHandler.channelRead(Http1xUpgradeToH2CHandler.java:109)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)\n\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)\n\tat io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324)\n\tat io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)\n\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)\n\tat io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)\n\tat io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)\n\tat io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)\n\tat io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714)\n\tat io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650)\n\tat io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576)\n\tat io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)\n\tat io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)\n\tat io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n\tat java.base/java.lang.Thread.run(Unknown Source)\n"}
{"timestamp":"1612258802184","level":"INFO","thread":"vert.x-eventloop-thread-0","mdc":{"path":"/plantuml/svg/eNqFVN9r01AUfs9fcd1TC5vDXy9DZMWijAnCihMhULL02kXbm5KkDhRh7Zx7UOz0cQNFUJ9jbWbWru2_cO5_5Hdvsi1bM-xDc3KT853v-845WfYDywvazYYROEGDM_pMIf2lCfXlBzpmdIJwIHdoJD-ySnl1iT1z3ZWacc0RdqNd4-yu5dmbTtMK-GLpNLpnGA89t91yRL2AnHk2h_-5IntjMPxKrVbDsa3AcUX1vttsuYKLoFCpvdTIeFlfVTFTqHQGQn3ZpYncphjUQvke12NTyA5FOOtTjAiEi3NFY6ZChXuvHJsX0utpjbbPvQWrHWwu2Kiu4paDdJW9xhvVkm1z369uVdec-maW3CUYFAch0NE2UUTHsgOqfRgWyW4en7IVWI83XnA7KDwBhxIouJ7zWj9UgPuzWmXPFDRFAfQgaQ3Ouyg2kr2kHTAqzyQ8pu_0i_aLWWm-79pOQiZRl8Mj0w25C8iQxoDrgseYQiZ3lEocT071UpSn9UFb2CooqEDjVZy6WNE6f8CiMQ11L2OFuKccw9FETZ0ydar7GicKl0xhihvXGX2Ru8rqRTWfScion8lH9CmTj6lNHbqJ5K94Yyi3kdlF2Yjpcn1d8r8MmJYOgztpFtKHCMa6FUPtA6zZxs0fXVkZFKb6QJGmujVDGgF5oDFO2IURjkxxK4fkU76x7vAtjXGxyXoSgHSGNdEsJrKn2kWxKW4D72fav0gfRvnrFLMrO2uKO0DZxyMlVMmN5Tut5GzIrk4t0EHSo0FCDl2fUjjP6DcQwFpZrojI3qUZxaA0sZnVsrslMvs3O0na8RCuQszZ2r01jPzPDE7V9H3T4kdgcHTuyyEdqFavWr5vAUMTqdc9XtcgSWp2MTrJzgPqSC2H2oArpz-te4gX9-Ch_rTCQG3DWJGeqXxuwSP-PCV-jpSr2ljmooZP-T-PJxIO","method":"GET","service_name":"plantuml","action":"request_received","bytes_read":"0","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36"},"logger":"io.kroki.server.service.DiagramHandler","message":"Request received GET /plantuml/svg/eNqFVN9r01AUfs9fcd1TC5vDXy9DZMWijAnCihMhULL02kXbm5KkDhRh7Zx7UOz0cQNFUJ9jbWbWru2_cO5_5Hdvsi1bM-xDc3KT853v-845WfYDywvazYYROEGDM_pMIf2lCfXlBzpmdIJwIHdoJD-ySnl1iT1z3ZWacc0RdqNd4-yu5dmbTtMK-GLpNLpnGA89t91yRL2AnHk2h_-5IntjMPxKrVbDsa3AcUX1vttsuYKLoFCpvdTIeFlfVTFTqHQGQn3ZpYncphjUQvke12NTyA5FOOtTjAiEi3NFY6ZChXuvHJsX0utpjbbPvQWrHWwu2Kiu4paDdJW9xhvVkm1z369uVdec-maW3CUYFAch0NE2UUTHsgOqfRgWyW4en7IVWI83XnA7KDwBhxIouJ7zWj9UgPuzWmXPFDRFAfQgaQ3Ouyg2kr2kHTAqzyQ8pu_0i_aLWWm-79pOQiZRl8Mj0w25C8iQxoDrgseYQiZ3lEocT071UpSn9UFb2CooqEDjVZy6WNE6f8CiMQ11L2OFuKccw9FETZ0ydar7GicKl0xhihvXGX2Ru8rqRTWfScion8lH9CmTj6lNHbqJ5K94Yyi3kdlF2Yjpcn1d8r8MmJYOgztpFtKHCMa6FUPtA6zZxs0fXVkZFKb6QJGmujVDGgF5oDFO2IURjkxxK4fkU76x7vAtjXGxyXoSgHSGNdEsJrKn2kWxKW4D72fav0gfRvnrFLMrO2uKO0DZxyMlVMmN5Tut5GzIrk4t0EHSo0FCDl2fUjjP6DcQwFpZrojI3qUZxaA0sZnVsrslMvs3O0na8RCuQszZ2r01jPzPDE7V9H3T4kdgcHTuyyEdqFavWr5vAUMTqdc9XtcgSWp2MTrJzgPqSC2H2oArpz-te4gX9-Ch_rTCQG3DWJGeqXxuwSP-PCV-jpSr2ljmooZP-T-PJxIO","context":"default"}
{"timestamp":"1612258802215","level":"INFO","thread":"vert.x-eventloop-thread-0","mdc":{"path":"/plantuml/svg/eNqFVN9r01AUfs9fcd1TC5vDXy9DZMWijAnCihMhULL02kXbm5KkDhRh7Zx7UOz0cQNFUJ9jbWbWru2_cO5_5Hdvsi1bM-xDc3KT853v-845WfYDywvazYYROEGDM_pMIf2lCfXlBzpmdIJwIHdoJD-ySnl1iT1z3ZWacc0RdqNd4-yu5dmbTtMK-GLpNLpnGA89t91yRL2AnHk2h_-5IntjMPxKrVbDsa3AcUX1vttsuYKLoFCpvdTIeFlfVTFTqHQGQn3ZpYncphjUQvke12NTyA5FOOtTjAiEi3NFY6ZChXuvHJsX0utpjbbPvQWrHWwu2Kiu4paDdJW9xhvVkm1z369uVdec-maW3CUYFAch0NE2UUTHsgOqfRgWyW4en7IVWI83XnA7KDwBhxIouJ7zWj9UgPuzWmXPFDRFAfQgaQ3Ouyg2kr2kHTAqzyQ8pu_0i_aLWWm-79pOQiZRl8Mj0w25C8iQxoDrgseYQiZ3lEocT071UpSn9UFb2CooqEDjVZy6WNE6f8CiMQ11L2OFuKccw9FETZ0ydar7GicKl0xhihvXGX2Ru8rqRTWfScion8lH9CmTj6lNHbqJ5K94Yyi3kdlF2Yjpcn1d8r8MmJYOgztpFtKHCMa6FUPtA6zZxs0fXVkZFKb6QJGmujVDGgF5oDFO2IURjkxxK4fkU76x7vAtjXGxyXoSgHSGNdEsJrKn2kWxKW4D72fav0gfRvnrFLMrO2uKO0DZxyMlVMmN5Tut5GzIrk4t0EHSo0FCDl2fUjjP6DcQwFpZrojI3qUZxaA0sZnVsrslMvs3O0na8RCuQszZ2r01jPzPDE7V9H3T4kdgcHTuyyEdqFavWr5vAUMTqdc9XtcgSWp2MTrJzgPqSC2H2oArpz-te4gX9-Ch_rTCQG3DWJGeqXxuwSP-PCV-jpSr2ljmooZP-T-PJxIO","took":"29","method":"GET","service_name":"plantuml","action":"convert","file_format":"svg","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36"},"logger":"io.kroki.server.service.DiagramHandler","message":"Convert took 29ms","context":"default"}
{"timestamp":"1612258802217","level":"ERROR","thread":"vert.x-eventloop-thread-0","mdc":{"error_message":"Syntax Error? (line: 4)","path":"/plantuml/svg/eNqFVN9r01AUfs9fcd1TC5vDXy9DZMWijAnCihMhULL02kXbm5KkDhRh7Zx7UOz0cQNFUJ9jbWbWru2_cO5_5Hdvsi1bM-xDc3KT853v-845WfYDywvazYYROEGDM_pMIf2lCfXlBzpmdIJwIHdoJD-ySnl1iT1z3ZWacc0RdqNd4-yu5dmbTtMK-GLpNLpnGA89t91yRL2AnHk2h_-5IntjMPxKrVbDsa3AcUX1vttsuYKLoFCpvdTIeFlfVTFTqHQGQn3ZpYncphjUQvke12NTyA5FOOtTjAiEi3NFY6ZChXuvHJsX0utpjbbPvQWrHWwu2Kiu4paDdJW9xhvVkm1z369uVdec-maW3CUYFAch0NE2UUTHsgOqfRgWyW4en7IVWI83XnA7KDwBhxIouJ7zWj9UgPuzWmXPFDRFAfQgaQ3Ouyg2kr2kHTAqzyQ8pu_0i_aLWWm-79pOQiZRl8Mj0w25C8iQxoDrgseYQiZ3lEocT071UpSn9UFb2CooqEDjVZy6WNE6f8CiMQ11L2OFuKccw9FETZ0ydar7GicKl0xhihvXGX2Ru8rqRTWfScion8lH9CmTj6lNHbqJ5K94Yyi3kdlF2Yjpcn1d8r8MmJYOgztpFtKHCMa6FUPtA6zZxs0fXVkZFKb6QJGmujVDGgF5oDFO2IURjkxxK4fkU76x7vAtjXGxyXoSgHSGNdEsJrKn2kWxKW4D72fav0gfRvnrFLMrO2uKO0DZxyMlVMmN5Tut5GzIrk4t0EHSo0FCDl2fUjjP6DcQwFpZrojI3qUZxaA0sZnVsrslMvs3O0na8RCuQszZ2r01jPzPDE7V9H3T4kdgcHTuyyEdqFavWr5vAUMTqdc9XtcgSWp2MTrJzgPqSC2H2oArpz-te4gX9-Ch_rTCQG3DWJGeqXxuwSP-PCV-jpSr2ljmooZP-T-PJxIO","method":"GET","action":"error","error_code":"400","failure_class_name":"io.kroki.server.error.BadRequestException","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36"},"logger":"io.kroki.server.error.ErrorHandler","message":"An error occurred","context":"default","exception":"io.kroki.server.error.BadRequestException: Syntax Error? (line: 4)\n\tat io.kroki.server.service.Plantuml.convert(Plantuml.java:219)\n\tat io.kroki.server.service.Plantuml.convert(Plantuml.java:190)\n\tat io.kroki.server.service.DiagramHandler.convert(DiagramHandler.java:152)\n\tat io.kroki.server.service.DiagramHandler.lambda$createGet$1(DiagramHandler.java:56)\n\tat io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1036)\n\tat io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:95)\n\tat io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:132)\n\tat io.kroki.server.service.DiagramHandler.lambda$createRequestReceived$0(DiagramHandler.java:38)\n\tat io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1036)\n\tat io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:131)\n\tat io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:132)\n\tat io.vertx.ext.web.handler.impl.CorsHandlerImpl.handle(CorsHandlerImpl.java:125)\n\tat io.vertx.ext.web.handler.impl.CorsHandlerImpl.handle(CorsHandlerImpl.java:38)\n\tat io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1036)\n\tat io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:131)\n\tat io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:132)\n\tat io.vertx.ext.web.impl.RouterImpl.handle(RouterImpl.java:54)\n\tat io.vertx.ext.web.impl.RouterImpl.handle(RouterImpl.java:36)\n\tat io.vertx.core.http.impl.WebSocketRequestHandler.handle(WebSocketRequestHandler.java:50)\n\tat io.vertx.core.http.impl.WebSocketRequestHandler.handle(WebSocketRequestHandler.java:32)\n\tat io.vertx.core.http.impl.Http1xServerConnection.handleMessage(Http1xServerConnection.java:136)\n\tat io.vertx.core.impl.ContextImpl.executeTask(ContextImpl.java:366)\n\tat io.vertx.core.impl.EventLoopContext.execute(EventLoopContext.java:43)\n\tat io.vertx.core.impl.ContextImpl.executeFromIO(ContextImpl.java:229)\n\tat io.vertx.core.net.impl.VertxHandler.channelRead(VertxHandler.java:163)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)\n\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)\n\tat io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93)\n\tat io.netty.handler.codec.http.websocketx.extensions.WebSocketServerExtensionHandler.channelRead(WebSocketServerExtensionHandler.java:101)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)\n\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)\n\tat io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324)\n\tat io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)\n\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)\n\tat io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)\n\tat io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)\n\tat io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)\n\tat io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714)\n\tat io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650)\n\tat io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576)\n\tat io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)\n\tat io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)\n\tat io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n\tat java.base/java.lang.Thread.run(Unknown Source)\n"}
Some extra info:
plantuml::sdk-hierarchy-v2-yooid.puml[svg]
Thanks, I can reproduce this issue!
!include <archimate/Archimate>
is unintentionally removed by the sanitizer. As a workaround, you can set the safe mode to UNSAFE
:
$ docker run -e KROKI_SAFE_MODE=unsafe -p8000:8000 yuzutech/kroki
Thanks for your efforts! With KROKI_SAFE_MODE=unsafe ArchiMate diagrams works well. Waiting kroki 0.11 release)
I have another one case.
Here in an diagram source code:
title Контекст интеграции систем TC и Yoo
!include <C4/C4_Container>
Person_Ext(User, "User", "Пользователь сервисов TC и Yoo")
System_Ext(Pay, "Apple/Google")
Rel_R(User, Pay, "Использует для платежа банковской картой")
produces the following error in kroki server with KROKI_SAFE_MODE=unsafe setting on Ubuntu:
{"timestamp":"1612370450845","level":"ERROR","thread":"vert.x-eventloop-thread-0","mdc":{"error_message":"Cannot open URL (line: 0)","path":"/plantuml/svg/eNpNj8FKw0AQhu95ijEnBaGXehNBgngSStWDp1B0kUDcLckK5tZG0ItQvImXvkKsVmNr6yvMvJH_tCl4mvln_p3vX5_41BC_8pIXUvKUZzKUkrhu5LsMuJIH6JpkyLVuMf6hs2gPLrpw7sRZUwRbib1Mb68M7UftVtSOI2d9L7EmOwiCjslyZ-OjO799nptsl0ItISqPAZ7LE3-hTkDS49DKmgI9UaKuiMcyklKeMVzKI8-4-o8Pd4LTIvfmZgXp9ArcPuz3U4O2dezc9aqDq2vSuNukWNv4BYTfTQy5Bxf__4AcEebzJtSnAt-44gXYCIRHWr9Jo8gAHggA_gDbYbS7","method":"GET","action":"error","error_code":"400","failure_class_name":"io.kroki.server.error.BadRequestException","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.60 YaBrowser/20.12.0.1065 Yowser/2.5 Safari/537.36"},"logger":"io.kroki.server.error.ErrorHandler","message":"An error occurred","context":"default","exception":"io.kroki.server.error.BadRequestException: Cannot open URL (line: 0)\n\tat io.kroki.server.service.Plantuml.convert(Plantuml.java:219)\n\tat io.kroki.server.service.Plantuml.convert(Plantuml.java:190)\n\tat io.kroki.server.service.DiagramHandler.convert(DiagramHandler.java:152)\n\tat io.kroki.server.service.DiagramHandler.lambda$createGet$1(DiagramHandler.java:56)\n\tat io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1036)\n\tat io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:95)\n\tat io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:132)\n\tat io.kroki.server.service.DiagramHandler.lambda$createRequestReceived$0(DiagramHandler.java:38)\n\tat io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1036)\n\tat io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:131)\n\tat io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:132)\n\tat io.vertx.ext.web.handler.impl.CorsHandlerImpl.handle(CorsHandlerImpl.java:125)\n\tat io.vertx.ext.web.handler.impl.CorsHandlerImpl.handle(CorsHandlerImpl.java:38)\n\tat io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1036)\n\tat io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:131)\n\tat io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:132)\n\tat io.vertx.ext.web.impl.RouterImpl.handle(RouterImpl.java:54)\n\tat io.vertx.ext.web.impl.RouterImpl.handle(RouterImpl.java:36)\n\tat io.vertx.core.http.impl.WebSocketRequestHandler.handle(WebSocketRequestHandler.java:50)\n\tat io.vertx.core.http.impl.WebSocketRequestHandler.handle(WebSocketRequestHandler.java:32)\n\tat io.vertx.core.http.impl.Http1xServerConnection.handleMessage(Http1xServerConnection.java:136)\n\tat io.vertx.core.impl.ContextImpl.executeTask(ContextImpl.java:366)\n\tat io.vertx.core.impl.EventLoopContext.execute(EventLoopContext.java:43)\n\tat io.vertx.core.impl.ContextImpl.executeFromIO(ContextImpl.java:229)\n\tat io.vertx.core.net.impl.VertxHandler.channelRead(VertxHandler.java:163)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)\n\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)\n\tat io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93)\n\tat io.netty.handler.codec.http.websocketx.extensions.WebSocketServerExtensionHandler.channelRead(WebSocketServerExtensionHandler.java:101)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)\n\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)\n\tat io.vertx.core.http.impl.Http1xUpgradeToH2CHandler.channelRead(Http1xUpgradeToH2CHandler.java:109)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)\n\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)\n\tat io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324)\n\tat io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)\n\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)\n\tat io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)\n\tat io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)\n\tat io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)\n\tat io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714)\n\tat io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650)\n\tat io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576)\n\tat io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)\n\tat io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)\n\tat io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n\tat java.base/java.lang.Thread.run(Unknown Source)\n"}
It seems to be working on https://kroki.io
Not entirely sure why it throws Cannot open URL (line: 0)
.
Are you using the Docker image? Are you running the jar with java -jar
?
I cannot reproduce this issue on master using java -jar
and kroki.io is using the Docker image so it's either an "install" issue or this issue is now fixed on master.
If you still get this error on the next version (v0.11.0), feel to open a new issue with a reproduction case.
I had used Docker container image. I think I found the reason of an error: https://github.com/plantuml/plantuml-stdlib/issues/32
It would be great to implement support of entire https://plantuml.com/stdlib embedded into PlantUML. Looks strange: "!include <C4/C4_Container>" works well, but "!include <archimate/Archimate>" or "!include <aws/common>" does not.
I see the following error message in kroki logs when trying to use plantuml-stdlib: {"timestamp":"1612202036712","level":"ERROR","thread":"vert.x-eventloop-thread-0","mdc":{"error_message":"Syntax Error? (line: 9)","path":"/plantuml/svg/eNp....