nkonev / multipart-graphql-demo

https://github.com/nkonev/multipart-spring-graphql
2 stars 2 forks source link

bug : Temporary file deletion bug occurs when version is changed(2.7.1 -> 2.7.7) #1

Open manijang2 opened 1 year ago

manijang2 commented 1 year ago

Hello, thank you for creating a module that allows file upload through GraphQL. Thanks to that, I was able to effectively utilize it in my personal project.

While applying it to my personal project, I encountered a bug and wanted to report it.

Bug Reproduction Environment

  1. The bug occurs in the 0.10.x branch.
  2. Change the Spring Boot version to 2.7.7 from 2.7.1
  3. Upload a file using the provided client in the project.

result

Error content

java.io.UncheckedIOException: Cannot delete C:\Users\seonm\AppData\Local\Temp\tomcat.8889.16118635762139039829\work\Tomcat\localhost\ROOT\upload_9058e19f_89fd_4f92_b126_dfb9e52ca140_00000002.tmp java.io.UncheckedIOException: Cannot delete C:\Users\seonm\AppData\Local\Temp\tomcat.8889.16118635762139039829\work\Tomcat\localhost\ROOT\upload_9058e19f_89fd_4f92_b126_dfb9e52ca140_00000002.tmp at org.apache.tomcat.util.http.fileupload.disk.DiskFileItem.delete(DiskFileItem.java:431) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.core.ApplicationPart.delete(ApplicationPart.java:54) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.connector.Request.recycle(Request.java:483) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.connector.CoyoteAdapter.log(CoyoteAdapter.java:515) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.connector.CoyoteAdapter.checkRecycled(CoyoteAdapter.java:539) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.http11.Http11Processor.recycle(Http11Processor.java:1426) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.AbstractProtocol$ConnectionHandler.release(AbstractProtocol.java:1098) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:1056) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1784) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at java.base/java.lang.Thread.run(Thread.java:1583) ~[na:na] Caused by: java.io.IOException: Cannot delete C:\Users\seonm\AppData\Local\Temp\tomcat.8889.16118635762139039829\work\Tomcat\localhost\ROOT\upload_9058e19f_89fd_4f92_b126_dfb9e52ca140_00000002.tmp ... 14 common frames omitted

full text of the error.

