view .hgtags @ 1550:67b28d657f62

sqliterevmap: break ".hashes()" cycle in a safer way The `fromsvn()` revset implementation could cause weakref error when using sqliterevmap like: File "hgsubversion/util.py", line 357, in <lambda> return subset.filter(lambda r: tonode(r) in hashes) File "hgsubversion/maps.py", line 542, in __contains__ return self.get(key) != None File "hgsubversion/maps.py", line 533, in get for row in self.revmap._query( ReferenceError: weakly-referenced object no longer exists Basically the seemingly harmless assignment could break surprisingly: # dangerous: `hashes` does not have a reference of `meta.revmap` and may # become unavailable after `meta`, `revmap` being released by refcount. hashes = meta.revmap.hashes() The above syntax is nice to support while avoiding cycles is also nice. This patch removes `revmap._hashes` so the revmap no longer owns a reference of a `ReverseRevMap` object so the `ReverseRevMap` object no longer needs to use weakref for `self.revmap`. This could actually be caught by `comprehensive/test_sqlite_revmap.py`. I was not careful enough verifying the "fromsvn()" patch.
author Jun Wu <quark@fb.com>
date Thu, 21 Dec 2017 17:39:52 -0800
parents fb0f1b22550e
children d7d7e6e2f69a
line wrap: on
line source

97f2079e3778511944ffb6a662520580650a3993 1.0
09c016174e332eceda015d3f43d96d7e0228acf3 1.0.1
4359ddd73b009fbb356c52ea5d99cba25222ee7a 1.1
8e621dbb82d4363a85317638ad237e2817c56347 1.1.1
093ae2915b452539b44390ee4ea14987484e1eee 1.1.2
708234ad6c97fb52417e0b46a86c8373e25123a5 1.2
4bbc6bf947f56a92e95a04a27b94a9f72d5482d7 1.2.1
0cbf9fd89672e73165e1bb4db1ec8f7f65b95c94 1.3
07234759a3f750029ccaa001837d42fa12dd33ee 1.4
77b22e5b4ea6c248e079afd0f1e544cb5690ce20 1.5
d0f3a5c2cb56ce65d9ef1c611c8bfbebdc3bef34 1.5.1
7d47a0f731354505ed9ae8d60d2a6996e8c3294f 1.6
8caf1226adecb322e90ddb3817c604fa2fe8a66d 1.6.1
36f6d51b4edc31f1f9ce2d0d02965a85dd26a455 1.6.2
46523cdfd3b0cee0bf1366ab587686bb65211747 1.6.3
139a44a63090b2c0f8e05d7d1104d3d9c9e26f57 1.7
c1756971f8828a59c859513f208c6d79bf34c275 1.8
dde1ade36a49d3d0e1b4b8bd384a6797665b5081 1.8.1
38be7a6b6def3298fe9ffff141eb58e1370a53cc 1.8.2
759cafce6becef077fb1a152b554a05ff66b04cd 1.8.3
89997a5fc18163c5f65b83272b4521cdbf29984e 1.8.4
bd979667611d9df733c61251e7668899f3e77a8f 1.8.5
49d324e11856f5d65bd7f83f7ffb3a2f07bf82c1 1.8.6
051a517b473b7bbb7f2176ed38a34fcee96fceee 1.8.7
08ea19b989c389af65b75290664038a2d74786d5 1.9