User Tools

Site Tools


troubleshooting:problems_starting_evergreen

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}.
troubleshooting/problems_starting_evergreen.txt · Last modified: 2007/05/19 23:15 by dbs

© 2008-2017 GPLS and others. Evergreen is open source software, freely licensed under GNU GPLv2 or later.
The Evergreen Project is a member of Software Freedom Conservancy.