C:\Users\seonm.jdks\jbr-21\bin\java.exe -XX:TieredStopAtLevel=1 -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-Dmanagement.endpoints.jmx.exposure.include=*" -javaagent:C:\Users\seonm\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\231.9161.38\lib\idea_rt.jar=59844:C:\Users\seonm\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\231.9161.38\bin -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath C:\Users\seonm\IdeaProjects\multipart-graphql-demo\server-webmvc\target\classes;C:\Users\seonm.m2\repository\org\springframework\boot\spring-boot-starter-web\2.7.7\spring-boot-starter-web-2.7.7.jar;C:\Users\seonm.m2\repository\org\springframework\boot\spring-boot-starter\2.7.7\spring-boot-starter-2.7.7.jar;C:\Users\seonm.m2\repository\org\springframework\boot\spring-boot\2.7.7\spring-boot-2.7.7.jar;C:\Users\seonm.m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.7.7\spring-boot-autoconfigure-2.7.7.jar;C:\Users\seonm.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.7.7\spring-boot-starter-logging-2.7.7.jar;C:\Users\seonm.m2\repository\ch\qos\logback\logback-classic\1.2.11\logback-classic-1.2.11.jar;C:\Users\seonm.m2\repository\ch\qos\logback\logback-core\1.2.11\logback-core-1.2.11.jar;C:\Users\seonm.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.17.2\log4j-to-slf4j-2.17.2.jar;C:\Users\seonm.m2\repository\org\apache\logging\log4j\log4j-api\2.17.2\log4j-api-2.17.2.jar;C:\Users\seonm.m2\repository\org\slf4j\jul-to-slf4j\1.7.36\jul-to-slf4j-1.7.36.jar;C:\Users\seonm.m2\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;C:\Users\seonm.m2\repository\org\yaml\snakeyaml\1.30\snakeyaml-1.30.jar;C:\Users\seonm.m2\repository\org\springframework\boot\spring-boot-starter-json\2.7.7\spring-boot-starter-json-2.7.7.jar;C:\Users\seonm.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.13.4.2\jackson-databind-2.13.4.2.jar;C:\Users\seonm.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.13.4\jackson-annotations-2.13.4.jar;C:\Users\seonm.m2\repository\com\fasterxml\jackson\core\jackson-core\2.13.4\jackson-core-2.13.4.jar;C:\Users\seonm.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.13.4\jackson-datatype-jdk8-2.13.4.jar;C:\Users\seonm.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.13.4\jackson-datatype-jsr310-2.13.4.jar;C:\Users\seonm.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.13.4\jackson-module-parameter-names-2.13.4.jar;C:\Users\seonm.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\2.7.7\spring-boot-starter-tomcat-2.7.7.jar;C:\Users\seonm.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.70\tomcat-embed-core-9.0.70.jar;C:\Users\seonm.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.70\tomcat-embed-websocket-9.0.70.jar;C:\Users\seonm.m2\repository\org\springframework\spring-web\5.3.24\spring-web-5.3.24.jar;C:\Users\seonm.m2\repository\org\springframework\spring-webmvc\5.3.24\spring-webmvc-5.3.24.jar;C:\Users\seonm.m2\repository\org\springframework\spring-expression\5.3.24\spring-expression-5.3.24.jar;C:\Users\seonm.m2\repository\org\springframework\boot\spring-boot-starter-graphql\2.7.7\spring-boot-starter-graphql-2.7.7.jar;C:\Users\seonm.m2\repository\org\springframework\graphql\spring-graphql\1.0.3\spring-graphql-1.0.3.jar;C:\Users\seonm.m2\repository\name\nkonev\multipart-spring-graphql\multipart-spring-graphql\0.10.7\multipart-spring-graphql-0.10.7.jar;C:\Users\seonm.m2\repository\org\springframework\boot\spring-boot-starter-websocket\2.7.7\spring-boot-starter-websocket-2.7.7.jar;C:\Users\seonm.m2\repository\org\springframework\spring-messaging\5.3.24\spring-messaging-5.3.24.jar;C:\Users\seonm.m2\repository\org\springframework\spring-websocket\5.3.24\spring-websocket-5.3.24.jar;C:\Users\seonm.m2\repository\org\springframework\boot\spring-boot-starter-security\2.7.7\spring-boot-starter-security-2.7.7.jar;C:\Users\seonm.m2\repository\org\springframework\spring-aop\5.3.24\spring-aop-5.3.24.jar;C:\Users\seonm.m2\repository\org\springframework\security\spring-security-config\5.7.6\spring-security-config-5.7.6.jar;C:\Users\seonm.m2\repository\org\springframework\security\spring-security-core\5.7.6\spring-security-core-5.7.6.jar;C:\Users\seonm.m2\repository\org\springframework\security\spring-security-crypto\5.7.6\spring-security-crypto-5.7.6.jar;C:\Users\seonm.m2\repository\org\springframework\security\spring-security-web\5.7.6\spring-security-web-5.7.6.jar;C:\Users\seonm.m2\repository\org\springframework\boot\spring-boot-starter-validation\2.7.7\spring-boot-starter-validation-2.7.7.jar;C:\Users\seonm.m2\repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.70\tomcat-embed-el-9.0.70.jar;C:\Users\seonm.m2\repository\org\hibernate\validator\hibernate-validator\6.2.5.Final\hibernate-validator-6.2.5.Final.jar;C:\Users\seonm.m2\repository\jakarta\validation\jakarta.validation-api\2.0.2\jakarta.validation-api-2.0.2.jar;C:\Users\seonm.m2\repository\org\jboss\logging\jboss-logging\3.4.3.Final\jboss-logging-3.4.3.Final.jar;C:\Users\seonm.m2\repository\com\fasterxml\classmate\1.5.1\classmate-1.5.1.jar;C:\Users\seonm.m2\repository\org\springframework\cloud\spring-cloud-starter-sleuth\3.1.3\spring-cloud-starter-sleuth-3.1.3.jar;C:\Users\seonm.m2\repository\org\springframework\cloud\spring-cloud-starter\3.1.3\spring-cloud-starter-3.1.3.jar;C:\Users\seonm.m2\repository\org\springframework\cloud\spring-cloud-context\3.1.3\spring-cloud-context-3.1.3.jar;C:\Users\seonm.m2\repository\org\springframework\cloud\spring-cloud-commons\3.1.3\spring-cloud-commons-3.1.3.jar;C:\Users\seonm.m2\repository\org\springframework\security\spring-security-rsa\1.0.10.RELEASE\spring-security-rsa-1.0.10.RELEASE.jar;C:\Users\seonm.m2\repository\org\bouncycastle\bcpkix-jdk15on\1.68\bcpkix-jdk15on-1.68.jar;C:\Users\seonm.m2\repository\org\bouncycastle\bcprov-jdk15on\1.68\bcprov-jdk15on-1.68.jar;C:\Users\seonm.m2\repository\org\springframework\boot\spring-boot-starter-aop\2.7.7\spring-boot-starter-aop-2.7.7.jar;C:\Users\seonm.m2\repository\org\aspectj\aspectjweaver\1.9.7\aspectjweaver-1.9.7.jar;C:\Users\seonm.m2\repository\org\springframework\cloud\spring-cloud-sleuth-autoconfigure\3.1.3\spring-cloud-sleuth-autoconfigure-3.1.3.jar;C:\Users\seonm.m2\repository\org\springframework\cloud\spring-cloud-sleuth-instrumentation\3.1.3\spring-cloud-sleuth-instrumentation-3.1.3.jar;C:\Users\seonm.m2\repository\org\springframework\cloud\spring-cloud-sleuth-api\3.1.3\spring-cloud-sleuth-api-3.1.3.jar;C:\Users\seonm.m2\repository\org\aspectj\aspectjrt\1.9.7\aspectjrt-1.9.7.jar;C:\Users\seonm.m2\repository\org\springframework\cloud\spring-cloud-sleuth-brave\3.1.3\spring-cloud-sleuth-brave-3.1.3.jar;C:\Users\seonm.m2\repository\io\zipkin\brave\brave\5.13.9\brave-5.13.9.jar;C:\Users\seonm.m2\repository\io\zipkin\brave\brave-context-slf4j\5.13.9\brave-context-slf4j-5.13.9.jar;C:\Users\seonm.m2\repository\io\zipkin\brave\brave-instrumentation-messaging\5.13.9\brave-instrumentation-messaging-5.13.9.jar;C:\Users\seonm.m2\repository\io\zipkin\brave\brave-instrumentation-rpc\5.13.9\brave-instrumentation-rpc-5.13.9.jar;C:\Users\seonm.m2\repository\io\zipkin\brave\brave-instrumentation-spring-rabbit\5.13.9\brave-instrumentation-spring-rabbit-5.13.9.jar;C:\Users\seonm.m2\repository\io\zipkin\brave\brave-instrumentation-kafka-clients\5.13.9\brave-instrumentation-kafka-clients-5.13.9.jar;C:\Users\seonm.m2\repository\io\zipkin\brave\brave-instrumentation-kafka-streams\5.13.9\brave-instrumentation-kafka-streams-5.13.9.jar;C:\Users\seonm.m2\repository\io\zipkin\brave\brave-instrumentation-httpclient\5.13.9\brave-instrumentation-httpclient-5.13.9.jar;C:\Users\seonm.m2\repository\io\zipkin\brave\brave-instrumentation-http\5.13.9\brave-instrumentation-http-5.13.9.jar;C:\Users\seonm.m2\repository\io\zipkin\brave\brave-instrumentation-httpasyncclient\5.13.9\brave-instrumentation-httpasyncclient-5.13.9.jar;C:\Users\seonm.m2\repository\io\zipkin\brave\brave-instrumentation-jms\5.13.9\brave-instrumentation-jms-5.13.9.jar;C:\Users\seonm.m2\repository\io\zipkin\brave\brave-instrumentation-mongodb\5.13.9\brave-instrumentation-mongodb-5.13.9.jar;C:\Users\seonm.m2\repository\io\zipkin\aws\brave-propagation-aws\0.21.3\brave-propagation-aws-0.21.3.jar;C:\Users\seonm.m2\repository\io\zipkin\reporter2\zipkin-reporter-metrics-micrometer\2.16.3\zipkin-reporter-metrics-micrometer-2.16.3.jar;C:\Users\seonm.m2\repository\io\zipkin\reporter2\zipkin-reporter\2.16.3\zipkin-reporter-2.16.3.jar;C:\Users\seonm.m2\repository\io\zipkin\zipkin2\zipkin\2.23.2\zipkin-2.23.2.jar;C:\Users\seonm.m2\repository\org\apache\commons\commons-lang3\3.12.0\commons-lang3-3.12.0.jar;C:\Users\seonm.m2\repository\org\slf4j\slf4j-api\1.7.36\slf4j-api-1.7.36.jar;C:\Users\seonm.m2\repository\org\springframework\spring-core\5.3.24\spring-core-5.3.24.jar;C:\Users\seonm.m2\repository\org\springframework\spring-jcl\5.3.24\spring-jcl-5.3.24.jar;C:\Users\seonm.m2\repository\org\springframework\spring-beans\5.3.24\spring-beans-5.3.24.jar;C:\Users\seonm.m2\repository\io\projectreactor\reactor-core\3.4.26\reactor-core-3.4.26.jar;C:\Users\seonm.m2\repository\org\reactivestreams\reactive-streams\1.0.4\reactive-streams-1.0.4.jar;C:\Users\seonm.m2\repository\com\graphql-java\graphql-java\18.3\graphql-java-18.3.jar;C:\Users\seonm.m2\repository\com\graphql-java\java-dataloader\3.1.2\java-dataloader-3.1.2.jar;C:\Users\seonm.m2\repository\org\antlr\antlr4-runtime\4.9.3\antlr4-runtime-4.9.3.jar;C:\Users\seonm.m2\repository\org\springframework\spring-context\5.3.24\spring-context-5.3.24.jar com.example.graphql.demo.WebmvcServerApplication

