[Opensrf-commits] r2226 - in trunk: bin src/python (dbs)

svn at svn.open-ils.org svn at svn.open-ils.org
Wed Mar 30 00:31:32 EDT 2011


Author: dbs
Date: 2011-03-30 00:31:28 -0400 (Wed, 30 Mar 2011)
New Revision: 2226

Modified:
   trunk/bin/osrf_ctl.sh.in
   trunk/src/python/opensrf.py.in
Log:
Handle the common NXDOMAIN problem with Python a bit more gracefully

Rather than dumping a nasty full stacktrace to the command line, we
print a hopefully helpful pointer to the actual problem in plain
English.

Also, rather than stopping everything if a "stop_all" command was
issued, skip the error status in osrf_ctl.sh for the Python bit
and carry on shutting down the other services. A bit more convenient
if you want to have Python enabled but don't necessarily need it
running.


Modified: trunk/bin/osrf_ctl.sh.in
===================================================================
--- trunk/bin/osrf_ctl.sh.in	2011-03-29 13:58:38 UTC (rev 2225)
+++ trunk/bin/osrf_ctl.sh.in	2011-03-30 04:31:28 UTC (rev 2226)
@@ -197,7 +197,9 @@
     [ -e $PID_OSRF_PYTHON ] && rm $PID_OSRF_PYTHON;
     OPT_LOCAL=""
     [ "$OSRF_HOSTNAME" = "localhost" ] && OPT_LOCAL="-l"
+    set +e # Ignore errors for NXDOMAIN
     opensrf.py -p $OPT_PID_DIR -f $OPT_CONFIG -a stop_all $OPT_LOCAL
+    set -e # Errors matter again
     sleep 1;
     return 0;
 }

Modified: trunk/src/python/opensrf.py.in
===================================================================
--- trunk/src/python/opensrf.py.in	2011-03-29 13:58:38 UTC (rev 2225)
+++ trunk/src/python/opensrf.py.in	2011-03-30 04:31:28 UTC (rev 2226)
@@ -25,6 +25,7 @@
 
 import sys, getopt, os, signal
 import osrf.system, osrf.server, osrf.app, osrf.set, osrf.json
+import dns.resolver
 
 def do_help():
     '''
@@ -83,9 +84,16 @@
     global domain
     global settings
 
-    # connect to the OpenSRF network
-    osrf.system.System.net_connect(
-        config_file = config_file, config_context = config_ctx)
+    try:
+        # connect to the OpenSRF network
+        osrf.system.System.net_connect(
+            config_file = config_file, config_context = config_ctx)
+    except dns.resolver.NXDOMAIN:
+        dnsfail = """
+ERROR: Could not initialize the OpenSRF Python environment. A DNS query
+failed to resolve the network address of the XMPP server.
+"""
+        sys.exit(dnsfail)
 
     if as_localhost:
         domain = 'localhost'



More information about the opensrf-commits mailing list