-
-
Notifications
You must be signed in to change notification settings - Fork 56
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Expected
workspace.json not changing (resetting) when no dsl has been edited.
Actual
We have a large model with various dsl files, something like Enterprise usage - part 6 | Patreon but larger.
When without modifying the dsl files, pressing the „home“ button in the Structurizr UI too fast multiple times the layout resets.
Bellow the console log, we use Structurizr lite with a JAR file (no docker).
Microsoft Windows [Version 10.0.19045.5737]
(c) Microsoft Corporation. All rights reserved.
C:\Users\<confidentional>\Downloads\enterprise>start.bat
2025-04-28T11:04:56.569+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : Starting StructurizrLite using Java 21.0.6 with PID 10592 (C:\Users\<confidentional>\Downloads\enterprise\structurizr-lite.war started by <confidentional> in C:\Users\<confidentional>\Downloads\enterprise)
2025-04-28T11:04:56.580+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : No active profile set, falling back to 1 default profile: "default"
2025-04-28T11:05:01.307+02:00 ERROR 10592 --- [ main] .s.l.c.s.ApacheLuceneSearchComponentImpl : java.nio.file.NoSuchFileException: architecture\.structurizr\index
2025-04-28T11:05:01.378+02:00 WARN 10592 --- [ main] o.a.l.i.v.VectorizationProvider : Java vector incubator module is not readable. For optimal vector performance, pass '--add-modules jdk.incubator.vector' to enable Vector API.
2025-04-28T11:05:01.910+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : Started StructurizrLite in 5.76 seconds (process running for 6.883)
2025-04-28T11:05:01.914+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : ***********************************************************************************
2025-04-28T11:05:01.914+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : _____ _ _ _
2025-04-28T11:05:01.914+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : / ____| | | | (_)
2025-04-28T11:05:01.915+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : | (___ | |_ _ __ _ _ ___| |_ _ _ _ __ _ _____ __
2025-04-28T11:05:01.915+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : \___ \| __| '__| | | |/ __| __| | | | '__| |_ / '__|
2025-04-28T11:05:01.915+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : ____) | |_| | | |_| | (__| |_| |_| | | | |/ /| |
2025-04-28T11:05:01.915+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : |_____/ \__|_| \__,_|\___|\__|\__,_|_| |_/___|_|
2025-04-28T11:05:01.915+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite :
2025-04-28T11:05:01.916+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : Structurizr Lite
2025-04-28T11:05:01.917+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : - build: 2025.03.28 (2025-03-28T10:28:32Z)
2025-04-28T11:05:01.919+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : - structurizr-java: v4.0.0
2025-04-28T11:05:01.934+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : - structurizr-dsl: v4.0.0
2025-04-28T11:05:01.935+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : - structurizr-graphviz: v4.0.0
2025-04-28T11:05:01.935+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite :
2025-04-28T11:05:01.936+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : Workspace path: C:\Users\<confidentional>\Downloads\enterprise\architecture
2025-04-28T11:05:01.936+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : Workspace filename: workspace[.dsl|.json]
2025-04-28T11:05:01.937+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : Workspaces: *
2025-04-28T11:05:01.938+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : URL:
2025-04-28T11:05:01.940+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : Auto-save interval: 5000ms
2025-04-28T11:05:01.940+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : Auto-refresh interval: 0ms
2025-04-28T11:05:01.940+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : Preview features: false
2025-04-28T11:05:01.943+02:00 WARN 10592 --- [ main] com.structurizr.lite.StructurizrLite : Cannot run program "dot": CreateProcess error=2, The system cannot find the file specified
2025-04-28T11:05:01.944+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : Graphviz (dot): false
2025-04-28T11:05:01.944+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : ***********************************************************************************
2025-04-28T11:05:01.945+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : MIT License
2025-04-28T11:05:01.945+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite :
2025-04-28T11:05:01.945+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : Copyright (c) 2024 Structurizr Limited
2025-04-28T11:05:01.946+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite :
2025-04-28T11:05:01.946+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : Permission is hereby granted, free of charge, to any person obtaining a copy
2025-04-28T11:05:01.947+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : of this software and associated documentation files (the "Software"), to deal
2025-04-28T11:05:01.947+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : in the Software without restriction, including without limitation the rights
2025-04-28T11:05:01.947+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
2025-04-28T11:05:01.947+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : copies of the Software, and to permit persons to whom the Software is
2025-04-28T11:05:01.948+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : furnished to do so, subject to the following conditions:
2025-04-28T11:05:01.948+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite :
2025-04-28T11:05:01.948+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : The above copyright notice and this permission notice shall be included in all
2025-04-28T11:05:01.948+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : copies or substantial portions of the Software.
2025-04-28T11:05:01.949+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite :
2025-04-28T11:05:01.949+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
2025-04-28T11:05:01.950+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
2025-04-28T11:05:01.950+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
2025-04-28T11:05:01.951+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
2025-04-28T11:05:01.951+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2025-04-28T11:05:01.951+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2025-04-28T11:05:01.952+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : SOFTWARE.
2025-04-28T11:05:01.952+02:00 INFO 10592 --- [ main] com.structurizr.lite.StructurizrLite : ***********************************************************************************
com.fasterxml.jackson.databind.exc.MismatchedInputException: No content to map due to end-of-input
at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1]
at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:5022)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4921)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3881)
at com.structurizr.io.json.JsonReader.read(JsonReader.java:39)
at com.structurizr.util.WorkspaceUtils.loadWorkspaceFromJson(WorkspaceUtils.java:29)
at com.structurizr.lite.component.workspace.FileSystemWorkspaceComponentImpl.loadWorkspaceFromJson(FileSystemWorkspaceComponentImpl.java:130)
at com.structurizr.lite.component.workspace.FileSystemWorkspaceComponentImpl.loadWorkspaceFromDsl(FileSystemWorkspaceComponentImpl.java:159)
at com.structurizr.lite.component.workspace.FileSystemWorkspaceComponentImpl.loadWorkspace(FileSystemWorkspaceComponentImpl.java:115)
at com.structurizr.lite.component.workspace.FileSystemWorkspaceComponentImpl.getWorkspaces(FileSystemWorkspaceComponentImpl.java:191)
at com.structurizr.lite.web.HomeController.showHomePage(HomeController.java:44)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:986)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:891)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
at java.base/java.lang.Thread.run(Thread.java:1583)
2025-04-28T11:05:22.150+02:00 ERROR 10592 --- [io-8080-exec-10] s.l.c.w.FileSystemWorkspaceComponentImpl : com.structurizr.io.WorkspaceReaderException: Could not read JSON
Steps to reproduce
- Take Enterprise part 6 zip file from patreon
- Remove the autolayout lr option from the DSL files.
- Adjust layout of diagrams.
- Visit http://localhost:8080/workspace/2/diagrams.
- Press Home button as fast as you can and observe log from console.
- If you see the message the layout of diagrams is lost.
In the part 6 example it is not that easy to reproduce, you have to click very fast. Our model is much larger, a double click often causes the issue.
Version/build information
Structurizr Lite
- build: 2025.03.28 (2025-03-28T10:28:32Z)
- structurizr-java: v4.0.0
- structurizr-dsl: v4.0.0
- structurizr-graphviz: v4.0.0
Java jdk-21.0.6 without Docker.
Severity
Minor
Priority
Low (I have no budget and there's no rush, please fix this for free)
More information
No response
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working