Skip Menu |

This queue is for tickets about the Tatsumaki CPAN distribution.

Report information
The Basics
Id: 60350
Status: open
Priority: 0/
Queue: Tatsumaki

People
Owner: Nobody in particular
Requestors: GRAF [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: Important
Broken in: (no value)
Fixed in: (no value)



The attached test fails and I absolutely have no idea why. Perl is 5.12.1, using local::lib, all packages are up-to-date. I tried to degrade some of the used packages (Mo[o|u]se, AnyEvent and Tatsumaki itself), but that didn't help.
Subject: build.log
cpanm (App::cpanminus) 1.001 on perl 5.012001 built for x86_64-linux Work directory is /home/graf/.cpanm/work/1281822010.10151 You have make /usr/bin/make You have LWP 5.836 You have /bin/tar: tar (GNU tar) 1.21 Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by John Gilmore and Jay Fenlason. You have /usr/bin/unzip Searching Tatsumaki on cpanmetadb ... Fetching http://search.cpan.org/CPAN/authors/id/M/MI/MIYAGAWA/Tatsumaki-0.1010.tar.gz -> OK Unpacking Tatsumaki-0.1010.tar.gz Entering Tatsumaki-0.1010 Checking if you have ExtUtils::MakeMaker 6.31 ... Yes (6.56) Checking if you have ExtUtils::Install 1.46 ... Yes (1.55) Checking if you have Module::Build 0.28 ... Yes (0.3607) Checking if you have ExtUtils::MakeMaker 6.42 ... Yes (6.56) Configuring Tatsumaki-0.1010 Running Makefile.PL *** Module::AutoInstall version 1.03 *** Checking for Perl dependencies... *** Since we're running under CPAN, I'll just let it take care of the dependency's installation later. [Core Features] - Test::More ...loaded. (0.94) - Test::Requires ...loaded. (0.05) - AnyEvent ...loaded. (5.271 >= 5.2) - AnyEvent::HTTP ...loaded. (1.45) - Any::Moose ...loaded. (0.13) - Mouse ...loaded. (0.64 >= 0.34) - Plack ...loaded. (0.9944 >= 0.9913) - Twiggy ...loaded. (0.1006) - JSON ...loaded. (2.21) - Text::MicroTemplate ...loaded. (0.15) - Try::Tiny ...loaded. (0.06) - parent ...loaded. (0.223) - Filter::Util::Call ...loaded. (1.08) *** Module::AutoInstall configuration finished. Checking if your kit is complete... Looks good Writing Makefile for Tatsumaki Writing MYMETA.yml -> OK Checking dependencies from MYMETA.yml ... Finding PREREQ from Makefile ... Checking if you have Try::Tiny 0 ... Yes (0.06) Checking if you have parent 0 ... Yes (0.223) Checking if you have AnyEvent 5.2 ... Yes (5.271) Checking if you have Plack 0.9913 ... Yes (0.9944) Checking if you have Twiggy 0 ... Yes (0.1006) Checking if you have AnyEvent::HTTP 0 ... Yes (1.45) Checking if you have Filter::Util::Call 0 ... Yes (1.08) Checking if you have Any::Moose 0 ... Yes (0.13) Checking if you have Mouse 0.34 ... Yes (0.64) Checking if you have JSON 0 ... Yes (2.21) Checking if you have Text::MicroTemplate 0 ... Yes (0.15) Checking if you have Test::Requires 0 ... Yes (0.05) Checking if you have Test::More 0 ... Yes (0.96) Checking if you have ExtUtils::MakeMaker 6.42 ... Yes (6.56) Checking if you have Try::Tiny 0 ... Yes (0.06) Checking if you have Test::Requires 0 ... Yes (0.05) Checking if you have parent 0 ... Yes (0.223) Checking if you have AnyEvent 5.2 ... Yes (5.271) Checking if you have Plack 0.9913 ... Yes (0.9944) Checking if you have Twiggy 0 ... Yes (0.1006) Checking if you have ExtUtils::MakeMaker 6.42 ... Yes (6.56) Checking if you have AnyEvent::HTTP 0 ... Yes (1.45) Checking if you have Test::More 0 ... Yes (0.96) Checking if you have Filter::Util::Call 0 ... Yes (1.08) Checking if you have Any::Moose 0 ... Yes (0.13) Checking if you have Mouse 0.34 ... Yes (0.64) Checking if you have JSON 0 ... Yes (2.21) Checking if you have Text::MicroTemplate 0 ... Yes (0.15) Building and testing Tatsumaki-0.1010 for Tatsumaki cp lib/Tatsumaki/Handler.pm blib/lib/Tatsumaki/Handler.pm cp lib/Tatsumaki/Server.pm blib/lib/Tatsumaki/Server.pm cp lib/Tatsumaki/Service.pm blib/lib/Tatsumaki/Service.pm cp lib/Tatsumaki/Error.pm blib/lib/Tatsumaki/Error.pm cp lib/Tatsumaki.pm blib/lib/Tatsumaki.pm cp lib/Tatsumaki/Template.pm blib/lib/Tatsumaki/Template.pm cp lib/Tatsumaki/Response.pm blib/lib/Tatsumaki/Response.pm cp lib/Tatsumaki/HTTPClient.pm blib/lib/Tatsumaki/HTTPClient.pm cp lib/Tatsumaki/Application.pm blib/lib/Tatsumaki/Application.pm cp lib/Tatsumaki/MessageQueue.pm blib/lib/Tatsumaki/MessageQueue.pm cp lib/Tatsumaki/Request.pm blib/lib/Tatsumaki/Request.pm cp lib/Tatsumaki/Template/Micro.pm blib/lib/Tatsumaki/Template/Micro.pm Manifying blib/man3/Tatsumaki.3pm Manifying blib/man3/Tatsumaki::MessageQueue.3pm PERL_DL_NONLAZY=1 /opt/perl/5.12.1/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/*.t t/*/*.t t/00_compile.t .................. ok t/application_with_moose.t ...... ok t/handler/exception.t ........... ok t/handler/root.t ................ ok t/handler/sync.t ................ ok t/mq/basic.t .................... ok # Failed test 'no leaks' # at t/mq/cycle.t line 12. # Cycle #1 # Tatsumaki::MessageQueue A->{clients} => %B # %B->{0.173451867261068} => %C # %C->{timer} => @D # @D->[1] => &E # closure &E, $self => $F # $F => Tatsumaki::MessageQueue A # Failed test 'no leaks in subscriber' # at t/mq/cycle.t line 17. # Cycle #1 # Tatsumaki::MessageQueue A->{clients} => %B # %B->{0.173451867261068} => %C # %C->{timer} => @G # @G->[1] => &H # closure &H, $client => $I # $I => %C # Cycle #2 # Tatsumaki::MessageQueue A->{clients} => %B # %B->{0.173451867261068} => %C # %C->{timer} => @G # @G->[1] => &H # closure &H, $self => $J # $J => Tatsumaki::MessageQueue A # Failed test 'no leaks in publisher' # at t/mq/cycle.t line 18. # Cycle #1 # Tatsumaki::MessageQueue A->{clients} => %B # %B->{0.173451867261068} => %C # %C->{timer} => @G # @G->[1] => &H # closure &H, $client => $I # $I => %C # Cycle #2 # Tatsumaki::MessageQueue A->{clients} => %B # %B->{0.173451867261068} => %C # %C->{timer} => @G # @G->[1] => &H # closure &H, $self => $J # $J => Tatsumaki::MessageQueue A # Looks like you failed 3 tests of 4. t/mq/cycle.t .................... Dubious, test returned 3 (wstat 768, 0x300) Failed 3/4 subtests t/mq/events_before_long_poll.t .. ok t/mq/timer.t .................... ok Test Summary Report ------------------- t/mq/cycle.t (Wstat: 768 Tests: 4 Failed: 3) Failed tests: 1, 3-4 Non-zero exit status: 3 Files=9, Tests=28, 2 wallclock secs ( 0.04 usr 0.01 sys + 0.80 cusr 0.14 csys = 0.99 CPU) Result: FAIL Failed 1/9 test programs. 3/28 subtests failed. make: *** [test_dynamic] Error 255 -> FAIL Installing Tatsumaki failed. See /home/graf/.cpanm/build.log for details.
Just found out, that 0.1007 installs cleanly. The problem is probably located in Tatsumaki::MessageQueue. Here is the diff of the relevant files: Changes @@ -1,5 +1,9 @@ Revision history for Perl extension Tatsumaki +0.1008 Sun Jan 31 14:16:02 PST 2010 + - Fixed a MessageQueue bug where long poll cleanup timer is discarded + (Thanks to yoshimax, hiratara and jishirey) + 0.1007 Tue Dec 22 10:07:18 PST 2009 - Make Test::Warn test optional lib/Tatsumaki/MessageQueue.pm @@ -73,7 +73,6 @@ sub flush_events { undef $client; delete $self->clients->{$client_id}; }; - Scalar::Util::weaken $client->{timer}; } } catch { /Tatsumaki::Error::ClientDisconnect/ and do { @@ -103,7 +102,6 @@ sub poll_once { warn "Timing out $client_id long-poll" if DEBUG; $self->flush_events($client_id); }; - Scalar::Util::weaken $client->{timer}; if ($is_new) { # flush backlog for a new client Still I don't understand why this doesn't matter on most other systems, but fails on mine. :(
Also fails on a 5.10.0 (that comes with openSUSE 11.2) with the same error. My 5.12.1 is self-built w/o thread support btw. Maybe a few more CPAN Testers Reports would indicate failure if they had Test::Memory::Cycle installed, because I often see t/mq/cycle.t .................... skipped: Test requires module 'Test::Memory::Cycle' but it's not found