wireproto: remove support for local results in @batchable (API)
authorGregory Szorc <gregory.szorc@gmail.com>
Wed, 09 Aug 2017 22:52:05 -0700
changeset 33765 e2fc2122029c
parent 33764 297d1b70685c
child 33766 4c706037adef
wireproto: remove support for local results in @batchable (API) @peer.batchable decorated generator functions have two forms: yield value, None and yield args, future yield value These forms have been present since the decorator was introduced. There are currently no in-repo consumers of the first form. So this commit removes support for it. Note that remoteiterbatcher.submit() asserts the 2nd form. And b6e71f8af5b8 removed the last user of remotebatcher, forcing everyone to remoteiterbatcher. So anything relying on this in the wild would have been broken since b6e71f8af5b8. .. api:: @peer.batchable can no longer emit local values Differential Revision: https://phab.mercurial-scm.org/D318
mercurial/peer.py
mercurial/wireproto.py
tests/test-batching.py
tests/test-batching.py.out
--- a/mercurial/peer.py	Wed Aug 09 21:51:45 2017 -0700
+++ b/mercurial/peer.py	Wed Aug 09 22:52:05 2017 -0700
@@ -78,9 +78,6 @@
 
     @batchable
     def sample(self, one, two=None):
-        # Handle locally computable results first:
-        if not one:
-            yield "a local result", None
         # Build list of encoded arguments suitable for your wire protocol:
         encargs = [('one', encode(one),), ('two', encode(two),)]
         # Create future for injection of encoded result:
--- a/mercurial/wireproto.py	Wed Aug 09 21:51:45 2017 -0700
+++ b/mercurial/wireproto.py	Wed Aug 09 22:52:05 2017 -0700
@@ -95,11 +95,9 @@
             if batchablefn is not None:
                 batchable = batchablefn(mtd.im_self, *args, **opts)
                 encargsorres, encresref = next(batchable)
-                if encresref:
-                    req.append((name, encargsorres,))
-                    rsp.append((batchable, encresref, resref,))
-                else:
-                    resref.set(encargsorres)
+                assert encresref
+                req.append((name, encargsorres,))
+                rsp.append((batchable, encresref, resref,))
             else:
                 if req:
                     self._submitreq(req, rsp)
--- a/tests/test-batching.py	Wed Aug 09 21:51:45 2017 -0700
+++ b/tests/test-batching.py	Wed Aug 09 22:52:05 2017 -0700
@@ -45,7 +45,6 @@
     batch = it.batch()
     # The calls return futures to eventually hold results.
     foo = batch.foo(one="One", two="Two")
-    foo2 = batch.foo(None)
     bar = batch.bar("Eins", "Zwei")
     # We can call non-batchable proxy methods, but the break the current batch
     # request and cause additional roundtrips.
@@ -58,7 +57,6 @@
     batch.submit()
     # After the call to submit, the futures actually contain values.
     print(foo.value)
-    print(foo2.value)
     print(bar.value)
     print(greet.value)
     print(hello.value)
@@ -153,8 +151,6 @@
 
     @peer.batchable
     def foo(self, one, two=None):
-        if not one:
-            yield "Nope", None
         encargs = [('one', mangle(one),), ('two', mangle(two),)]
         encresref = peer.future()
         yield encargs, encresref
--- a/tests/test-batching.py.out	Wed Aug 09 21:51:45 2017 -0700
+++ b/tests/test-batching.py.out	Wed Aug 09 22:52:05 2017 -0700
@@ -4,7 +4,6 @@
 Un and Deux
 Eins und Zwei
 One and Two
-Nope
 Eins und Zwei
 Hello, John Smith
 Ready.
@@ -25,7 +24,6 @@
 REQ: batch?cmds=bar:b=Vop,a=Evf
   -> Vop!voe!Evf
 One and Two
-Nope
 Eins und Zwei
 Hello, John Smith
 Ready.