. _ _ /\ / '_ () \ \ \ \ ( ( )\ | ' | '| | ' \/ ` | \ \ \ \ \/ _)| |)| | | | | || (| | ) ) ) ) ' |__| .|| ||| |\, | / / / / =========|_|==============|__/=//// :: Spring Boot :: (v2.7.7)

2023-07-19 14:36:35.900 INFO [,,] 16968 --- [ main] c.e.g.demo.WebmvcServerApplication : Starting WebmvcServerApplication using Java 21 on KIM-SeonMan with PID 16968 (C:\Users\seonm\IdeaProjects\multipart-graphql-demo\server-webmvc\target\classes started by seonm in C:\Users\seonm\IdeaProjects\multipart-graphql-demo) 2023-07-19 14:36:35.902 INFO [,,] 16968 --- [ main] c.e.g.demo.WebmvcServerApplication : No active profile set, falling back to 1 default profile: "default" 2023-07-19 14:36:36.531 INFO [,,] 16968 --- [ main] o.s.cloud.context.scope.GenericScope : BeanFactory id=f706a767-6d4c-3be5-bef8-625b285f30f5 2023-07-19 14:36:37.035 INFO [,,] 16968 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8889 (http) 2023-07-19 14:36:37.042 INFO [,,] 16968 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2023-07-19 14:36:37.042 INFO [,,] 16968 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.70] 2023-07-19 14:36:37.128 INFO [,,] 16968 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2023-07-19 14:36:37.128 INFO [,,] 16968 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1189 ms 2023-07-19 14:36:37.439 WARN [,,] 16968 --- [ main] o.s.security.core.userdetails.User : User.withDefaultPasswordEncoder() is considered unsafe for production and is only intended for sample applications. 2023-07-19 14:36:37.667 INFO [,,] 16968 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@44da7eb3, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@5e69cf07, org.springframework.security.web.context.SecurityContextPersistenceFilter@6a7a1a0d, org.springframework.security.web.header.HeaderWriterFilter@7f5ce33e, org.springframework.security.web.authentication.logout.LogoutFilter@698d6d30, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@790ac3e0, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@f03ee8f, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@7404ddca, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@3d512652, org.springframework.security.web.session.SessionManagementFilter@a457c2b, org.springframework.security.web.access.ExceptionTranslationFilter@5c70d7f0, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@5546e754] 2023-07-19 14:36:38.271 INFO [,,] 16968 --- [ main] s.b.a.g.s.GraphQlWebMvcAutoConfiguration : GraphQL endpoint HTTP POST /graphql 2023-07-19 14:36:38.377 INFO [,,] 16968 --- [ main] s.b.a.g.s.GraphQlWebMvcAutoConfiguration : GraphQL endpoint WebSocket /graphql 2023-07-19 14:36:39.431 INFO [,,] 16968 --- [ main] o.s.cloud.commons.util.InetUtils : Cannot determine local hostname 2023-07-19 14:36:39.577 INFO [,,] 16968 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8889 (http) with context path '' 2023-07-19 14:36:40.600 INFO [,,] 16968 --- [ main] o.s.cloud.commons.util.InetUtils : Cannot determine local hostname 2023-07-19 14:36:40.617 INFO [,,] 16968 --- [ main] c.e.g.demo.WebmvcServerApplication : Started WebmvcServerApplication in 6.021 seconds (JVM running for 6.532) 2023-07-19 14:36:45.574 INFO [,d4caf70d7387a1d6,d4caf70d7387a1d6] 16968 --- [nio-8889-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2023-07-19 14:36:45.574 INFO [,d4caf70d7387a1d6,d4caf70d7387a1d6] 16968 --- [nio-8889-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2023-07-19 14:36:45.576 INFO [,d4caf70d7387a1d6,d4caf70d7387a1d6] 16968 --- [nio-8889-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 2 ms 2023-07-19 14:36:45.704 INFO [,d4caf70d7387a1d6,d4caf70d7387a1d6] 16968 --- [nio-8889-exec-1] com.example.graphql.demo.FileController : Upload file: name=foo.txt 2023-07-19 14:36:45.705 INFO [,d4caf70d7387a1d6,d4caf70d7387a1d6] 16968 --- [nio-8889-exec-1] com.example.graphql.demo.FileController : Upload file: name=bar.txt 2023-07-19 14:36:45.743 ERROR [,,] 16968 --- [nio-8889-exec-1] o.apache.coyote.http11.Http11Processor : null

java.io.UncheckedIOException: Cannot delete C:\Users\seonm\AppData\Local\Temp\tomcat.8889.16118635762139039829\work\Tomcat\localhost\ROOT\upload_9058e19f_89fd_4f92_b126_dfb9e52ca140_00000002.tmp at org.apache.tomcat.util.http.fileupload.disk.DiskFileItem.delete(DiskFileItem.java:431) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.core.ApplicationPart.delete(ApplicationPart.java:54) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.connector.Request.recycle(Request.java:483) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.connector.CoyoteAdapter.asyncDispatch(CoyoteAdapter.java:307) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.AbstractProcessor.dispatch(AbstractProcessor.java:241) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:59) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:891) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1784) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at java.base/java.lang.Thread.run(Thread.java:1583) ~[na:na] Caused by: java.io.IOException: Cannot delete C:\Users\seonm\AppData\Local\Temp\tomcat.8889.16118635762139039829\work\Tomcat\localhost\ROOT\upload_9058e19f_89fd_4f92_b126_dfb9e52ca140_00000002.tmp ... 13 common frames omitted

2023-07-19 14:36:45.744 ERROR [,,] 16968 --- [nio-8889-exec-1] o.a.coyote.http11.Http11NioProtocol : Error reading request, ignored

java.io.UncheckedIOException: Cannot delete C:\Users\seonm\AppData\Local\Temp\tomcat.8889.16118635762139039829\work\Tomcat\localhost\ROOT\upload_9058e19f_89fd_4f92_b126_dfb9e52ca140_00000002.tmp at org.apache.tomcat.util.http.fileupload.disk.DiskFileItem.delete(DiskFileItem.java:431) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.core.ApplicationPart.delete(ApplicationPart.java:54) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.connector.Request.recycle(Request.java:483) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.connector.CoyoteAdapter.log(CoyoteAdapter.java:515) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.connector.CoyoteAdapter.checkRecycled(CoyoteAdapter.java:539) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.http11.Http11Processor.recycle(Http11Processor.java:1426) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.AbstractProtocol$ConnectionHandler.release(AbstractProtocol.java:1098) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:1015) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1784) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at java.base/java.lang.Thread.run(Thread.java:1583) ~[na:na] Caused by: java.io.IOException: Cannot delete C:\Users\seonm\AppData\Local\Temp\tomcat.8889.16118635762139039829\work\Tomcat\localhost\ROOT\upload_9058e19f_89fd_4f92_b126_dfb9e52ca140_00000002.tmp ... 14 common frames omitted

2023-07-19 14:36:45.744 ERROR [,,] 16968 --- [nio-8889-exec-1] org.apache.tomcat.util.net.NioEndpoint : Error running socket processor

java.io.UncheckedIOException: Cannot delete C:\Users\seonm\AppData\Local\Temp\tomcat.8889.16118635762139039829\work\Tomcat\localhost\ROOT\upload_9058e19f_89fd_4f92_b126_dfb9e52ca140_00000002.tmp at org.apache.tomcat.util.http.fileupload.disk.DiskFileItem.delete(DiskFileItem.java:431) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.core.ApplicationPart.delete(ApplicationPart.java:54) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.connector.Request.recycle(Request.java:483) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.connector.CoyoteAdapter.log(CoyoteAdapter.java:515) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.connector.CoyoteAdapter.checkRecycled(CoyoteAdapter.java:539) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.http11.Http11Processor.recycle(Http11Processor.java:1426) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.AbstractProtocol$ConnectionHandler.release(AbstractProtocol.java:1098) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:1056) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1784) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at java.base/java.lang.Thread.run(Thread.java:1583) ~[na:na] Caused by: java.io.IOException: Cannot delete C:\Users\seonm\AppData\Local\Temp\tomcat.8889.16118635762139039829\work\Tomcat\localhost\ROOT\upload_9058e19f_89fd_4f92_b126_dfb9e52ca140_00000002.tmp ... 14 common frames omitted

concluding

Here is my Github repository where I reproduced the bug. Please note if the bug cannot be reproduced. https://github.com/manijang2/multipart-graphql-demo/tree/0.10.x I want to fix the bug and make a pull request, but I just can't understand the code. Please fix the bug. thank you

nkonev commented 1 year ago

Please try the last version of Spring Boot - 2.7.13

I looked at your stacktraces, nothing is related to this project.

Looks like something with tomcat or (wrong) permissions on your temp directory. Maybe changed tomcat version along with Spring Boot update introduced this bug. You can play with tomcat version.

Unfortunately I don't have a Windows machine, I cannot reproduce. On my Fedora Linux 37 with Spring Boot 2.7.7 this project works fine.

Here is tomcat changelog https://tomcat.apache.org/tomcat-9.0-doc/changelog.html Here is tomcat versions in 2.7.1 https://docs.spring.io/spring-boot/docs/2.7.1/reference/html/dependency-versions.html in 2.7.7 https://docs.spring.io/spring-boot/docs/2.7.7/reference/html/dependency-versions.html

manijang2 commented 1 year ago

I tested it through the spring.servlet.multipart.location property, but it didn't work.

Let's test on mac and linux with the same code.

I will write additional comments after testing.