Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add test showing how to use @{...} and @{'...'} in html templates #524

Merged
merged 5 commits into from
Feb 12, 2025

Conversation

asolntsev
Copy link
Contributor

When handling @{'...'}, method Router.__reverseWithCheck() is used.

@xabolcs

@@ -39,5 +39,10 @@ <h1>Hello, ${who}!</h1>
<img id="img-from-play-local-file" src="/app/public/img/banksy-kyiv-7.jpeg" width="300"/>
</div>

<div>
<a id="repeat" href="@{controllers.HelloWorld.repeat(666)}">Repeat 666 times</a>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice trick! 👍
Thanks for the hint!

xabolcs added a commit to xabolcs/re-play1 that referenced this pull request Feb 12, 2025
Remove "play.templates.ExecutableTemplates#__reverseWithCheck*()"
methods as the only consumer
("play.templates.GroovyTemplateCompiler#action()") was gone
with this "play.templates.ExecutableTemplates" class' debut
in commit 185ca44.

Andrei's guess is that most of code in ExecutableTemplates
is not used anymore.
It was used in "default" groovy templates in Play1
which were replaced by "faster groovy templates" in Replay.

But leave that cleanup for later!

While at it, improve their counterpart in fastergt plugin
("GTJavaBase1xImpl" and "GTPreCompiler1xImpl" classes and PR replay-framework#524),
to use the other two methods: "__reverseWithCheck_absolute_true()"
and "__reverseWithCheck_absolute_false()".

Ref: https://github.com/replay-framework/replay/pull/506/files#r1951693547
Fixes: 185ca44 ("remove old html templates implementation play.templates.TemplateCompiler")
@xabolcs
Copy link
Collaborator

xabolcs commented Feb 12, 2025

Interesting!

Workflow failed on test :replay-tests:helloworld:uitest-javanet with:

114 tests completed, 1 failed

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':replay-tests:helloworld:uitest-javanet'.
> There were failing tests. See the report at: file:///home/runner/work/replay/replay/replay-tests/helloworld/build/reports/tests/uitest-javanet/index.html

The test output is:

Element not found {#link-to-image}
Expected: attribute href="/app/public/img/banksy-kyiv-7.jpeg"
Screenshot: file:/home/runner/work/replay/replay/replay-tests/helloworld/build/reports/tests/1739345133630.0.png
Page source: file:/home/runner/work/replay/replay/replay-tests/helloworld/build/reports/tests/1739345133630.0.html
Timeout: 4 s.
Caused by: NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"#link-to-image"}
	at app//com.codeborne.selenide.impl.WebElementSource.createElementNotFoundError(WebElementSource.java:68)
	at app//com.codeborne.selenide.impl.ElementFinder.createElementNotFoundError(ElementFinder.java:122)
	at app//com.codeborne.selenide.impl.WebElementSource.handleError(WebElementSource.java:119)
	at app//com.codeborne.selenide.impl.WebElementSource.checkConditionAndReturnElement(WebElementSource.java:102)
	at app//com.codeborne.selenide.impl.WebElementSource.checkCondition(WebElementSource.java:78)
	at app//com.codeborne.selenide.commands.Should.execute(Should.java:24)
	at app//com.codeborne.selenide.FluentCommand.execute(FluentCommand.java:27)
	at app//com.codeborne.selenide.FluentCommand.execute(FluentCommand.java:19)
	at app//com.codeborne.selenide.commands.Commands.execute(Commands.java:160)
	at app//com.codeborne.selenide.impl.SelenideElementProxy.dispatchAndRetry(SelenideElementProxy.java:131)
	at app//com.codeborne.selenide.impl.SelenideElementProxy.invoke(SelenideElementProxy.java:83)
	at app/jdk.proxy3/jdk.proxy3.$Proxy27.shouldHave(Unknown Source)
	at app//ui.hello.HelloWorldSpec.openHelloWorldPage(HelloWorldSpec.java:18)

And no outputs. 🤷

Testing locally (with ./gradlew -Dselenide.browser=firefox -Dselenide.headless=true uitest-javanet --info --rerun-tasks -x :replay-tests:liquibase-app:uitest-netty4 -x :replay-tests:liquibase-app:uitest-netty3 -x :replay-tests:liquibase-app:uitest-javanet (... yes, those liquibase-app:uitest-* excludes are another thing)) after cleaning up the tmp dirs (with find replay-tests/*/tmp -print -delete) shows the same error, but with interesting logs:

HelloWorldSpec > openHelloWorldPage() STANDARD_OUT
    09:56:31,180 INFO  [play.PlayLoggingSetup] ~ Logging configuration: jar:file:/path/to/re-play1/framework/build/libs/framework-2.6.4-SNAPSHOT.jar!/log4j.properties
    09:56:31,184 INFO  [play.Play] ~ Starting /path/to/re-play1/replay-tests/helloworld
    09:56:31,186 INFO  [play.plugins.PluginCollection] ~ Found plugin descriptors: [play.plugins]
    09:56:31,205 INFO  [play.Invoker] ~ Replay thread pool size: 17, mode: PROD
    09:56:31,220 INFO  [play.jobs.JobsPlugin] ~ Init jobs pool of size 10
    09:56:31,221 INFO  [play.db.jpa.JPAPlugin] ~ JPA initialized in 0 ms.
    09:56:31,469 INFO  [play.Play] ~ Application 'helloworld' is now started !
    09:56:31,476 INFO  [play.server.javanet.Server] ~ Listening for HTTP at http://0.0.0.0:46205 ...
    09:56:31,734 INFO  [com.codeborne.selenide.WebDriverThreadLocalContainer] ~ No webdriver is bound to current thread: 1 - let's create a new webdriver
    09:56:32,896 WARN  [org.openqa.selenium.firefox.FirefoxDriver] ~ CDP support for Firefox is deprecated and will be removed in future versions. Please switch to WebDriver BiDi.
    09:56:32,905 INFO  [com.codeborne.selenide.webdriver.BrowserResizer] ~ Set browser size to 1366x768
    09:56:33,174 INFO  [com.codeborne.selenide.webdriver.WebDriverFactory] ~ Selenide 7.7.1 / Selenium 4.28.0 / firefox 135.0 linux
    09:56:34,241 ERROR [play.server.javanet.PlayHandler] ~ serveStatic for request GET /img/benks-kyiv-4.jpeg
    java.lang.RuntimeException: java.nio.file.FileAlreadyExistsException: /path/to/re-play1/replay-tests/helloworld/tmp/errors/404.txt
        at play.templates.TemplateLoader.loadTemplateFromClasspath(TemplateLoader.java:93)
        at play.templates.TemplateLoader.load(TemplateLoader.java:82)
        at play.server.ServerHelper.generateNotFoundResponse(ServerHelper.java:73)
        at play.server.javanet.PlayHandler.serve404(PlayHandler.java:536)
        at play.server.javanet.PlayHandler.serveStatic(PlayHandler.java:605)
        at play.server.javanet.PlayHandler$JavaNetInvocation.init(PlayHandler.java:365)
        at play.server.javanet.PlayHandler$JavaNetInvocation.run(PlayHandler.java:405)
        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: java.nio.file.FileAlreadyExistsException: /path/to/re-play1/replay-tests/helloworld/tmp/errors/404.txt
        at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:94)
        at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
        at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
        at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:218)
        at java.base/java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:484)
        at java.base/java.nio.file.Files.newOutputStream(Files.java:228)
        at java.base/java.nio.file.Files.copy(Files.java:3160)
        at org.apache.commons.io.file.PathUtils.copy(PathUtils.java:279)
        at org.apache.commons.io.FileUtils.copyURLToFile(FileUtils.java:1121)
        at play.templates.TemplateLoader.loadTemplateFromClasspath(TemplateLoader.java:91)
        ... 12 more

HelloWorldSpec > openHelloWorldPage() FAILED
    Element not found {#link-to-image}
    Expected: attribute href="/app/public/img/banksy-kyiv-7.jpeg"
    Screenshot: file:/path/to/re-play1/replay-tests/helloworld/build/reports/tests/1739350598393.0.png
    Page source: file:/path/to/re-play1/replay-tests/helloworld/build/reports/tests/1739350598393.0.html
    Timeout: 4 s.
    Caused by: NoSuchElementException: Unable to locate element: #link-to-image
        at app//com.codeborne.selenide.impl.WebElementSource.createElementNotFoundError(WebElementSource.java:68)
        at app//com.codeborne.selenide.impl.ElementFinder.createElementNotFoundError(ElementFinder.java:122)
        at app//com.codeborne.selenide.impl.WebElementSource.handleError(WebElementSource.java:119)
        at app//com.codeborne.selenide.impl.WebElementSource.checkConditionAndReturnElement(WebElementSource.java:102)
        at app//com.codeborne.selenide.impl.WebElementSource.checkCondition(WebElementSource.java:78)
        at app//com.codeborne.selenide.commands.Should.execute(Should.java:24)
        at app//com.codeborne.selenide.FluentCommand.execute(FluentCommand.java:27)
        at app//com.codeborne.selenide.FluentCommand.execute(FluentCommand.java:19)
        at app//com.codeborne.selenide.commands.Commands.execute(Commands.java:160)
        at app//com.codeborne.selenide.impl.SelenideElementProxy.dispatchAndRetry(SelenideElementProxy.java:131)
        at app//com.codeborne.selenide.impl.SelenideElementProxy.invoke(SelenideElementProxy.java:83)
        at app/jdk.proxy3/jdk.proxy3.$Proxy27.shouldHave(Unknown Source)
        at app//ui.hello.HelloWorldSpec.openHelloWorldPage(HelloWorldSpec.java:18)

        Caused by:
        org.openqa.selenium.NoSuchElementException: Unable to locate element: #link-to-image

So how the hell can the org.apache.commons.io.FileUtils.copyURLToFile() and org.apache.commons.io.file.PathUtils.copy() with StandardCopyOption.REPLACE_EXISTING option throw java.nio.file.FileAlreadyExistsException?!
It is not a chown problem!
What's going on here?!

@xabolcs
Copy link
Collaborator

xabolcs commented Feb 12, 2025

So how the hell can the org.apache.commons.io.FileUtils.copyURLToFile() and org.apache.commons.io.file.PathUtils.copy() with StandardCopyOption.REPLACE_EXISTING option throw java.nio.file.FileAlreadyExistsException?!

Concurrency? 🙈

EDIT:
Yeah, the synchronized keyword helps. 🙄

EDIT2:
Disabling parallel execution within Gradle also helps.

$ git diff -- gradle.properties
diff --git a/gradle.properties b/gradle.properties
index 36549a3..a23e3a4 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,4 +1,4 @@
 org.gradle.daemon=false
 org.gradle.configureondemand=true
-org.gradle.parallel=true
+org.gradle.parallel=false
 org.gradle.jvmargs=-Xmx256m -Dfile.encoding=US-ASCII

@@ -11,5 +13,8 @@ public class HelloWorldSpec extends BaseSpec {
public void openHelloWorldPage() {
open("/");
$("h1").shouldHave(text("Hello, world!"));
$("#repeat").shouldHave(text("Repeat 666 times")).click();
$("h1").shouldHave(text("Hello, world #666!"));
$("#link-to-image").shouldHave(attribute("href", "/app/public/img/banksy-kyiv-7.jpeg")).click();
Copy link
Collaborator

@xabolcs xabolcs Feb 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you too lazy? Or just testing if I'm a good reviewer? I'm not! 😀

Suggested change
$("#link-to-image").shouldHave(attribute("href", "/app/public/img/banksy-kyiv-7.jpeg")).click();
$("#link-to-static-file").shouldHave(href("/public/img/banksy-kyiv-7.jpeg")).click();

Don't forget to change the imports!

-import static com.codeborne.selenide.Condition.attribute;
+import static com.codeborne.selenide.Condition.href;

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Copy link
Collaborator

@xabolcs xabolcs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM but only with the suggested test changes! 🙂

asolntsev pushed a commit that referenced this pull request Feb 12, 2025
Remove "play.templates.ExecutableTemplates#__reverseWithCheck*()"
methods as the only consumer
("play.templates.GroovyTemplateCompiler#action()") was gone
with this "play.templates.ExecutableTemplates" class' debut
in commit 185ca44.

Andrei's guess is that most of code in ExecutableTemplates
is not used anymore.
It was used in "default" groovy templates in Play1
which were replaced by "faster groovy templates" in Replay.

But leave that cleanup for later!

While at it, improve their counterpart in fastergt plugin
("GTJavaBase1xImpl" and "GTPreCompiler1xImpl" classes and PR #524),
to use the other two methods: "__reverseWithCheck_absolute_true()"
and "__reverseWithCheck_absolute_false()".

Ref: https://github.com/replay-framework/replay/pull/506/files#r1951693547
Fixes: 185ca44 ("remove old html templates implementation play.templates.TemplateCompiler")
import static com.codeborne.selenide.Condition.text;
import static com.codeborne.selenide.Selenide.$;
import static com.codeborne.selenide.Selenide.open;
import static com.codeborne.selenide.Selenide.sleep;
Copy link
Collaborator

@xabolcs xabolcs Feb 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That sleep would be an unused static import!

Suggested change
import static com.codeborne.selenide.Selenide.sleep;

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

@xabolcs
Copy link
Collaborator

xabolcs commented Feb 12, 2025

Workflow died again!

Gradle output:

 FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':replay-tests:helloworld:uitest-netty4'.
> There were failing tests. See the report at: file:///home/runner/work/replay/replay/replay-tests/helloworld/build/reports/tests/uitest-netty4/index.html

Test output:

TimeoutException: timeout: Timed out receiving message from renderer: 30.000
Screenshot: file:/home/runner/work/replay/replay/replay-tests/helloworld/build/reports/tests/1739384119093.0.png
Page source: file:/home/runner/work/replay/replay/replay-tests/helloworld/build/reports/tests/1739384119093.0.html
Timeout: 4 s.
Caused by: TimeoutException: timeout: Timed out receiving message from renderer: 30.000
	at app//com.codeborne.selenide.ex.UIAssertionError.wrapToUIAssertionError(UIAssertionError.java:121)
	at app//com.codeborne.selenide.ex.UIAssertionError.wrapThrowable(UIAssertionError.java:103)
	at app//com.codeborne.selenide.ex.UIAssertionError.wrap(UIAssertionError.java:98)
	at app//com.codeborne.selenide.impl.SelenideElementProxy.invoke(SelenideElementProxy.java:93)
	at app/jdk.proxy3/jdk.proxy3.$Proxy30.click(Unknown Source)
	at app//ui.hello.HelloWorldSpec.openHelloWorldPage(HelloWorldSpec.java:15)

So yeah, Netty4 + renderStatic (#157) strikes again! 😕
But how ... and why? 🙈
Maybe the file reusing or the optimized loading?

And of course, it doesn't reproduce locally. 🤷‍♀️

@xabolcs
Copy link
Collaborator

xabolcs commented Feb 12, 2025

Nitpicking

git rebase fixup

May I ask to fixup the "fix test" commit into the first commit? It doesn't have any value to keep them separate.

# after git rebase master --interactive
pick ed5f05d add test showing how to use @{...} and @{'...'} in html templates
fixup 6b9f879 fix test
pick ed898fa fix dependency conflict for "commons-lang3"
pick 3cda831 fix concurrency issue in TemplateLoader
pick a6a51ee optimize loading templates from "file://" classpath
pick 7c2537b remove usage of deprecated method `StringUtils.defaultString`

# Rebase 20f066c..7c2537b onto 20f066c (6 commands)
#
# Commands:
# ...

This will squash the second commit into the first, without extending the first's message.

Typo

There is a typo in the "optimize loading templates from "file://" classpath" commit's description (we, instead of the? 🤔 ):

for such templates found in files (not jars) we TemplateLoader will just read the file itself without copying it to "tmp" folder.

When handling @{'...'}, method `Router.__reverseWithCheck()` is used.
* we need the latest version "org.apache.commons:commons-lang3:3.17.0", but
* "rest-assured-common:5.5.0" brings an old version "org.apache.commons:commons-lang3:3.11".
Don't re-create file "./tmp/errors/404.txt" on every "404 Not Found" page generation.

Now
1. files "tmp/..." are stored only once in an hour, and
2. the writing method is synchronized (so that 2 parallel threads don't obstacle each other).
@asolntsev asolntsev force-pushed the tests/add-usage-of-__reverseWithCheck branch from 3a90ae2 to 925b164 Compare February 12, 2025 22:13
@asolntsev asolntsev self-assigned this Feb 12, 2025
@asolntsev asolntsev added this to the 2.6.4 milestone Feb 12, 2025
for such templates found in files (not jars) TemplateLoader will just read the file itself without copying it to "tmp" folder.
@asolntsev asolntsev force-pushed the tests/add-usage-of-__reverseWithCheck branch from 925b164 to 3d6ed81 Compare February 12, 2025 22:18
@asolntsev
Copy link
Contributor Author

May I ask to fixup the "fix test" commit into the first commit?

Sure, I always do interactive rebase to squash/reorder/rephrase commits. It's even easier in Intellij IDEA:

image image

@asolntsev
Copy link
Contributor Author

Netty4 + renderStatic (#157) strikes again!

Oh yes, thank you for the hint!
Parallel rendering of static resources is somehow broken with Netty4. In this test, I added yet another image to the page.

Should be fixed now.

@asolntsev asolntsev marked this pull request as ready for review February 12, 2025 22:22
@asolntsev asolntsev merged commit 70bb5aa into main Feb 12, 2025
3 checks passed
@asolntsev asolntsev deleted the tests/add-usage-of-__reverseWithCheck branch February 12, 2025 22:22
} catch (IOException e) {
throw new RuntimeException(e);
}
return TemplateLoader.load(Play.file("tmp/" + path));
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the record: this commit (unintentionally? 🙂 ) fixed and old bug introduced by commit cfe9ff1:

When Play.tmpDir differs from the default "tmp", then loading templates
from the classpath fails miserably.

xabolcs added a commit to xabolcs/re-play1 that referenced this pull request Feb 13, 2025
This was (unintentionally?) fixed in PR replay-framework#524.

For reference, the original description is below.

Looks like it never worked since its debut in commit
cfe9ff1 ("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: a6db7e1 ("fix concurrency issue in TemplateLoader")
xabolcs added a commit to xabolcs/re-play1 that referenced this pull request Feb 13, 2025
This was (unintentionally?) fixed in PR replay-framework#524.

For reference, the original description is below.

Looks like it never worked since its debut in commit
cfe9ff1 ("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: a6db7e1 ("fix concurrency issue in TemplateLoader")
xabolcs added a commit to xabolcs/re-play1 that referenced this pull request Feb 14, 2025
This was (unintentionally?) fixed in PR replay-framework#524.

For reference, the original description is below.

Looks like it never worked since its debut in commit
cfe9ff1 ("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: a6db7e1 ("fix concurrency issue in TemplateLoader")
xabolcs added a commit to xabolcs/re-play1 that referenced this pull request Feb 14, 2025
This was (unintentionally?) fixed in PR replay-framework#524.

For reference, the original description is below.

Looks like it never worked since its debut in commit
cfe9ff1 ("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: a6db7e1 ("fix concurrency issue in TemplateLoader")
xabolcs added a commit to xabolcs/re-play1 that referenced this pull request Feb 14, 2025
This was (unintentionally?) fixed in PR replay-framework#524.

For reference, the original description is below.

Looks like it never worked since its debut in commit
cfe9ff1 ("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: a6db7e1 ("fix concurrency issue in TemplateLoader")
xabolcs added a commit to xabolcs/re-play1 that referenced this pull request Feb 14, 2025
This was (unintentionally?) fixed in PR replay-framework#524.

For reference, the original description is below.

Looks like it never worked since its debut in commit
cfe9ff1 ("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: a6db7e1 ("fix concurrency issue in TemplateLoader")
xabolcs added a commit to xabolcs/re-play1 that referenced this pull request Feb 26, 2025
This was (unintentionally?) fixed in PR replay-framework#524.

For reference, the original description is below.

Looks like it never worked since its debut in commit
cfe9ff1 ("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: a6db7e1 ("fix concurrency issue in TemplateLoader")
xabolcs added a commit to xabolcs/re-play1 that referenced this pull request Feb 26, 2025
This was (unintentionally?) fixed in PR replay-framework#524.

For reference, the original description is below.

Looks like it never worked since its debut in commit
cfe9ff1 ("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: a6db7e1 ("fix concurrency issue in TemplateLoader")
xabolcs added a commit to xabolcs/re-play1 that referenced this pull request Feb 27, 2025
This was (unintentionally?) fixed in PR replay-framework#524.

For reference, the original description is below.

Looks like it never worked since its debut in commit
cfe9ff1 ("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: a6db7e1 ("fix concurrency issue in TemplateLoader")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants