[index] [prev] [next] [options] [help]

eprints_tech messages

Re: [EP-tech] Lift_embargos: Can't call method "current_repository" on an undefined value

From: John Salter via Eprints-tech <eprints-tech AT ecs.soton.ac.uk>
Date: Wed, 20 Nov 2019 12:20:59 +0000


Threading:      • This Message
             Re: [EP-tech] Lift_embargos: Can't call method "current_repository" on an undefined value from eprints-tech AT ecs.soton.ac.uk
             Re: [EP-tech] Lift_embargos: Can't call method "current_repository" on an undefined value from eprints-tech AT ecs.soton.ac.uk


Hi Robin,
*** Firstly, if you have moved from Apache 2.2 to Apache 2.4, make sure your 
restricted documents are restricted!
*** There may be a change needed in ~/archives/ARCHIVEID/cfg/cfg.d/security.pl
*** See: 
https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Feprints%2Feprints%2Fissues%2F322&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C7f14bde310f64b8d753408d76db424af%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=YmlDeEIZpBPZWC2f8wkqbgekCtHXzhJxprzS9fQuDRw%3D&amp;reserved=0

On to your reported problem...
I would check any 'commit' triggers in your repository config.
This might also help (it's a bit crude, but has helped me in the past) - 
grepping for a 'ne' on line 48 of a repository's config:
grep -n ' ne ' archives/ARCHVIEID/cfg/  | grep 48
if that doesn't return anything, try other config locations  like lib/cfg.d/

I suspect there's a commit trigger that either:
- works OK if there's an online session, but not from the command-line
- generates a warning that's ignored in an online session, but not in the bin 
script - which then fails

Does that help at all?

Cheers,
John

From: eprints-tech-bounces AT ecs.soton.ac.uk [mailto:eprints-tech-bounces AT 
ecs.soton.ac.uk] On Behalf Of Robin Sylvestre via Eprints-tech
Sent: 19 November 2019 18:42
To: eprints-tech AT ecs.soton.ac.uk
Subject: [EP-tech] Lift_embargos: Can't call method 
"current_repository" on an undefined value

Hello fellow Eprinters,

We've been running Eprints 3.3.13 and a modified "lift_embargos" 
script for quite some time without any issue. But we noticed lately that the 
script has stopped working. It seems that it is now unable to commit any 
changes. Running in debug mode, I can see that the script fails after calling 
the "$doc->commit(1)" line:

Lifting expired embargo on eprint #2957, document #41378 (2019-11-19)

main::CODE(0x999baa0)(lift_embargos:149):
149:            if( !$dryrun )
150:            {
main::CODE(0x999baa0)(lift_embargos:151):
151:                    $doc->set_value( "security", 
"public" );
main::CODE(0x999baa0)(lift_embargos:152):
152:                    $doc->set_value( "date_embargo", undef );
main::CODE(0x999baa0)(lift_embargos:154):
154:                    $doc->commit( 1 ); # pass force through to parent 
eprint

Use of uninitialized value in string ne at (eval 65)[(eval 
55)[/usr/share/eprints/bin/../perl_lib/EPrints/Config.pm:272]:19] line 48.
at (eval 65)[(eval 
55)[/usr/share/eprints/bin/../perl_lib/EPrints/Config.pm:272]:19] line 48.
        EPrints::Config::Ecole::__ANON__[(eval 65)[(eval 
55)[/usr/share/eprints/bin/../perl_lib/EPrints/Config.pm:272]:19]:68]('EPrints::DataObj::Document=HASH(0x9a2f8f0)') called at /usr/share/eprints/bin/../perl_lib/EPrints/Repository.pm line 1726
        eval {...} called at 
/usr/share/eprints/bin/../perl_lib/EPrints/Repository.pm line 1726
        EPrints::Repository::call('EPrints::Repository=HASH(0x4654aa0)', 
'set_document_automatic_fields', 'EPrints::DataObj::Document=HASH(0x9a2f8f0)') 
called at /usr/share/eprints/bin/../perl_lib/EPrints/DataObj.pm line 463
        
EPrints::DataObj::update_triggers('EPrints::DataObj::Document=HASH(0x9a2f8f0)') 
called at /usr/share/eprints/bin/../perl_lib/EPrints/DataObj/Document.pm line 
1217
        
EPrints::DataObj::Document::commit('EPrints::DataObj::Document=HASH(0x9a2f8f0)', 1) called at lift_embargos line 154
        
main::__ANON__[lift_embargos:184]('EPrints::Repository=HASH(0x4654aa0)', 
'EPrints::DataSet=HASH(0x57200e8)', 
'EPrints::DataObj::Document=HASH(0x9a2f8f0)', undef) called at 
/usr/share/eprints/bin/../perl_lib/EPrints/List.pm line 664
        EPrints::List::map('EPrints::List=HASH(0x2ff0af8)', 'CODE(0x999baa0)') 
called at lift_embargos line 184
Can't call method "current_repository" on an undefined value at 
/usr/share/eprints/bin/../perl_lib/EPrints/BackCompatibility.pm line 443.

Looking at the code, I can see that the session information is passed to the 
other functions, but it doesn't seem to be working anymore as the session is 
undefined when calling the method "current_repository" on line 443 of 
BackCompatibility.pm:

return $EPrints::HANDLE->current_repository;

The only thing that changed in the last few weeks has been a server upgrade 
(not sure what was the previous version but we are now running on CentOS 7 with 
Perl 5.16.3 and Apache 2.4.6). Using the workflow to commit changes still work 
without any issue.

Has anyone encountered this error before? Could this be related to Perl or 
Apache's configuration?

Thank you for your input on this issue!

Robin Sylvestre
Technicien des systèmes informatisés
Bibliothèque Louise-Lalonde-Lamarre
Polytechnique Montréal
514-340-4711 poste 5973


ATTACHMENT: message.html!

*** 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/ *** EPrints developers Forum: http://forum.eprints.org/

[index] [prev] [next] [options] [help]