[OPEN-ILS-DEV] Puzzling problem: cannot open

Dan Scott denials at gmail.com
Sun Jul 1 15:53:46 EDT 2007


Hello:

I've been rebuilding OpenSRF and Evergreen from SVN HEAD recently and
run into an interesting (ugh) problem when I try to register my
workstation with the staff client. I am always getting the following
error:

... please contact your helpdesk or friendly Evergreen admins, and
give them this information:
method=open-ils.actor.workstation.register
params=["df34245f0e9c54a7cd7e2a47d174f554","BR3-reginald","6"]
THROWN:
{"payload":[],"debug":"osrfMethodException :  *** Call to
[open-ils.actor.workstation.register] failed for session
[1183316996.590311.11833169967326], thread trace [1]:\nCannot sysopen
/openils/var/log/osrfsys.log: No such file or directory at
/openils/lib/perl5/OpenSRF/Utils/Logger.pm line
249.\n\n","status":500}
STATUS:

Line 249 of Logger.pm is, of course:

	sysopen( SINK, $file, O_NONBLOCK|O_WRONLY|O_APPEND|O_CREAT )
		or die "Cannot sysopen $logfile: $!";

Interestingly enough, /openils/var/log/osrfsys.log is open and being
written to. So the obvious question is whether one of the recent
logging changes is blocking attempts by Logger.pm to concurrently
write to the log file (particularly now that both the C and Perl
OpenSRF services both get their logfile name from opensrf_core.xml).

Tracking down the equivalent open method in the C services leads me to
OpenSRF/trunk/src/libopensrf/log.c where we open the file with:

FILE* file = fopen(_osrfLogFile, "a");

I'm not 100% sure, but I _hope_ that mode "a" is non-blocking. Or
perhaps we're going to have to look at using an equivalent open() call
in log.c as well? If I wasn't so damned lazy I would just write a
simple test C app and Perl app and test that hypothesis out on my own
system.

In addition, my log for the open-ils.actor service is going pretty
crazy. Not sure if this is related:

2007/07/01-15:09:41 OpenSRF::UnixServer (type OpenSRF) starting! pid(7224)
Binding to UNIX socket file /openils/var/sock/open-ils.actor_unix.sock
using SOCK_STREAM
Group Not Defined.  Defaulting to EGID '1002 1002'
User Not Defined.  Defaulting to EUID '1001'
Use of uninitialized value in string eq at
/openils/lib/perl5/OpenILS/Application/AppUtils.pm line 756, <STDIN>
line 1.
... repeats about 7 times
Argument "" isn't numeric in numeric eq (==) at
/openils/lib/perl5/OpenILS/Application/Actor.pm line 1072, <STDIN>
line 1.
... repeats about 7 times
Use of uninitialized value in hash element at
/openils/lib/perl5/OpenILS/Event.pm line 80, <STDIN> line 1.
... repeats about 400 times
Caught error from 'run' method: Cannot sysopen
/openils/var/log/osrfsys.log: No such file or directory at
/openils/lib/perl5/OpenSRF/Utils/Logger.pm line 249.




-- 
Dan Scott
Laurentian University


More information about the Open-ils-dev mailing list