using iterators to reduce memory use

Mike Bonnet mikeb at redhat.com
Thu Jul 31 23:42:46 UTC 2014


On 7/30/14, 2:32 PM, Mike McLean wrote:
> On 07/29/2014 05:43 PM, Mike McLean wrote:
>> These changes cause the hub to use generators for some potentially large
>> queries internally. The point is to reduce memory usage.
>>
>> In the case that a large query is returned via rpc, the marshaller has
>> been extended to handle generators. The marshaller will still create a
>> giant pile of xml, but we at least still save the memory for the
>> original data.
>>
>> I also have some work on an iterating marshaller that will not keep the
>> entire xml return in memory, but that's a bit more complicated, so I'm
>> going to leave that for another day.
>>
>> There are other cases (e.g. repo_init) where we have very large queries
>> internally. In these cases, this patch set will result in significant
>> memory savings.
>
> A few more related changes, additional logging and a bugfix.
>
> Also, will probably drop the chunksize patch, doesn't seem to matter
> when unless the db connection has a lot of lag.
>
> These changes are working well for me and are likely to land in git soon.

Here's a small patch to fix chain-maven, which can override a G:A:V in 
the tag with a build from the chain.  Tested locally and it fixes the 
regression in chain-maven builds for me.

-------------- next part --------------
From 7f391b08bf04e3872c57ede21d651cfb7c4f957b Mon Sep 17 00:00:00 2001
From: Mike Bonnet <mikeb at redhat.com>
Date: Thu, 31 Jul 2014 19:39:32 -0400
Subject: [PATCH] maven-chain builds can override a G:A:V from the tag with a
 previous build in the chain, update the index accordingly

---
 hub/kojihub.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/hub/kojihub.py b/hub/kojihub.py
index 62220cf..ed17f23 100644
--- a/hub/kojihub.py
+++ b/hub/kojihub.py
@@ -10428,8 +10428,9 @@ class HostExports(object):
                                 archive['artifact_id'], {}).setdefault(
                                     archive['version'], archive['build_id'])
                     if idx_build != archive['build_id']:
-                        logger.error("Found multiple builds for %(group_id)s:%(artifact_id)s:%(version)s. Current build: %(build_id)i", archive)
-                        logger.error("Indexed build id was %i", idx_build)
+                        logger.error("Overriding build for %(group_id)s:%(artifact_id)s:%(version)s.", archive)
+                        logger.error("Current build is %s, new build is %s.", idx_build, archive['build_id'])
+                        maven_build_index[archive['group_id']][archive['artifact_id']][archive['version']] = archive['build_id']
 
         ignore.extend(task_deps.values())
 
-- 
1.8.2.1


More information about the buildsys mailing list