X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FResultSourceHandle.pm;h=169cb4a787508d9bc11398b4a2bb6556cb4d8ea4;hb=97940e368df996e1fe6111fb14f560594dc4c0b2;hp=0c7e4dbe77f4cd9ac4fb878cca889e99901c5570;hpb=48e4eac60b37de39a225264ab16f316c407f5740;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/ResultSourceHandle.pm b/lib/DBIx/Class/ResultSourceHandle.pm index 0c7e4db..169cb4a 100644 --- a/lib/DBIx/Class/ResultSourceHandle.pm +++ b/lib/DBIx/Class/ResultSourceHandle.pm @@ -5,10 +5,7 @@ use warnings; use base qw/DBIx::Class/; -use Storable qw/nfreeze thaw/; -use DBIx::Class::Exception; -use Try::Tiny; - +use DBIx::Class::_Util 'dbic_internal_try'; use namespace::clean; use overload @@ -71,7 +68,7 @@ sub resolve { # vague error message as this is never supposed to happen "Unable to resolve moniker '%s' - please contact the dev team at %s", $_[0]->source_moniker, - 'http://search.cpan.org/dist/DBIx-Class/lib/DBIx/Class.pm#GETTING_HELP/SUPPORT', + DBIx::Class::_ENV_::HELP_URL, ), 'full_stacktrace'); } @@ -93,20 +90,20 @@ sub STORABLE_freeze { : $self->{_detached_source}->result_class ; - nfreeze($to_serialize); + Storable::nfreeze($to_serialize); } =head2 STORABLE_thaw Thaws frozen handle. Resets the internal schema reference to the package -variable C<$thaw_schema>. The recommended way of setting this is to use +variable C<$thaw_schema>. The recommended way of setting this is to use C<< $schema->thaw($ice) >> which handles this for you. =cut sub STORABLE_thaw { my ($self, $cloning, $ice) = @_; - %$self = %{ thaw($ice) }; + %$self = %{ Storable::thaw($ice) }; my $from_class = delete $self->{_frozen_from_class}; @@ -115,11 +112,16 @@ sub STORABLE_thaw { } elsif( my $rs = $from_class->result_source_instance ) { # in the off-chance we are using CDBI-compat and have leaked $schema already - if( my $s = try { $rs->schema } ) { + if( my $s = dbic_internal_try { $rs->schema } ) { $self->schema( $s ); } else { - $rs->source_name( $self->source_moniker ); + # FIXME do not use accessor here - will trigger the divergent meta logic + # Ideally this should be investigated and fixed properly, but the + # codepath is so obscure, and the trigger point (t/52leaks.t) so bizarre + # that... meh. + $rs->{source_name} = $self->source_moniker; + $rs->{_detached_thaw} = 1; $self->_detached_source( $rs ); } @@ -131,9 +133,16 @@ sub STORABLE_thaw { } } -=head1 AUTHOR +=head1 FURTHER QUESTIONS? + +Check the list of L. + +=head1 COPYRIGHT AND LICENSE -Ash Berlin C<< >> +This module is free software L +by the L. You can +redistribute it and/or modify it under the same terms as the +L. =cut