0
votes

I'm trying to configure the SPRING_CLOUD_DATAFLOW_SERVER_CLOUDFOUNDRY_FREE_DISK_SPACE_PERCENTAGE env var for my dataflow server in pcf but it doesn't seem to ever clean up the maven artifacts. Here's a little background: I'm using Spring-Cloud-Dataflow-Server-Cloudfoundry 1.3.0.RELEASE. Currently my company limits the disk space to 2G for dataflow, naturally this fills up quickly and I'm no longer able to run my tasks (short lived batch jobs) until I restart dataflow server. Reading the documentation states that the disk space can be set to up to 10G of space, within the same section, is the mention of configuring the above stated environment variable. I've tried setting this as a User Provided Env Var through PCF and in my manifest (I actually deleted and cf pushed dataflow), although the setting seems to take, I never see the cleanup occur. I watch the disk space fill on the dataflow server and in the container using cf ssh . Setting a breakpoint in org.springframework.cloud.deployer.resource.support.LRUCleaningResourceLoader > getResource never gets triggered. Although, setting the env var to a threshold outside 0-100 does cause an assertion so I know the value is being set. What are the steps to see the cleanup occur and get this working? If I can get this working I will not need to have the disk space increased as I would set the percentage to 80-85% thus eliminating ever having to restart the server to clear the disk space.

