Вот код главного скрипта. Он используется как пускалка для скриптов которые пишут в базу (fillers). Часто, при непонятных обстоятельствах получаю для нескольких (от 1 до 6-8 из 26(это мой тестовый набор; потому что отрабатывает быстро)) filler`ов обрезанный лог такого типа
# Logfile created on 2012-08-08 09:54:04 +0300 by logger.rb/31641
[2012-08-08 09:54:04] INFO: Passed queries:
[2012-08-08 09:54:04] INFO: ----------------------------------------------------------------------
[2012-08-08 09:54:04] INFO: INSERT INTO sources (source) VALUES (?);
[2012-08-08 09:54:04] INFO: ----------------------------------------------------------------------
08_sources.log lines 1-5/5 (END)
вместо следующего нормального
# Logfile created on 2012-08-06 00:28:57 +0300 by logger.rb/31641
[2012-08-06 00:28:57] INFO: Passed queries:
[2012-08-06 00:28:57] INFO: ----------------------------------------------------------------------
[2012-08-06 00:28:57] INFO: INSERT INTO sources (source) VALUES (?);
[2012-08-06 00:28:57] INFO: ----------------------------------------------------------------------
[2012-08-06 00:28:59] INFO: =================================== SUMMARY ===================================
[2012-08-06 00:28:59] INFO: Time elapsed: 2.009950587 seconds
[2012-08-06 00:28:59] INFO: Total amount of jobs for processing: 29
[2012-08-06 00:28:59] INFO: Successful inserts: 29
[2012-08-06 00:28:59] INFO: Faileddddd inserts: 0
чтобы избежать сего бага (логи мне нужны) добавил епический костыль в виде sleep`а. но так так я не уверен был где баг(и), sleep'ы я добавил в оба модули (database, строка 120 и 127; logger, строка 113), которые ждут завершения работы основных тредов (все тот же main script, строки 51-55)
В модуль работы с базой я добавил слип потому что раньше у меня всплывал следующий баг
vv@crusader ~/work/own/python/portage3/bin/db_population $ rm /dev/shm/test-20120724-221542/35_ebuild_descriptions_p3.log && ./35_ebuild_descriptions_p3.rb && cat /dev/shm/test-20120724-221542/35_ebuild_descriptions_p3.log
15837
25013
5832
# Logfile created on 2012-07-25 13:01:31 +0300 by logger.rb/31641
[2012-07-25 13:01:36 +0300] ERROR: Message: cannot use a closed statement
[2012-07-25 13:01:36 +0300] ERROR: Values: [3133, 14891]
[2012-07-25 13:01:36 +0300] ERROR: Message: cannot use a closed statement
[2012-07-25 13:01:36 +0300] ERROR: Values: [3134, 17036]
[2012-07-25 13:01:36 +0300] ERROR: Message: cannot use a closed statement
[2012-07-25 13:01:36 +0300] ERROR: Values: [3134, 17037]
[2012-07-25 13:01:36 +0300] ERROR: Message: cannot use a closed statement
[2012-07-25 13:01:36 +0300] ERROR: Values: [3135, 10195]
[2012-07-25 13:01:36 +0300] ERROR: Message: cannot use a closed statement
[2012-07-25 13:01:36 +0300] ERROR: Values: [3135, 10198]
[2012-07-25 13:01:36 +0300] ERROR: Message: cannot use a closed statement
[2012-07-25 13:01:36 +0300] ERROR: Values: [3135, 10203]
[2012-07-25 13:01:36 +0300] ERROR: Message: cannot use a closed statement
[2012-07-25 13:01:36 +0300] ERROR: Values: [3136, 3514]
[2012-07-25 13:01:36 +0300] ERROR: Message: cannot use a closed statement
[2012-07-25 13:01:36 +0300] ERROR: Values: [3137, 14993]
[2012-07-25 13:01:36 +0300] ERROR: Some ebuilds(25013 items) miss its description
vv@crusader ~/work/own/python/portage3/bin/db_population $
Сейчас его вроде как нет, но я не уверен что он не «прячется» за другим(и) багами связанными с тредами
Зато сейчас (как и раньше) «редко но метко» выскакивает следующий баг
/home/vv/work/own/python/portage3/lib/common/script.rb:110:in `join': deadlock detected (fatal)
from /home/vv/work/own/python/portage3/lib/common/script.rb:110:in `block in run_workers'
from /home/vv/work/own/python/portage3/lib/common/script.rb:110:in `each'
from /home/vv/work/own/python/portage3/lib/common/script.rb:110:in `run_workers'
from /home/vv/work/own/python/portage3/lib/common/script.rb:52:in `fill_table_X'
from /home/vv/work/own/python/portage3/lib/common/script.rb:39:in `initialize'
from ././db_population/14_packages.rb:21:in `new'
from ././db_population/14_packages.rb:21:in `<main>'
Я не уверен связан ли он с моей проблемой логгирования, но «раз ж пошла такая пьянка..» (с)
Буду благодарен за дельные советы