Index: src/allmydata/mutable/servermap.py
===================================================================
--- src/allmydata/mutable/servermap.py	(revision ce32b5aba8165bda40f484f91d60e27dcc977d08)
+++ src/allmydata/mutable/servermap.py	(revision 9db2f65ebb8eaa4f6094f2f99eff928ba285f5f5)
@@ -675,7 +675,5 @@
         self._status.add_per_server_time(server, "query", started, elapsed)
 
-        if datavs:
-            self._good_servers.add(server)
-        else:
+        if not datavs:
             self._empty_servers.add(server)
 
@@ -1410,4 +1408,6 @@
             dl.addCallback(lambda verinfo, shnum=shnum, data=data:
                            self._cache_good_sharedata(verinfo, shnum, now, data))
+            dl.addCallback(lambda r: self._good_servers.add(server))
+
             ds.append(dl)
         # dl is a deferred list that will fire when all of the shares
