[Catalyst] Installing Catalyst::Authentication::Store::DBIx::Class Breaks Catalyst

Tomas Doran bobtfish at bobtfish.net
Wed Apr 8 09:43:21 GMT 2009


Collin Condray wrote:
> This completely rendered my site totally unusable. Now I am receiving 
> the error:
> Inconsistent hierarchy during C3 merge of class 'myAPP': merging failed 
> on parent 'Class::Accessor::Fast' at 
> /home/username/local/lib/perl/5.8.4/Class/C3/XS.pm line 56., referer: 
> https://www.mysite.com/
> 
> I have been unable to find anything that I've been able to understand on 
> the cause of this problem. Has anyone else come across this error 
> message and if so, has anyone found a solution to it.

Yes.

If you remove /home/username/local/lib/perl/5.8.4/Class/C3/XS.pm then 
you'll get a better / more helpful error message.

The (brief) explanation is that somehow, your application is composed of 
base classes which cannot be resolved into a linear order.

Example:

package BaseLeft;
our $VERSION = 0.1;

package BaseRight;
our $VERSION = 0.1;

package A;
use base qw/BaseLeft BaseRight/;

package B;
use base qw/BaseRight BaseLeft/;

package CrashAndBurn;
use base qw/A B/;

Now, using Algorithm::C3, try to resolve a method call in 
CrashAndBurn... Answer - you can't!!! It doesn't make sense..

Which means that C3 resolution is going to explode, just as you're 
seeing. You should be able to look at the 'use base' lines in your 
plugins, and work out if you have this situation. Most often, its caused 
by code which says use base qw/Class::Data::Inheritable 
Class::Accessor::Fast/ (as everything else does it the other way round.

The most common plugin causing this is 
Catalyst::Plugin::Session::Store::FastMMap <= version 0.03. So if you're 
using that, upgrade, and it should fix your issues!

Cheers
t0m




More information about the Catalyst mailing list