[Linux-cluster] Ricci doesn't work

Jan Pokorný jpokorny at redhat.com
Wed Sep 12 12:00:09 UTC 2012


On 10/09/12 21:54 +0000, Chip Burke wrote:
> Well, after a few days of testing it seems luci/ricci is still flakey.

At first, there seems to be more than "XML entities" problem involved.
This is because luci, unlike ccs and ccs_sync ("cman_tool version" uses
ccs_sync under the hood) should not suffer from that one.
So probably yet another separate issue...

> If I update things via luci, the cluster.conf on the local machine with
> luci updates, but nothing pushes out to other nodes. If I then manually run
> ccs_sync on the node with the new configuration, things push out to the
> other nodes fine. While this is wonky, at least it is consistent and
> repeatable so I can do things in this manner until fixes are in. Though,
> certainly let me know if you want any more logs or whatever from me.

To get a better error message in luci.log, something to start with, could
you apply a workaround for that "no translator" issue, please?

The recipe, based on the real patch to fix the mentioned bug, is as
follows (as root on the host with luci installed):

---

pushd $(rpm --eval %python_sitearch)
cat <<EOF | patch --fuzz=3 -b .std
diff --git a/luci/lib/ricci_helpers.py b/luci/lib/ricci_helpers.py
--- a/luci/lib/ricci_helpers.py
+++ b/luci/lib/ricci_helpers.py
@@ -7,6 +7,9 @@
 
 import threading
 
+import pylons
+from pylons.i18n.translation import _get_translator
+
 from luci.lib.helpers import ugettext as _
 
 from luci.model import DBSession
@@ -29,6 +33,14 @@ class PWorker(threading.Thread):
         self.cluster_members_only = cluster_members_only
 
     def run(self):
+        # see http://comments.gmane.org/gmane.comp.web.turbogears/46896
+        # this is stolen from the pylons test setup;
+        # it will make sure the gettext-stuff is working, that is
+        # we inject translator object to this private thread similarly
+        # as it is done by the framework in per-request threads
+        translator = _get_translator(None)
+        pylons.translator._push_object(translator)
+
         while True:
             self.mutex.acquire()
             if len(self.triples) == 0:
@@ -67,6 +79,8 @@ class PWorker(threading.Thread):
             self.ret[triple[0][0]] = r
             self.mutex.release()
 
+        pylons.translator._pop_object()
+
 def send_batch_parallel(triples, max_threads, cluster_members_only=False):
     mutex = threading.RLock()
     threads = list()
EOF
popd

---

If luci.log still does not provide any better information, please run this
sed one-liner (once the luci was started at least once so the respective
file is assuredly in place; luci restart needed afterwards):

---
sed -i.std "/logger_luci/bone;b;:one s|INFO|DEBUG|;ttwo;n;bone;:two n;btwo" \
  /var/lib/luci/etc/luci.ini
---


Thanks,
Jan




More information about the Linux-cluster mailing list