client: don't start the IntroducerClient until the Tub is ready, otherwise we will...
authorBrian Warner <warner@allmydata.com>
Wed, 23 Apr 2008 21:52:34 +0000 (14:52 -0700)
committerBrian Warner <warner@allmydata.com>
Wed, 23 Apr 2008 21:52:34 +0000 (14:52 -0700)
src/allmydata/client.py

index e21ed6ff972ade0bd05bd9099afde7719dd58eb8..87f77f48e40514cb369fdc553660eb829feaca10 100644 (file)
@@ -101,9 +101,16 @@ class Client(node.Node, testutil.PollMixin):
                               str(allmydata.__version__),
                               str(self.OLDEST_SUPPORTED_VERSION))
         self.introducer_client = ic
-        ic.setServiceParent(self)
-        # nodes that want to upload and download will need storage servers
-        ic.subscribe_to("storage")
+        # hold off on starting the IntroducerClient until our tub has been
+        # started, so we'll have a useful address on our RemoteReference, so
+        # that the introducer's status page will show us.
+        d = self.when_tub_ready()
+        def _start_introducer_client(res):
+            ic.setServiceParent(self)
+            # nodes that want to upload and download will need storage servers
+            ic.subscribe_to("storage")
+        d.addCallback(_start_introducer_client)
+        d.addErrback(log.err, facility="tahoe.init", level=log.BAD)
 
     def init_stats_provider(self):
         gatherer_furl = self.get_config('stats_gatherer.furl')