Table of Contents
Troubleshooting: Problems starting Evergreen
Ensure your fully qualified hostname is what you think it is
Problem
When you try to start Evergreen, you receive the error message
Can't call method "documentElement" on an undefined value at /openils/lib/perl5/OpenSRF/Utils/Settings.pm line 39.
Solution
This error message means that the
OpenSRF Perl service was unable to find an element in opensrf.xml
that matches your system's fully qualified hostname. For example, if the fully qualified hostname of your system is *brawny*, OpenSRF expects to find an XML snippet similar to the following in opensrf.xml
:
... <hosts> <brawny> ... </brawny> </hosts> ...
To determine the fully qualified hostname of your system, run the following command at the command line:
perl -MNet::Domain=hostfqdn -e "print hostfqdn();"
If the output from this command does not match the opening and closing element name in your opensrf.xml
file, try changing the element names accordingly.
Aside: the command hostname -f
is easier to type and some configuration files still refer to it, but it is not guaranteed to give the same results as the Perl command and OpenSRF depends on the output matching the Perl command. So save yourself some grief and just run the nice, long Perl command to lay any doubts to rest.
Problems connecting to the jabber server
Problem
When you try to start Evergreen, you receive an error message like:
!!!!Unable to connect router to jabber server localhost... exiting
Solution #1
Your Jabber server may not be running. You can look for the jabber server process in your list of processes:
ps wax | grep -i jabber
You can also try to telnet to port 5222 on your jabber server - for example:
telnet localhost 5222
Solution #2
OpenSRF may not be pointed at the correct hostname in opensrf_core.xml
. Check the value of the XML xpath /config/routers/router
and /config/domains/domain
to ensure that the hostname and Jabber domain matches the expected values. For example, the default values are set to localhost in opensrf_core.xml.example
:
<config> <opensrf> <!-- the routers's name on the network --> <!-- do not change this --> <router_name>router</router_name> <routers> <!-- list of router domains we should register with. We must at least have our default jabber domain in here. --> <router>localhost</router> </routers> <domains> <!-- Our jabber domain, currenlty only one domain is supported --> <domain>localhost</domain> </domains> ...
Problems connecting to the settings server
Problem
/openils/var/log/opensrf.settings_unix.log
contains errors similar to the following:
2007/05/11-14:25:26 CONNECT UNIX Socket: "/openils/var/sock/opensrf.settings_unix.sock" MessageWrapper received bad XML : error = :1: namespace error: Namespace prefix stream on error is not defined <stream:error><conflict xmlns='urn:ietf:params:xml:ns:.../><text xml: ^ at /openils/lib/perl5/OpenSRF/Transport/SlimJabber/MessageWrapper.pm line 17 ... Replaced by new connection</text></stream:error>
Cause
Recent versions of ejabber have a setting for the maximum number of times a single user is allowed to simultaneously connect to the ejabber server. The default of 10
is too low for Evergreen's purposes.
Solution
Increase the max_user_sessions
variable in /etc/jabber/ejabberd.cnf
to something like 100
for a single-server Evergreen system:
%% Define the maximum number of time a single user is allowed to connect: {max_user_sessions, 100}.