Bug#587729: otrs2: edit of /etc/otrs/Kernel/Config.pm breaks running OTRS (libapache2-reload-perl related?)

Damyan Ivanov dmn at debian.org
Thu Jul 1 14:56:36 UTC 2010


-=| Patrick Matthäi, Thu, Jul 01, 2010 at 03:48:11PM +0200 |=-
> Am 01.07.2010 15:13, schrieb Damyan Ivanov:
> >>>> I have got the same issue, also if I upgrade other perl 
> >>>> packages used by otrs, but I never realy cared about it. I am 
> >>>> reassigning.
> >>>
> >>> Is there a way to reproduce the problem without using OTRS?
> >>>
> >>> As far as I can see the Config stuff is far from trivial and there may 
> >>> be some side effect of using Apache2::Reload that OTRS doesn't take 
> >>> care of. Elliminating the complexity would help pin-pointing the 
> >>> problem.
> 
> Sorry, I do not have a simple test case for it, too, except otrs, but
> this is not a simple application :/

I see. What I don't see is the reason for reassigning. So far we know 
that OTRS loses its configuration when Config.pm is reloaded by 
Apache2::Reload. The reason may be in Apache2::Reload or in OTRS.

AIUI, Apache2::Reload would do 'ModPerl::Util::unload_package' 
followed by 'require'. How this reflects to the OSTR configuration 
framework is not clear to me.

Here's what I find interesting in ModPerl::Util::unload_package 
manual:

    Unloading a Perl stash (package) is a complicated business. This 
    function tries very hard to do the right thing. After calling this 
    function, it should be safe to "use()" a new version of the module 
    that loads the wiped package.

    References to stash elements (functions, variables, etc.) taken 
    from outside the unloaded package will still be valid.

    This function may wipe off things loaded by other modules, if the 
    latter have inserted things into the $stash it was told to unload.

    If a stash had a corresponding XS shared object (.so) loaded it 
    will be unloaded as well.

    If the stash had a corresponding entry in %INC, it will be removed 
    from there.

    "unload_package()" takes care to leave sub-stashes intact while 
    deleting the requested stash. So for example if "CGI" and 
    "CGI::Carp" are loaded, calling "unload_package('CGI')" won't 
    affect "CGI::Carp".

Does this ring any bells? The third paragraph maybe?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 835 bytes
Desc: Digital signature
URL: <http://lists.alioth.debian.org/pipermail/pkg-perl-maintainers/attachments/20100701/5f77ad47/attachment.pgp>


More information about the pkg-perl-maintainers mailing list