[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[EP-tech] Re: Difficulty in getting object retrieval working in custom storage module
$repo->log() goes straight to STDERR, so should appear in the Apache
error log (remember to check 'ssl_error' if you have https).
Note that lib/storage/default.xml determines which plugin to use to
store file data - so if you haven't overridden that to use your own
plugin EPrints will default to the Local plugin.
All the best,
Tim.
On Tue, 2013-02-05 at 14:34 +0000, Simon McLeish wrote:
> Hi again,
>
>
> I can answer my own question: the code is fine and works properly. I
> was trying to access one of my test uploads from before I got the
> uploader working properly, without realising it. A new uploaded file
> downloads fine. The lack of log information appears to be due to
> EPrints doing some local caching of the data - is there any way to
> turn that off?
>
>
> Simon
>
>
>
> On Tue, Feb 5, 2013 at 12:54 PM, Simon McLeish
> <simon.mcleish at gmail.com> wrote:
> Hi,
>
>
> I'm trying to set up a custom storage module which
> communicates with a REST interface using LWP. I can store
> objects OK, and retrieve them directly (i.e. not through
> eprints). But when I try to retrieve an object through the
> EPrints interface I get the following in the log:
>
> ------------------------------------------------------------------
> ---------------- EPrints System Error
> ----------------------------
> ------------------------------------------------------------------
> Error in file retrieval: failed to get file contents
> ------------------------------------------------------------------
> at /usr/share/eprints3/perl_lib/EPrints/Apache/Storage.pm
> line 261
>
> EPrints::Apache::Storage::handler('Apache2::RequestRec=SCALAR(0x7f9a1fb053c0)') called at -e line 0
> eval {...} called at -e line 0
> [Tue Feb 05 12:35:20 2013] [error] [client 138.38.192.151]
> EPrints::abort()\n, referer:
> https://float.bath.ac.uk/cgi/users/home?screen=EPrint::Edit&eprintid=1&stage=files
>
>
> The retrieve sub in the module looks like this:
>
> sub retrieve
> {
> my( $self, $fileobj, $sourceid, $offset, $n, $f ) = @_;
>
> my $repository = $self->{session}->get_repository;
> $repository->log( "Attempting to set up user agent" ) if
> ($self->{debug}); # for testing
> if (create_ua( $self, $fileobj))
> {
> $repository->log( "Attempting to access HCP " .
> $self->{_url}->{$fileobj} ) if ($self->{debug}); # for testing
> my $ua = $self->{_ua}->{$fileobj};
> my $request = new HTTP::Request('GET',
> $self->{_url}->{$fileobj});
> my $response = $ua->request( $request,$f ); # feed the
> response to the callback function
> $repository->log( "Have response" ) if
> ($self->{debug}); # for testing
> if( $response->is_error )
> {
> $repository->log( $response->as_string );
> }
> return $response->is_success;
> }
> else
> {
> $repository->log("Could not define LWP user agent:
> aborting file save\n");
> return 0;
> }
> }
>
>
> The log doesn't seem to be receiving the debug info, either
> (which works fine in the open_write, write, and close_write
> subs). create_ua sets up the LWP object with the cookies
> needed for authentication, and saves it as
> $self->{_ua}->{$fileobj} - again, this works perfectly in the
> write routines. According to the LWP docs,
>
> $ua->request( $request,$f )
>
>
> should feed back the content from the response to the callback
> function ("this function will be called for each chunk of the
> response content as it is received from the server" -
> http://search.cpan.org/~gaas/libwww-perl-6.04/lib/LWP/UserAgent.pm).
>
>
> I've based the list of arguments to the sub on those in
> Local.pm - is is much of the rest of the EPrints interacting
> part of the code. This list is different from both the list at
> http://wiki.eprints.org/w/API:EPrints/Storage ($self,
> $fileobj, $offset, $n, CALLBACK ) and
> http://trac.eprints.org/eprints/browser/trunk/system/perl_lib/EPrints/Plugin/Storage/AmazonS3.pm?rev=4327 (the Amazon S3 module) ($self, $fileobj, $uri, $f) - could you possibly indicate which list is correct, if this isn't?
>
>
> Any suggestions would be very welcome!
>
>
> Thanks,
>
> Simon
>
>
> *** Options:
> http://mailman.ecs.soton.ac.uk/mailman/listinfo/eprints-tech
> *** Archive: http://www.eprints.org/tech.php/
> *** EPrints community wiki: http://wiki.eprints.org/
>
>
>
> *** Options: http://mailman.ecs.soton.ac.uk/mailman/listinfo/eprints-tech
> *** Archive: http://www.eprints.org/tech.php/
> *** EPrints community wiki: http://wiki.eprints.org/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: This is a digitally signed message part
Url : http://mailman.ecs.soton.ac.uk/pipermail/eprints-tech/attachments/20130205/c28650ef/attachment-0001.bin