[request-tracker-maintainers] Bug#848041: Bug#848041: request-tracker4 requires allow-blessed in Web.pm
Dominic Hargreaves
dom at earth.li
Wed Dec 14 00:17:10 UTC 2016
On Tue, Dec 13, 2016 at 04:55:37AM -0900, James Zuelow wrote:
> I run request-tracker4, apache2, and postfix. I've been tracking testing in order to get a newer version of request-tracker4 than is available in Jessie.
>
> After upgrading request-tracker4 when I run the unmodified package, Apache generates a 500 internal
> server error as such:
>
> xxxxxxxxx
>
> [31143] [Tue Dec 13 13:29:06 2016] [error]: encountered object '1', but neither allow_blessed, convert_blessed nor allow_tags settings are enabled (or TO_JSON/FREEZE method missing) at /usr/share/perl5/JSON.pm line 154.
>
> Stack:
> [/usr/share/perl5/JSON.pm:154]
> [/usr/share/request-tracker4/lib/RT/Interface/Web.pm:197]
> [/usr/share/request-tracker4/lib/RT/Interface/Web.pm:4065]
> [/usr/share/request-tracker4/html/Elements/JavascriptConfig:79]
> [/usr/share/request-tracker4/html/Elements/Header:64]
> [/usr/share/request-tracker4/html/index.html:4]
> [/usr/share/request-tracker4/lib/RT/Interface/Web.pm:681]
> [/usr/share/request-tracker4/lib/RT/Interface/Web.pm:369]
> [/usr/share/request-tracker4/html/autohandler:53] (/usr/share/request-tracker4/lib/RT/Interface/Web/Handler.pm:209)
>
> xxxxxxxxxx
>
> I've tried updating JSON via CPAN, etc. without success. However a simple addition to Web.pm resolves the issue. I've been running this modification in production without any issues. There has been at least one other person on rt-users that has needed this in conjunction with a Debian install, so I'm fairly sure that this isn't being caused by a local modification. (Unless we've both made the same modification without realizing it.) However Best Practical hasn't responded on: rt-users, so this may be Debian specific.
>
> Patch for /usr/share/request-tracker4/lib/RT/Interface/Web.pm:
>
> xxxxxxxxxx
>
> --- Web.pm 2016-12-13 04:40:12.199936566 -0900
> +++ Web-jfz.pm 2016-12-13 04:39:53.643473002 -0900
> @@ -194,7 +194,7 @@
> =cut
>
> sub EncodeJSON {
> - my $s = JSON::to_json(shift, { allow_nonref => 1 });
> + my $s = JSON::to_json(shift, { allow_blessed => 1, allow_nonref => 1 });
> $s =~ s{/}{\\/}g;
> return $s;
> }
>
> xxxxxxxxxx
> -- Package-specific info:
> Changed files:
> usr/share/request-tracker4/lib/RT/Interface/Web.pm
>
> There are locally modified files in /usr/local/share/request-tracker4/,
> these may (or may not) be the source of the problem.
Hi James,
Sorry to hear that you are having problems. Just a quick question
before I dive into the code; can you clarify what web server interface
you are using (mod_perl or something else), and whether you can
reproduce the problem without your other local modifications. It
would help if you could share the changes in
/usr/local/share/request-tracker4/ if they look relevant.
I note that this problem looks similar to one seen quite a while ago:
http://requesttracker.8502.n7.nabble.com/Update-to-RT-4-2-1-gt-JSON-error-after-login-td55890.html
and a similar problem is here:
http://www.perlmonks.org/?node_id=1159078
In both of those mod_perl is implicated, and maybe JSON::XS too.
You mention that JSON::XS is installed, but it's not a direct dependency
of RT - can you try uninstalling it (from the package and CPAN install)
and see if that makes a difference?
Cheers,
Dominic.
More information about the pkg-request-tracker-maintainers
mailing list