From 3bb79fe07174b49f72fd039b94a72f8af5a04efb Mon Sep 17 00:00:00 2001 From: Szabolcs Hubai Date: Thu, 9 Jan 2025 01:58:43 +0100 Subject: [PATCH] replay-tests: add (now fixed) example for classpath with custom tmpDir This was (unintentionally?) fixed in PR #524. For reference, the original description is below. Looks like it never worked since its debut in commit cfe9ff10df56 ("load "errors/40x.html" templates from classpath"). The serve500 is caused by the "missing" meta.html template, and then the NPE is caused by the "missing" errors/500.html template: 02:52:45,238 TRACE [play.server.netty4.PlayHandler] ~ serve500: begin 02:52:45,240 ERROR [play.server.netty4.PlayHandler] ~ Internal Server Error (500) for GET / (GTRuntimeExceptionWithSourceInfo) play.template2.exceptions.GTRuntimeExceptionWithSourceInfo: Cannot find template ./meta.html at /tmp/hello.html.(line:6) at play.template2.GTJavaBase.internalRenderTemplate(GTJavaBase.java:146) at play.template2.GTJavaBase.internalRenderTemplate(GTJavaBase.java:110) at play.modules.gtengineplugin.gt_integration.GTJavaBase1xImpl.internalRenderTemplate(GTJavaBase1xImpl.java:96) at play.template2.GTJavaBase.renderTemplate(GTJavaBase.java:104) at play.modules.gtengineplugin.GTTemplate.renderGTTemplate(GTTemplate.java:67) at play.modules.gtengineplugin.GTTemplate.internalGTRender(GTTemplate.java:54) at play.modules.gtengineplugin.GTTemplate.internalRender(GTTemplate.java:38) at play.modules.gtengineplugin.GTTemplate.render(GTTemplate.java:73) at play.rebel.View.renderView(View.java:71) at play.rebel.View.apply(View.java:50) at play.mvc.ActionInvoker.applyResult(ActionInvoker.java:191) at play.mvc.ActionInvoker.invoke(ActionInvoker.java:158) at play.server.netty4.PlayHandler$Netty4Invocation.execute(PlayHandler.java:278) at play.server.netty4.PlayHandler$Netty4Invocation.lambda$run$0(PlayHandler.java:247) at play.db.jpa.JPA.withTransaction(JPA.java:271) at play.db.jpa.JPA.withinFilter(JPA.java:172) at play.server.netty4.PlayHandler$Netty4Invocation.run(PlayHandler.java:245) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840) Caused by: play.template2.exceptions.GTTemplateRuntimeException: Cannot find template ./meta.html at play.template2.compile.GTInternalFastTags.tag_include(GTInternalFastTags.java:119) ... 24 more 02:52:45,242 ERROR [play.server.netty4.PlayHandler] ~ Error during the 500 response generation java.lang.NullPointerException: Cannot invoke "java.io.File.getAbsolutePath()" because "file" is null at play.Play.relativePath(Play.java:376) at play.modules.gtengineplugin.TemplateLoader.load(TemplateLoader.java:69) at play.modules.gtengineplugin.GTEnginePlugin.loadTemplate(GTEnginePlugin.java:50) at play.plugins.PluginCollection.lambda$loadTemplate$29(PluginCollection.java:340) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1602) at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129) at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647) at play.plugins.PluginCollection.loadTemplate(PluginCollection.java:342) at play.templates.TemplateLoader.load(TemplateLoader.java:35) at play.templates.TemplateLoader.loadTemplateFromClasspath(TemplateLoader.java:95) at play.templates.TemplateLoader.load(TemplateLoader.java:82) at play.server.ServerHelper.generateErrorResponse(ServerHelper.java:83) at play.server.netty4.PlayHandler.serve500(PlayHandler.java:625) at play.server.netty4.PlayHandler$Netty4Invocation.run(PlayHandler.java:260) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840) 02:52:45,242 TRACE [play.server.netty4.PlayHandler] ~ serve500: end Refs: a6db7e148e94 ("fix concurrency issue in TemplateLoader") --- .../multi-module-app/app/app/hello/HelloWorldApp.java | 4 +++- .../core/src/main/resources/conf/application.conf | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/replay-tests/multi-module-app/app/app/hello/HelloWorldApp.java b/replay-tests/multi-module-app/app/app/hello/HelloWorldApp.java index 1261e067..a8d60d0a 100644 --- a/replay-tests/multi-module-app/app/app/hello/HelloWorldApp.java +++ b/replay-tests/multi-module-app/app/app/hello/HelloWorldApp.java @@ -9,7 +9,9 @@ public class HelloWorldApp { public int start(String playId) { - Play play = new Play(new PropertiesConfLoader("conf/"), new DefaultBeanSource(), new CookieSessionStore()); + PropertiesConfLoader cl = new PropertiesConfLoader("conf/"); + Play play = new Play(cl, new DefaultBeanSource(), new CookieSessionStore()); + Play.configuration = cl.readConfiguration(playId); play.minimalInit(playId); Play.routes = ClasspathResource.file("conf/routes"); Play.pluginCollection.loadPlugins(); diff --git a/replay-tests/multi-module-app/core/src/main/resources/conf/application.conf b/replay-tests/multi-module-app/core/src/main/resources/conf/application.conf index 2a302a01..9fe82f50 100644 --- a/replay-tests/multi-module-app/core/src/main/resources/conf/application.conf +++ b/replay-tests/multi-module-app/core/src/main/resources/conf/application.conf @@ -8,4 +8,6 @@ http.port=9000 application.mode=DEV %test.application.mode=PROD +%test.play.tmp=my_tmpdir_in_the_workdir + ehcache.heapSizeInEntries=100 \ No newline at end of file