sapling/mercurial
Gregory Szorc c3d3dc57f1 wireproto: properly implement batchable checking
remoteiterbatcher (unlike remotebatcher) only supports batchable
commands. This claim can be validated by comparing their
implementations of submit() and noting how remoteiterbatcher assumes
the invoked method has a "batchable" attribute, which is set by
@peer.batchable.

remoteiterbatcher has a custom __getitem__ that was trying to
validate that only batchable methods are called. However, it was only
validating that the called method exists, not that it is batchable.

This wasn't a big deal since remoteiterbatcher.submit() would raise
an AttributeError attempting to `mtd.batchable(...)`.

Let's fix the check and convert it to ProgrammingError, which may
not have been around when this was originally implemented.

Differential Revision: https://phab.mercurial-scm.org/D317
2017-08-09 21:51:45 -07:00
..
cext cext: modernize charencode.c to use Py_ssize_t 2017-07-31 22:58:06 +09:00
cffi policy: reroute proxy modules internally 2017-07-31 23:40:36 +09:00
default.d mergetools.rc: find OSX FileMerge in the new location inside Xcode 4.3 2015-10-16 11:37:34 +02:00
help sparse: add a requirement when a repository uses sparse (BC) 2017-07-17 11:45:38 -07:00
hgweb revset: pass repo when passing ui 2017-07-15 15:51:57 -07:00
httpclient httpclient: don't use mutable default argument value 2017-03-14 23:49:25 -07:00
pure encoding: drop circular import by proxying through '<policy>.charencode' 2017-07-31 23:13:47 +09:00
templates gitweb: preserve whitespace in description 2017-07-17 15:54:15 -07:00
__init__.py selector2: vendor selector2 library 2017-07-14 20:19:46 -07:00
ancestor.py py3: add __bool__ to every class defining __nonzero__ 2017-03-13 12:40:14 -07:00
archival.py archive: add an experimental config to control the metadata file template 2017-07-17 00:49:29 -04:00
bdiff.c bdiff: split bdiff into cpy-aware and cpy-agnostic part 2016-07-13 10:46:26 +02:00
bdiff.h bdiff: split bdiff into cpy-aware and cpy-agnostic part 2016-07-13 10:46:26 +02:00
bitmanipulation.h internals: move the bitmanipulation routines into its own file 2016-06-06 13:08:13 +02:00
bookmarks.py bookmark: deprecate direct del of a bookmark value 2017-07-10 21:49:37 +02:00
branchmap.py cachevfs: migration the revbranchcache to 'cachevfs' 2017-07-15 22:42:50 +02:00
bundle2.py transaction-summary: display the summary for all transactions 2017-07-16 02:20:06 +02:00
bundlerepo.py configitems: register the 'bundle.mainreporoot' config 2017-06-30 03:31:26 +02:00
byterange.py pycompat: switch to util.urlreq/util.urlerr for py3 compat 2016-04-06 23:22:12 +00:00
changegroup.py changegroup: more **kwargs 2017-07-24 11:28:59 -04:00
changelog.py revlog: make 'storedeltachains' a "public" attribute 2016-10-14 02:25:08 +02:00
chgserver.py codemod: register core configitems using a script 2017-07-14 14:22:40 -07:00
cmdutil.py merge with stable 2017-08-10 18:55:33 -04:00
color.py configitems: register the 'ui.color' config 2017-07-15 14:14:53 +02:00
commands.py context: rename troubled into isunstable 2017-08-02 19:13:56 +02:00
commandserver.py commandserver: do not handle EINTR for selector.select 2017-07-16 11:17:00 -07:00
compat.h compat: define ssize_t as int on 32bit Windows, silences C4142 warning 2016-07-15 23:54:56 +09:00
config.py ui: move configlist parser to config.py 2017-03-17 09:19:56 -07:00
configitems.py configitems: register the 'ui.color' config 2017-07-15 14:14:53 +02:00
context.py context: rename troubled into isunstable 2017-08-02 19:13:56 +02:00
copies.py merge: avoid superfluous filemerges when grafting through renames (issue5407) 2016-10-25 21:01:53 +02:00
crecord.py patch: rewrite reversehunks (issue5337) 2017-06-20 23:22:38 -07:00
dagop.py followlines: join merge parents line ranges in blockdescendants() (issue5595) 2017-07-05 13:54:53 +02:00
dagparser.py dagparser: make print statement in doctest Py3 portable 2017-06-15 13:32:02 -04:00
dagutil.py dagutil: use absolute_import 2015-08-08 19:04:09 -07:00
debugcommands.py win32: copy-edit debugssl messages to match prevailing style 2017-07-17 13:22:59 -05:00
destutil.py show: implement "stack" view 2017-07-01 22:38:42 -07:00
dirstate.py merge with stable 2017-08-10 18:55:33 -04:00
dirstateguard.py rebase: use one dirstateguard for when using rebase.singletransaction 2017-07-20 01:30:41 -07:00
discovery.py checkheads: use a "lazyancestors" object for allfuturecommon 2017-06-05 13:44:15 +01:00
dispatch.py ui: enable pager always for explicit --pager=on (issue5580) 2017-08-01 18:52:52 +09:00
dummycert.pem
encoding.py encoding: drop circular import by proxying through '<policy>.charencode' 2017-07-31 23:13:47 +09:00
error.py error: rename RichIOError to PeerTransportError 2017-04-16 11:12:37 -07:00
exchange.py context: rename troubled into isunstable 2017-08-02 19:13:56 +02:00
exewrapper.c exewrapper: add .dll to LoadLibrary() argument 2016-04-27 09:23:39 -07:00
extensions.py extensions: attempt to use non-deprecated inspect method 2017-07-25 22:48:46 -04:00
fancyopts.py py3: slice over bytes to prevent getting it's ascii value 2017-06-25 08:36:51 +05:30
filelog.py revlog: merge hash checking subfunctions 2016-12-13 14:21:36 +00:00
filemerge.py configitems: register the 'ui.mergemarkertemplate' config 2017-06-30 03:44:56 +02:00
fileset.py help: clarify quotes are needed for filesets.size expressions 2016-09-21 16:33:37 +00:00
formatter.py formatter: proxy fm.context() through converter 2017-06-26 09:33:01 +09:00
graphmod.py dagop: split module hosting DAG-related algorithms from revset 2016-10-16 18:03:24 +09:00
hbisect.py bisect: move check_state into the bisect module 2016-08-24 04:25:20 +02:00
help.py codemod: register core configitems using a script 2017-07-14 14:22:40 -07:00
hg.py py3: use bytes IO to write sample hgrc 2017-08-03 00:45:02 +09:00
hook.py py3: convert keys of kwargs back to bytes using pycompat.byteskwargs() 2017-06-17 15:29:26 +05:30
httpconnection.py codemod: register core configitems using a script 2017-07-14 14:22:40 -07:00
httppeer.py codemod: register core configitems using a script 2017-07-14 14:22:40 -07:00
i18n.py i18n: make the locale directory name the same string type as the datapath 2016-10-08 05:26:18 -04:00
keepalive.py keepalive: send HTTP request headers in a deterministic order 2017-04-13 18:04:38 -07:00
localrepo.py merge with stable 2017-08-10 18:55:33 -04:00
lock.py lock: avoid unintentional lock acquisition at failure of readlock 2017-05-01 19:59:13 +09:00
lsprof.py lsprof: use print function 2016-01-02 11:40:53 -08:00
lsprofcalltree.py lsprofcalltree: use print function 2016-01-02 11:45:29 -08:00
mail.py codemod: register core configitems using a script 2017-07-14 14:22:40 -07:00
manifest.py manifest: apply checkambig=True only for root 00manifest.i 2017-06-30 01:47:48 +09:00
match.py match: override visitdir() in nevermatcher to return False 2017-07-19 14:50:50 -07:00
mdiff.py py3: use pycompat.strkwargs() to convert kwargs keys to str 2017-06-27 00:23:32 +05:30
merge.py codemod: register core configitems using a script 2017-07-14 14:22:40 -07:00
mergeutil.py checkunresolved: move to new package to help avoid import cycles 2016-11-21 21:31:45 -05:00
minirst.py minirst: look for column delimiters using slices instead of indicies 2017-05-28 15:47:43 -04:00
mpatch.c internals: move the bitmanipulation routines into its own file 2016-06-06 13:08:13 +02:00
mpatch.h mpatch: raise MemoryError instead of mpatchError if lalloc() failed 2016-08-07 10:06:56 +09:00
namespaces.py namespaces: record and expose whether namespace is built-in 2017-06-24 14:52:15 -07:00
node.py node: use byte literals to construct nullid and wdirid 2016-03-12 14:04:57 -08:00
obsolete.py obsutil: rename allprecursors into allpredecessors 2017-08-02 19:49:57 +02:00
obsutil.py obsutil: rename allprecursors into allpredecessors 2017-08-02 19:49:57 +02:00
parser.py parser: preserve order of keyword arguments 2017-04-09 11:58:27 +09:00
patch.py patch: update copying of dict keys and values to work on Python 3 2017-07-24 14:42:55 -04:00
pathutil.py pathauditor: disable cache of audited paths by default (issue5628) 2017-07-26 22:10:15 +09:00
peer.py py3: convert to next() function 2016-05-16 21:30:53 +00:00
phases.py phases: remove trace of addednodes in the 'phase-heads' handling 2017-07-13 21:10:55 +02:00
policy.py policy: reroute proxy modules internally 2017-07-31 23:40:36 +09:00
posix.py ssh: quote parameters using shellquote (SEC) 2017-08-04 23:54:12 -07:00
profiling.py codemod: register core configitems using a script 2017-07-14 14:22:40 -07:00
progress.py codemod: register core configitems using a script 2017-07-14 14:22:40 -07:00
pushkey.py pushkey: use absolute_import 2015-08-08 19:57:27 -07:00
pvec.py pvec: use absolute_import 2015-12-21 21:32:58 -08:00
pycompat.py util: fix sortdict.update() to call __setitem__() on PyPy (issue5639) 2017-08-02 22:51:19 +09:00
rcutil.py pager: use less as a fallback on Unix 2017-04-28 20:51:14 +09:00
registrar.py filemerge: move decorator definition for internal merge tools to registrar 2017-08-06 01:13:57 +09:00
repair.py repair: move manifest strip to a separate function 2017-08-08 17:25:38 -07:00
repoview.py cleanup: replace uses of util.(md5|sha1|sha256|sha512) with hashlib.\1 2016-06-10 00:12:33 -04:00
revlog.py revlog: use struct.Struct instances for slight performance wins 2017-07-10 16:41:13 -04:00
revset.py revset: add experimental ancestors/descendants relation subscript 2017-07-08 13:15:17 +09:00
revsetlang.py revset: add experimental relation and subscript operators 2017-07-08 13:07:59 +09:00
scmposix.py pager: use less as a fallback on Unix 2017-04-28 20:51:14 +09:00
scmutil.py pathauditor: disable cache of audited paths by default (issue5628) 2017-07-26 22:10:15 +09:00
scmwindows.py pager: use less as a fallback on Unix 2017-04-28 20:51:14 +09:00
selectors2.py selector2: vendor selector2 library 2017-07-14 20:19:46 -07:00
server.py serve: add support for Mercurial subrepositories 2017-04-15 18:05:40 -04:00
setdiscovery.py setdiscovery: use iterbatch interface instead of batch 2016-03-01 17:44:41 -05:00
similar.py similar: remove caching from the module level 2017-01-13 11:42:36 -08:00
simplemerge.py py3: convert kwargs' keys' to str using pycompat.strkwargs() 2017-06-22 03:16:16 +05:30
smartset.py smartset: fix generatorset.last() to not return the first element (issue5609) 2017-06-27 23:50:22 +09:00
sparse.py sparse: add a requirement when a repository uses sparse (BC) 2017-07-17 11:45:38 -07:00
sshpeer.py merge with stable 2017-08-10 18:55:33 -04:00
sshserver.py wireproto: compress data from a generator 2016-10-16 11:10:21 -07:00
sslutil.py sslutil: inform the user about how to fix an incomplete certificate chain 2017-07-12 18:37:13 -04:00
statichttprepo.py statichttprepo: implement wlock() (issue5613) 2017-07-29 12:50:56 -07:00
statprof.py statprof: require input file 2017-01-18 22:45:07 -08:00
store.py vfs: rename auditvfs to proxyvfs 2017-07-07 23:40:00 +09:00
streamclone.py codemod: register core configitems using a script 2017-07-14 14:22:40 -07:00
subrepo.py subrepo: add tests for svn rogue ssh urls (SEC) 2017-07-31 16:44:17 -07:00
tagmerge.py tagmerge: use workingfilectx to write merged tags 2017-07-11 16:48:15 -07:00
tags.py cachevfs: migration the tags fnode cache to 'cachevfs' 2017-07-15 23:30:25 +02:00
templatefilters.py templatefilters: fix crash by string formatting of '{x|splitlines}' 2017-04-15 10:51:17 +09:00
templatekw.py context: rename troubles into instabilities 2017-08-02 18:34:39 +02:00
templater.py revset: pass repo when passing ui 2017-07-15 15:51:57 -07:00
transaction.py transaction: apply checkambig=True only on limited files for similarity 2017-07-04 23:13:47 +09:00
treediscovery.py error: get Abort from 'error' instead of 'util' 2015-10-08 12:55:45 -07:00
txnutil.py txnutil: factor out the logic to read file in according to HG_PENDING 2017-02-21 01:20:59 +09:00
ui.py merge with stable 2017-08-10 14:23:41 -04:00
unionrepo.py configitems: register the 'bundle.mainreporoot' config 2017-06-30 03:31:26 +02:00
upgrade.py codemod: simplify nested withs 2017-07-13 18:31:35 -07:00
url.py codemod: register core configitems using a script 2017-07-14 14:22:40 -07:00
util.py merge with stable 2017-08-10 18:55:33 -04:00
verify.py codemod: register core configitems using a script 2017-07-14 14:22:40 -07:00
vfs.py pathauditor: disable cache of audited paths by default (issue5628) 2017-07-26 22:10:15 +09:00
win32.py win32: work around a WinError problem handling HRESULT types 2017-03-30 00:33:00 -04:00
windows.py ssh: quote parameters using shellquote (SEC) 2017-08-04 23:54:12 -07:00
wireproto.py wireproto: properly implement batchable checking 2017-08-09 21:51:45 -07:00
worker.py worker: propagate exit code to main process 2017-04-15 13:27:44 +09:00