EPrints Technical Mailing List Archive

See the EPrints wiki for instructions on how to join this mailing list and related information.

Message: #03935


< Previous (by date) | Next (by date) > | < Previous (in thread) | Next (in thread) > | Messages - Most Recent First | Threads - Most Recent First

[EP-tech] Errors when requesting /id/eprint/$eprintid after 3.3.13 update


Hi,

I updated my repository to EPrints 3.3.13 on January 28 (two days
after the Debian package was made available). I have not realized
until now, but since that moment, all URLS of the form
http://$myhost/id/eprint/$eprintid generate an "Internal Server Error"
page. As an example, this page works correctly:

    http://ru.iiec.unam.mx/2633/

But this one fails:

    http://ru.iiec.unam.mx/id/eprint/2633

In my error.log file, I get:

    [Tue Feb 17 10:42:43 2015] [error] [client 132.248.72.141] Can't call method "base_id" on an undefined value at /usr/share/eprints3/perl_lib/EPrints/Apache/CRUD.pm line 897.\n

And yes, I checked my logs, and the first such message occured just
after I performed the update. I am attaching a screencapture from the
Google Tools for Webmasters showing the number of errors.

This error happens in the content_negotiate_best_plugin function,
regardless of what parameters I give to it; it seems to be related to
not having a defined database object — The specific line it complains
on is:

    if( ( $self->scope == CRUD_SCOPE_DATAOBJ && $self->{database}->base_id ne "subject" ) || $self->scope == CRUD_SCOPE_USER_CONTENTS )

The database connection *is* working, but it might not yet be
initialized at this point in the request handling. Besides, either
commenting out the check for $self->{database}->base_id or making it
conditional on having defined $self->{database} make the problem
apparently go away.

So:

1. Does this happen to others, or is it just me?
2. Does my ugly fix break something else?
3. What goes here? :)

Thanks,

Attachment: google_webmaster.png
Description: PNG image