Re: Freeze Break Request: (yet another) mirrorlist: improve tree_lookup to not modify global database

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Oct 20, 2015 at 05:07:26PM +0200, Patrick Uiterwijk wrote:
> Hi all,
> 
> Since my patch of last night with deep copying the in-memory netblock database was a
> disaster due to performance issues, I have been working on an improved patch which
> avoids changing the in-memory database entirely.
> 
> The following patch uses a function that was added in py-radix 0.8 to do exactly that,
> and after deploying an updated py-radix and this patch in staging it's been working
> just fine.
> 
> Could I get +1's to both update py-radix and apply the below patch?
> I will make sure to first update one and only if that works deploy it further.
> 
> Patch:
> 
> 
> From 5bfdeebd42f9d52a1fa2326bcd9b0eb71e4d8e32 Mon Sep 17 00:00:00 2001
> From: Patrick Uiterwijk <puiterwijk@xxxxxxxxxx>
> Date: Tue, 20 Oct 2015 05:58:57 +0200
> Subject: [PATCH] Use search_covering in radix to avoid having to modify the
>  tree
> 
> Signed-off-by: Patrick Uiterwijk <puiterwijk@xxxxxxxxxx>
> ---
>  mirrorlist/mirrorlist_server.py | 8 ++------
>  requirements_mirrorlist.txt     | 2 +-
>  2 files changed, 3 insertions(+), 7 deletions(-)
> 
> diff --git a/mirrorlist/mirrorlist_server.py b/mirrorlist/mirrorlist_server.py
> index a8adcf0..3344e4e 100755
> --- a/mirrorlist/mirrorlist_server.py
> +++ b/mirrorlist/mirrorlist_server.py
> @@ -206,8 +206,7 @@ def tree_lookup(tree, ip, field, maxResults=None):
>      len_data = 0
>      if ip is None:
>          return result
> -    node = tree.search_best(ip.strNormal())
> -    while node is not None:
> +    for node in tree.search_covering(ip.strNormal()):
>          prefix = node.prefix
>          if type(node.data[field]) == list:
>              len_data += len(node.data[field])
> @@ -215,10 +214,7 @@ def tree_lookup(tree, ip, field, maxResults=None):
>              len_data += 1
>          t = (prefix, node.data[field],)
>          result.append(t)
> -        if maxResults is None or len_data < maxResults:
> -            tree.delete(prefix)
> -            node = tree.search_best(ip.strNormal())
> -        else:
> +        if maxResults is not None and len_data >= maxResults:
>              break
>      return result
> 

+1 for me as well

Pierre

Attachment: pgpqMl45hDFT5.pgp
Description: PGP signature

_______________________________________________
infrastructure mailing list
infrastructure@xxxxxxxxxxxxxxxxxxxxxxx
http://lists.fedoraproject.org/admin/infrastructure@xxxxxxxxxxxxxxxxxxxxxxx

[Index of Archives]     [Fedora Development]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]

  Powered by Linux