From 45176adec75bd522cbee9942203f3abf6cc8dc62 Mon Sep 17 00:00:00 2001 From: dim Date: Mon, 25 Feb 2008 14:11:33 +0000 Subject: [PATCH] Don't wait for non started threads (PGLoader init could error out) --- pgloader.py | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/pgloader.py b/pgloader.py index 002aaf0..db00c3a 100644 --- a/pgloader.py +++ b/pgloader.py @@ -478,26 +478,36 @@ def load_data(): s = sections[current] try: + loader = None summary [s] = [] started [s] = threading.Event() finished[s] = threading.Event() - - loader = PGLoader(s, config, sem, + + try: + loader = PGLoader(s, config, sem, (started[s], finished[s]), summary[s]) - if not loader.template: - filename = loader.filename - input_encoding = loader.input_encoding - threads[s] = loader + except PGLoader_Error, e: + # could not initialize properly this loader, don't + # ever wait for it + started[s] .set() + finished[s].set() + log.error(e) - # .start() will sem.aquire(), so we won't have more - # than max_running threads running at any time. - log.debug("Starting thread for %s" % s) - threads[s].start() - else: - log.info("Skipping section %s, which is a template" % s) + if loader: + if not loader.template: + filename = loader.filename + input_encoding = loader.input_encoding + threads[s] = loader - for d in (summary, started, finished): - d.pop(s) + # .start() will sem.aquire(), so we won't have more + # than max_running threads running at any time. + log.debug("Starting thread for %s" % s) + threads[s].start() + else: + log.info("Skipping section %s, which is a template" % s) + + for d in (summary, started, finished): + d.pop(s) except PGLoader_Error, e: if e == '':