[Checkins] SVN: zc.zkzeo/trunk/src/zc/zkzeo/ Fixed: setting a monitor server on a unix-domain socket didn't work.

jim cvs-admin at zope.org
Fri Jun 22 18:36:45 UTC 2012


Log message for revision 127038:
  Fixed: setting a monitor server on a unix-domain socket didn't work.
  

Changed:
  U   zc.zkzeo/trunk/src/zc/zkzeo/README.txt
  U   zc.zkzeo/trunk/src/zc/zkzeo/runzeo.py

-=-
Modified: zc.zkzeo/trunk/src/zc/zkzeo/README.txt
===================================================================
--- zc.zkzeo/trunk/src/zc/zkzeo/README.txt	2012-06-22 18:16:20 UTC (rev 127037)
+++ zc.zkzeo/trunk/src/zc/zkzeo/README.txt	2012-06-22 18:36:42 UTC (rev 127038)
@@ -97,8 +97,7 @@
 
 .. -> server_conf
 
-    >>> stop = zc.zkzeo.runzeo.test(
-    ...     server_conf)
+    >>> stop = zc.zkzeo.runzeo.test(server_conf)
 
 The value is the address to listen on.
 
@@ -112,6 +111,53 @@
         monitor = u'127.0.0.1:11976'
         pid = 5082
 
+.. verify that we can connect to the monitor:
+
+    >>> [monitor_addr] = zk.get_children('/databases/demo')
+    >>> host, port = monitor_addr.split(':')
+    >>> import socket
+    >>> sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+    >>> sock.settimeout(.5)
+    >>> sock.connect((host, int(port)))
+    >>> sock.close()
+    >>> _ = stop()
+
+You can also specify a unix-domain socket name::
+
+   <zeo>
+      address 127.0.0.1
+   </zeo>
+
+   <zookeeper>
+      connection zookeeper.example.com:2181
+      path /databases/demo
+      monitor-server ./monitor.sock
+   </zookeeper>
+
+   <filestorage>
+      path demo.fs
+   </filestorage>
+
+.. -> server_conf
+
+    >>> stop = zc.zkzeo.runzeo.test(server_conf)
+
+When using a unix-domain socket, the monitor address isn't included in
+the tree:
+
+    >>> zk.print_tree('/databases/demo')
+    /demo
+      /127.0.0.1:64213
+        pid = 5082
+
+.. verify that we can connect to the monitor:
+
+    >>> sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
+    >>> sock.settimeout(.5)
+    >>> sock.connect('./monitor.sock')
+    >>> sock.close()
+
+
 Some notes on the monitor server:
 
 - A monitor server won't be useful unless you've registered some
@@ -266,23 +312,25 @@
     >>> print zk.export_tree('/databases/demo', ephemeral=True),
     /demo
       /127.0.0.1:56837
-        monitor = u'127.0.0.1:23265'
         pid = 88841
 
     >>> wait(db_from_config.storage.is_connected)
     >>> with db_from_config.transaction() as conn:
     ...     conn.root.x = 2
     >>> wait(db_from_py.storage.is_connected, timeout=22)
+    >>> time.sleep(.1)
     >>> with db_from_py.transaction() as conn:
     ...     print conn.root()
     {'x': 2}
 
     >>> wait(db.storage.is_connected, timeout=22)
+    >>> time.sleep(.1)
     >>> with db.transaction() as conn:
     ...     print conn.root()
     {'x': 2}
 
     >>> wait(exconn.db().storage.is_connected, timeout=22)
+    >>> time.sleep(.1)
     >>> with transaction.manager:
     ...     print exconn.root()
     {'x': 2}
@@ -320,6 +368,11 @@
 Change History
 ==============
 
+0.3.1 (2012-06-22)
+------------------
+
+- Fixed: setting a monitor server on a unix-domain socket didn't work.
+
 0.3.0 (2012-02-07)
 ------------------
 

Modified: zc.zkzeo/trunk/src/zc/zkzeo/runzeo.py
===================================================================
--- zc.zkzeo/trunk/src/zc/zkzeo/runzeo.py	2012-06-22 18:16:20 UTC (rev 127037)
+++ zc.zkzeo/trunk/src/zc/zkzeo/runzeo.py	2012-06-22 18:36:42 UTC (rev 127038)
@@ -43,8 +43,11 @@
                 maddr = self.options.monitor_server.address
                 if isinstance(maddr, tuple) and maddr[1] is None:
                     maddr = maddr[0], 0
-                props['monitor'] = "%s:%s" % zc.monitor.start(maddr)
 
+                maddr = zc.monitor.start(maddr)
+                if isinstance(maddr, tuple):
+                    props['monitor'] = "%s:%s" % maddr
+
             self.__zk.register_server(self.options.zkpath, addr[:2], **props)
             if self.__testing is not None:
 



More information about the checkins mailing list