[OPEN-ILS-DEV] Debugging OpenSRF installation
Victoria Bush
vbush at ilstu.edu
Thu Jun 18 12:06:33 EDT 2009
BINGO! That worked! I tried it both by starting each individual
service and then by stopping everything and doing osrf_ctl.sh -l -a
start_all. All good.
The question then becomes: shall I go ahead and continue with the
Evergreen server in my case? Are there are situations where only one
service is loaded to an interface at a time?
-Vicki
On Jun 18, 2009, at 10:26 AM, Dan Wells wrote:
> Hello all,
>
> Well, I went back to square one and was able to reproduce this buggy
> behavior, so Victoria is not alone!
>
> Furthermore, I think I have a lead for the developers to follow in
> fixing this. It seems that the following default config in
> opensrf_core.xml is not being parsed as valid:
>
> <opensrf>
> <routers>
> <router>
> <name>router</name>
> <domain>public.localhost</domain>
> <services>
> <service>opensrf.math</service>
> </services>
> ...
>
> Since the math service was working fine on my full install, I
> noticed that the only difference in this section was that many more
> services were attached to the public.localhost router. As a basic
> test, I added another fake service line, as follows:
>
> ...
> <services>
> <service>opensrf.math</service>
> <service>opensrf.blah</service>
> </services>
> ...
>
> Bingo! opensrf.math now tested fine when logging into
> public.localhost. I also tested a case of simply doubling the
> opensrf.math line:
>
> ...
> <services>
> <service>opensrf.math</service>
> <service>opensrf.math</service>
> </services>
> ...
>
> and that worked as well.
>
> So, it seems that there is a bug in parsing opensrf_core.xml when
> only a single service is listed for a router. That service does not
> get attached properly. Adding another service allows the first
> service to work, but it is unknown if the second service is affected
> (that is, it may be the case that the last service listed is
> failing, though I somehow doubt that).
>
> Victoria, try doubling the service line as I have, restart the
> stack, and see if the public math interface works for you.
>
> Good luck,
> DW
>
>
>>>> Victoria Bush <vbush at ilstu.edu> 6/16/2009 10:59 AM >>>
>
> On Jun 15, 2009, at 5:06 PM, Dan Wells wrote:
>
>> Hello Victoria,
>>
>> I kinda hate to suggest this, since I thought this issue was fixed,
>> but have you tried starting the components separately? That is:
>>
>> osrf_ctl.sh -l -a stop_all
>>
>> (wait a few minutes, kill as needed)
>>
>> osrf_ctl.sh -l -a start_router
>>
>> (wait for activity to stop/slow)
>>
>> osrf_ctl.sh -l -a start_perl
>>
>> (wait for activity to stop/slow)
>>
>> osrf_ctl.sh -l -a start_c
>>
>> Since many pieces in this system operate independently, starting
>> them in a more controlled fashion has been suggested in the past for
>> quirky race-condition-type problems.
>>
>> Good luck,
>> DW
>>
>>
>
> Okay, several things are causing confusion on my part because the
> documented behavior at
> http://evergreen-ils.org/dokuwiki/doku.php?id=troubleshooting:checking_for_errors
>
> is not what I'm seeing. First of all, the default opensrf_core.xml
> example file that I used to create my file did not create separate log
> files, private.router.log and public.router.log. (Of course, on the
> troubleshooting page two paragraphs above this mention of two router
> log files, it mentions the single router.log that is instead created.)
> So I changed my xml file to create two separate log files.
>
> In addition, the opensrf_core.xml example file claims that a log file
> gateway.log will be created, but I've never seen one. What seems to be
> happening is that the private.localhost router comes up fine, but the
> public.localhost one doesn't--or if it does come up, it's in some
> weird state that doesn't do anything.
>
> Retracing my steps:
>
> 1. I stopped everything and killed all leftover processes. I also
> moved all the log files into a subdirectory to hide them for now.
> 2. I *only* started the router:
> osrf_ctl.sh -l -a start_router
> 3. The *only* log file that is created is private.router.log:
>
>> router 2009-06-16 09:25:26 [INFO:30364:osrf_router_main.c:95:]
>> Router connecting as: server: private.localhost port: 5222 user:
>> router resource: router
>> router 2009-06-16 09:25:26 [INFO:30364:osrf_router_main.c:117:]
>> Router adding trusted server: private.localhost
>> router 2009-06-16 09:25:26 [INFO:30364:osrf_router_main.c:129:]
>> Router adding trusted client: private.localhost
>>
>
> I see no file called public.router.log, but there are two processes
> running:
>
> $ ps -eaf | grep OpenSRF
> opensrf 30368 1 0 09:25 ? 00:00:00 OpenSRF Router
> opensrf 30369 1 0 09:25 ? 00:00:00 OpenSRF Router
> opensrf 30385 29763 0 09:28 pts/1 00:00:00 grep OpenSRF
>
> 4. If I stop the router now:
> osrf.ctl.sh -l -a stop_router
>
> NOW I see a public.router.log file, and it says:
>
>> router 2009-06-16 09:51:55 [WARN:30368:osrf_router_main.c:11:]
>> Received signal [2], cleaning up...
>>
>
> So while the public router comes up, something's not right. But I have
> no idea how to diagnose this further.
>
> The only changes in my opensrf_core.xml file since I last posted it
> was to change the names of the log files, as indicated above. So the
> differences between this core file and the example one included in
> OpenSRF 1.0.6 are just the passwords and the log files.
>
>> $ diff opensrf_core.xml.example opensrf_core.xml
>> 38c38
>> < <passwd>password</passwd>
>> ---
>>> <passwd>*****</passwd>
>> 104c104
>> < <passwd>password</passwd>
>> ---
>>> <passwd>*****</passwd>
>> 128c128
>> < <password>password</password>
>> ---
>>> <password>*****</password>
>> 133c133
>> < <logfile>/openils/var/log/router.log</logfile>
>> ---
>>> <logfile>/openils/var/log/public.router.log</logfile>
>> 150c150
>> < <password>password</password>
>> ---
>>> <password>*****</password>
>> 155c155
>> < <logfile>/openils/var/log/router.log</logfile>
>> ---
>>> <logfile>/openils/var/log/private.router.log</logfile>
>
>
> Here's my slightly updated opensrf_core.xml file.
>
>
>> <?xml version="1.0"?>
>> <!--
>> vim:et:ts=2:sw=2:
>> -->
>> <config>
>>
>> <!-- bootstrap config for OpenSRF apps -->
>> <opensrf>
>>
>> <routers>
>>
>> <!-- define the list of routers our services will register
>> with -->
>>
>> <router>
>>
>> <!-- This is the public router. On this router, we only
>> register applications
>> which should be accessible to everyone on the opensrf
>> network -->
>> <name>router</name>
>> <domain>public.localhost</domain>
>> <services>
>> <service>opensrf.math</service>
>> </services>
>> </router>
>>
>> <router>
>> <!-- This is the private router. All applications must
>> register with
>> this router, so no explicit <services> section is
>> required -->
>> <name>router</name>
>> <domain>private.localhost</domain>
>> </router>
>> </routers>
>>
>>
>> <!-- Jabber login settings
>> Our domain should match that of the private router -->
>> <domain>private.localhost</domain>
>> <username>opensrf</username>
>> <passwd>privctltsrf</passwd>
>> <port>5222</port>
>> <!-- name of the router used on our private domain.
>> this should match one of the <name> of the private router
>> above -->
>> <router_name>router</router_name>
>>
>> <!-- log file settings ====================================== -->
>> <!-- log to a local file -->
>> <logfile>/openils/var/log/osrfsys.log</logfile>
>>
>> <!-- Log to syslog. You can use this same layout for
>> defining the logging of all services in this file -->
>> <!--
>> <logfile>syslog</logfile>
>> <syslog>local2</syslog>
>> <actlog>local1</actlog>
>> -->
>>
>> <!-- 0 None, 1 Error, 2 Warning, 3 Info, 4 debug, 5 Internal
>> (Nasty) -->
>> <loglevel>3</loglevel>
>>
>> <!-- config file for the services -->
>> <settings_config>/openils/conf/opensrf.xml</settings_config>
>>
>> </opensrf>
>>
>> <!-- Update this if you use ChopChop -->
>> <chopchop>
>> <!-- Our jabber server -->
>> <domain>private.localhost</domain>
>> <port>5222</port>
>> <!-- used when multiple servers need to communicate -->
>> <s2sport>5269</s2sport>
>> <secret>secret</secret>
>> <listen_address>10.0.0.3</listen_address>
>> <loglevel>3</loglevel>
>> <logfile>/openils/var/log/osrfsys.log</logfile>
>> </chopchop>
>>
>> <!-- The section between <gateway>...</gateway> is a standard
>> OpenSRF C stack config file -->
>> <gateway>
>>
>> <!--
>> we consider ourselves to be the "originating" client for requests,
>> which means we define the log XID string for log traces
>> -->
>> <client>true</client>
>>
>> <!-- the routers's name on the network -->
>> <router_name>router</router_name>
>>
>> <!--
>> These are the services that the gateway will serve.
>> Any other requests will receive an HTTP_NOT_FOUND (404)
>> DO NOT put any services here that you don't want the internet to
>> have access to
>> This section will be soon deprecated for multi-domain mode...
>> -->
>> <services>
>> <service>opensrf.math</service>
>> </services>
>>
>> <!-- jabber login info -->
>>
>> <!-- The gateway connects to the public domain -->
>> <domain>public.localhost</domain>
>> <username>opensrf</username>
>> <passwd>pubctltsrf</passwd>
>> <port>5222</port>
>> <logfile>/openils/var/log/gateway.log</logfile>
>> <loglevel>3</loglevel>
>>
>> </gateway>
>>
>> <!--
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> ====================================================================
>> -->
>>
>> <routers>
>> <router> <!-- public router -->
>> <trusted_domains>
>> <!-- allow private services to register with this
>> router
>> and public clients to send requests to this
>> router. -->
>> <server>private.localhost</server>
>> <!-- also allow private clients to send to the
>> router so it can receive error messages -->
>> <client>private.localhost</client>
>> <client>public.localhost</client>
>> </trusted_domains>
>> <transport>
>> <server>public.localhost</server>
>> <port>5222</port>
>> <unixpath>/openils/var/sock/unix_sock</unixpath>
>> <username>router</username>
>> <password>pubctltroute</password>
>> <resource>router</resource>
>> <connect_timeout>10</connect_timeout>
>> <max_reconnect_attempts>5</max_reconnect_attempts>
>> </transport>
>> <logfile>/openils/var/log/public.router.log</logfile>
>> <!--
>> <logfile>syslog</logfile>
>> <syslog>local2</syslog>
>> -->
>> <loglevel>2</loglevel>
>> </router>
>> <router> <!-- private router -->
>> <trusted_domains>
>> <server>private.localhost</server>
>> <!-- only clients on the private domain can send
>> requests to this router -->
>> <client>private.localhost</client>
>> </trusted_domains>
>> <transport>
>> <server>private.localhost</server>
>> <port>5222</port>
>> <username>router</username>
>> <password>privctltroute</password>
>> <resource>router</resource>
>> <connect_timeout>10</connect_timeout>
>> <max_reconnect_attempts>5</max_reconnect_attempts>
>> </transport>
>> <logfile>/openils/var/log/private.router.log</logfile>
>> <!--
>> <logfile>syslog</logfile>
>> <syslog>local2</syslog>
>> -->
>> <loglevel>4</loglevel>
>> </router>
>> </routers>
>>
>> <!--
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> ====================================================================
>> -->
>>
>> </config>
>>
>
>
>
>
> --
> Victoria Bush
> Opscan Evaluation Manager
> Center for Teaching, Learning & Technology
> vbush at ilstu.edu
>
>
>
--
Victoria Bush
Opscan Evaluation Manager
Center for Teaching, Learning & Technology
vbush at ilstu.edu
More information about the Open-ils-dev
mailing list