Stacktrace that ensues when disk space full w/var set to 85: 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_162] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333) ~[spring-aop-4.3.13.RELEASE.jar!/:4.3.13.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) ~[spring-aop-4.3.13.RELEASE.jar!/:4.3.13.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at com.sun.proxy.$Proxy145.executeTask(Unknown Source) ~[na:na] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.cloud.dataflow.server.controller.TaskExecutionController.launch(TaskExecutionController.java:145) ~[spring-cloud-dataflow-server-core-1.3.0.RELEASE.jar!/:1.3.0.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at sun.reflect.GeneratedMethodAccessor402.invoke(Unknown Source) ~[na:na] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_162] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-4.3.13.RELEASE.jar!/:4.3.13.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) ~[spring-web-4.3.13.RELEASE.jar!/:4.3.13.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) ~[spring-webmvc-4.3.13.RELEASE.jar!/:4.3.13.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) ~[spring-webmvc-4.3.13.RELEASE.jar!/:4.3.13.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) ~[spring-webmvc-4.3.13.RELEASE.jar!/:4.3.13.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) ~[spring-webmvc-4.3.13.RELEASE.jar!/:4.3.13.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) ~[spring-webmvc-4.3.13.RELEASE.jar!/:4.3.13.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) ~[spring-webmvc-4.3.13.RELEASE.jar!/:4.3.13.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) [spring-webmvc-4.3.13.RELEASE.jar!/:4.3.13.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) [spring-webmvc-4.3.13.RELEASE.jar!/:4.3.13.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) [tomcat-embed-core-8.5.23.jar!/:8.5.23] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) [spring-webmvc-4.3.13.RELEASE.jar!/:4.3.13.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) [tomcat-embed-core-8.5.23.jar!/:8.5.23] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [tomcat-embed-core-8.5.23.jar!/:8.5.23] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.23.jar!/:8.5.23] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-embed-websocket-8.5.23.jar!/:8.5.23] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.23.jar!/:8.5.23] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55) [spring-boot-1.5.9.RELEASE.jar!/:1.5.9.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.13.RELEASE.jar!/:4.3.13.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:110) [spring-boot-actuator-1.5.9.RELEASE.jar!/:1.5.9.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:208) [spring-security-web-4.2.3.RELEASE.jar!/:4.2.3.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177) [spring-security-web-4.2.3.RELEASE.jar!/:4.2.3.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347) [spring-web-4.3.13.RELEASE.jar!/:4.3.13.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263) [spring-web-4.3.13.RELEASE.jar!/:4.3.13.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) [spring-web-4.3.13.RELEASE.jar!/:4.3.13.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:108) [spring-web-4.3.13.RELEASE.jar!/:4.3.13.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81) [spring-web-4.3.13.RELEASE.jar!/:4.3.13.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) [spring-web-4.3.13.RELEASE.jar!/:4.3.13.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:106) [spring-boot-actuator-1.5.9.RELEASE.jar!/:1.5.9.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.cloudfoundry.router.ClientCertificateMapper.doFilter(ClientCertificateMapper.java:77) [client_certificate_mapper-1.5.0_RELEASE.jar!/:1.5.0.RELEASE] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) [tomcat-embed-core-8.5.23.jar!/:8.5.23] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-8.5.23.jar!/:8.5.23] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478) [tomcat-embed-core-8.5.23.jar!/:8.5.23] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [tomcat-embed-core-8.5.23.jar!/:8.5.23] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) [tomcat-embed-core-8.5.23.jar!/:8.5.23] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.23.jar!/:8.5.23] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:677) [tomcat-embed-core-8.5.23.jar!/:8.5.23] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [tomcat-embed-core-8.5.23.jar!/:8.5.23] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) [tomcat-embed-core-8.5.23.jar!/:8.5.23] 2018-04-25T09:08:06.727-05:00 [APP/PROC/WEB/0] [OUT] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.23.jar!/:8.5.23] 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) [tomcat-embed-core-8.5.23.jar!/:8.5.23] 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) [tomcat-embed-core-8.5.23.jar!/:8.5.23] 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.23.jar!/:8.5.23] 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_162] 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_162] 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.23.jar!/:8.5.23] 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_162] 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: Could not transfer artifact 'my-artifact-group and name':jar:1.0.0-20180423.183158-2: No space left on device 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:444) ~[aether-impl-1.0.2.v20150114.jar!/:na] 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:246) ~[aether-impl-1.0.2.v20150114.jar!/:na] 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifacts(DefaultRepositorySystem.java:302) ~[aether-impl-1.0.2.v20150114.jar!/:na] 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.cloud.deployer.resource.maven.MavenArtifactResolver.resolve(MavenArtifactResolver.java:294) ~[spring-cloud-deployer-resource-maven-1.3.0.RELEASE.jar!/:1.3.0.RELEASE] 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] ... 88 common frames omitted 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact 'my-artifact-group and name':jar:1.0.0-20180423.183158-2: No space left on device 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] at org.eclipse.aether.internal.impl.DefaultArtifactResolver.getFile(DefaultArtifactResolver.java:491) ~[aether-impl-1.0.2.v20150114.jar!/:na] 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] at org.eclipse.aether.internal.impl.DefaultArtifactResolver.evaluateDownloads(DefaultArtifactResolver.java:621) ~[aether-impl-1.0.2.v20150114.jar!/:na] 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:535) ~[aether-impl-1.0.2.v20150114.jar!/:na] 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:421) ~[aether-impl-1.0.2.v20150114.jar!/:na] 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] ... 91 common frames omitted 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] Caused by: java.io.IOException: No space left on device 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] at java.io.FileOutputStream.writeBytes(Native Method) ~[na:1.8.0_162] 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] at java.io.FileOutputStream.write(FileOutputStream.java:326) ~[na:1.8.0_162] 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] at org.eclipse.aether.internal.impl.DefaultFileProcessor.copy(DefaultFileProcessor.java:184) ~[aether-impl-1.0.2.v20150114.jar!/:na] 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] at org.eclipse.aether.internal.impl.DefaultFileProcessor.copy(DefaultFileProcessor.java:154) ~[aether-impl-1.0.2.v20150114.jar!/:na] 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] at org.eclipse.aether.internal.impl.DefaultFileProcessor.copy(DefaultFileProcessor.java:136) ~[aether-impl-1.0.2.v20150114.jar!/:na] 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] at org.eclipse.aether.internal.impl.DefaultArtifactResolver.getFile(DefaultArtifactResolver.java:486) ~[aether-impl-1.0.2.v20150114.jar!/:na] 2018-04-25T09:08:06.728-05:00 [APP/PROC/WEB/0] [OUT] ... 94 common frames omitted

1
As a workaround to this issue, I've relocated my m2 directory to /dev/shm/.m2/repository then I scaled the app's memory to over 2G since this space is represented by the memory. It's been working fine, but would definitely like the env var to work, if not, this is what I'm going to use.fhdev25

1 Answers

0
votes

Setting a breakpoint in org.springframework.cloud.deployer.resource.support.LRUCleaningResourceLoader > getResource never gets triggered.

This at least confirms the LRUCleaningResourceLoader is not being used. Since you are debugging can you confirm the if LRUCleaningResourceLoaderBeanPostProcessor is invoked at all? The 1.3.0.RELEASE of SCDF CF server is expected to initialize the LRUCleaningResourceLoader via this bean post processor.