Plack::Util::load_psgi: guard against hitting the identifier length limit #663
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When Plack is asked to load a path with a psgi app inside,
ala /foo/bar/app.psgi, it first generates a namespace for
the file -- something like Plack::Sandbox::_2ffoo_2fbar_2fapp_2epsgi.
Those "sandboxed" namespaces can get very long. Long enough
that they hit Perl's identifier limit of ~250 characters
(see https://perldoc.perl.org/perldiag#Identifier-too-long).
This commit patches Plack::Util::load_psgi()
that always generates paths shorter than the threshold,
and jumps through some hoops to ensure that no two
applications end up sharing namespaces after the trimming.