Bug#627235: libpoex-role-sessioninstantiation-perl: Can't locate object method "_set_id" via package "My::Session" at /usr/share/perl5/POE/Kernel.pm line 1399.
Dominique Dumont
dod at debian.org
Sun Jun 10 09:00:34 UTC 2012
Hello
Le Saturday 9 June 2012 18:16:53, intrigeri a écrit :
> Anyone want to try to fix the code or the unit test?
Providing the missing method is quite easy:
diff --git a/lib/POEx/Role/SessionInstantiation/Meta/Session/Implementation.pm
b/lib/POEx/Role/SessionInstantiation/Meta/Session/Implementation.pm
index 2ab316c..346a0e8 100644
--- a/lib/POEx/Role/SessionInstantiation/Meta/Session/Implementation.pm
+++ b/lib/POEx/Role/SessionInstantiation/Meta/Session/Implementation.pm
@@ -85,6 +85,7 @@ role POEx::Role::SessionInstantiation::Meta::Session::Implementation {
is => 'ro',
isa => Int,
default => sub { $POE::Kernel::poe_kernel->ID_session_to_id($_[0]) },
+ writer => '_set_id' ,
lazy => 1,
);
But, the tests still fail with this sad ending:
ok 14 - Stop called
please report this stacktrace to bug-poe at rt.cpan.org at /usr/share/perl5/POE/Kernel.pm line 1013
POE::Kernel::_dispatch_event('POE::Kernel=ARRAY(0x1be9ee0)', undef, 'POE::Kernel=ARRAY(0x1be9ee0)', '_stop', 8,
'ARRAY(0x1c03418)', '/usr/share/perl5/POE/Resource/Sessions.pm', 571, undef, ...) called at
/usr/share/perl5/POE/Resource/Sessions.pm line 568
POE::Kernel::_data_ses_stop('POE::Kernel=ARRAY(0x1be9ee0)', 'gandalf-4fd45c1f-000027a0-00000001') called at
/usr/share/perl5/POE/Resource/Signals.pm line 533
POE::Kernel::_data_sig_free_terminated_sessions('POE::Kernel=ARRAY(0x1be9ee0)') called at /usr/share/perl5/POE/Kernel.pm
line 974
POE::Kernel::_dispatch_event('POE::Kernel=ARRAY(0x1be9ee0)', 'POE::Kernel=ARRAY(0x1be9ee0)',
'POE::Kernel=ARRAY(0x1be9ee0)', '_signal', 16, 'ARRAY(0x3b3ad28)', '/usr/share/perl5/POE/Kernel.pm', 635, undef, ...) called at
/usr/share/perl5/POE/Resource/Events.pm line 315
POE::Kernel::_data_ev_dispatch_due('POE::Kernel=ARRAY(0x1be9ee0)') called at /usr/share/perl5/POE/Loop/Select.pm line 309
POE::Kernel::loop_do_timeslice('POE::Kernel=ARRAY(0x1be9ee0)') called at /usr/share/perl5/POE/Loop/Select.pm line 317
POE::Kernel::loop_run('POE::Kernel=ARRAY(0x1be9ee0)') called at /usr/share/perl5/POE/Kernel.pm line 1235
POE::Kernel::run('POE::Kernel') called at t/01-basic.t line 95
# Tests were run but no plan was declared and done_testing() was not seen.
POE bails out at the end of the test while mopping up sessions.
Unfortunately, I do not know how to fix this: POEx::Role::SessionInstantiation
re-implements (i.e. overrides) a lot of POE internals and uses waaaay beyong POE's
documented API. I can only guess that POE internals have changed (e,g, the introduction
of a new internal method: _set_id), and POEx::Role::SessionInstantiation did not
follow the change.
To fix this module one has to know POE internal, Moose, MooseX::Declare, overloading and whatnot.
Unless upstream author steps up, (hello Nicholas), I doubt that this module will be fixed in time
for Debian 7.0
All the best
Dominique
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.alioth.debian.org/pipermail/pkg-perl-maintainers/attachments/20120610/abdb3982/attachment.pgp>
More information about the pkg-perl-maintainers
mailing list