Фиксация Subversion выполняется очень медленно из-за постфиксации

Я столкнулся с очень странной проблемой: я использую mailer.py в качестве перехватчиков после фиксации для отправки кодов различий разработчикам. Но затем я обнаружил, что регистрация всех кодов в этом репозитории очень медленная, даже регистрация 1 файла будет стоить около 2 минут. Отключение пост-фиксации значительно ускорит регистрацию кодов. Я проверяю журнал Apache и журнал Subversion, но не нахожу ничего ценного. Может ли кто-нибудь дать некоторое представление об этой проблеме?

Среда: Redhat EL 5.4 + CollabNet SubversionEdge 2.0

Спасибо,

Джеффри


person asticx    schedule 01.09.2011    source источник
comment
Моя гипотеза заключается в том, что ваш скрипт ловушки после фиксации занимает около 2 минут.   -  person Álvaro González    schedule 01.09.2011
comment
Да, это занимает много времени, но я предполагал, что после фиксации выполняется асинхронно, но это не так. В любом случае, я нашел способ запускать задачи в качестве фоновой задачи.   -  person asticx    schedule 01.09.2011


Ответы (2)


Возможно, вы можете создать задачи diff и mailer как отдельные процессы из сценария после фиксации. Таким образом, процесс возврата может завершиться и вернуться, в то время как длительные операции продолжаются в качестве фоновой задачи.

person Amardeep AC9MF    schedule 01.09.2011
comment
Я предполагал, что посткоммит предназначен для запуска в качестве фоновой задачи, но после некоторого поиска я получил один комментарий: при запуске хуков svn вызывает apr_proc_wait, apr_proc_wait предназначен для ожидания завершения всех дочерних процессов перед возвратом. Поэтому я должен добавить ›› /dev/null 2›&1, а также &, чтобы проверка различий и почтовая программа были отделены от процесса после фиксации. Похоже, все работает так, как я ожидал. - person asticx; 01.09.2011

Я просто столкнулся с той же проблемой. Раньше mailer.py работал нормально, с почти немедленными фиксациями, но после развертывания новой схемы аутентификации, которая включала ошибочную запись автомонтирования, она начала замедляться до нескольких минут.
Все сводилось к тестированию mailer.py на наличие ошибок. некоторые библиотеки, как показал запуск через strace.

Как часть хука post-commit, который обычно запускал бы mailer.py, я вставил strace примерно так:

# EXAMPLE OF DOING STRACE TO DEBUG/TROUBLESHOOT THIS:
/usr/bin/strace /usr/share/doc/subversion-1.6.11/tools/hook-scripts/mailer/mailer.py commit "$REPOS" "$REV" > /tmp/zzSTRACE-MAILER 2>&1
# (The original line is)
# /usr/share/doc/subversion-1.6.11/tools/hook-scripts/mailer/mailer.py commit "$REPOS" "$REV"


Это показало, что скрипт ищет файлы os.py и os.pyc в нескольких местах (в моей системе CentOS 6 они находятся в /usr/lib64/python2.6).
Одно из искомых мест это /users, который был на карте автомонтирования, указывающей на не отвечающий сервер. Таким образом, он завис до тех пор, пока не истечет время, затем сценарий продолжился, и операция фиксации завершилась нормально - только с такой огромной задержкой.

Исправление записи автомонтирования / исправление этого сервера немедленно решило проблему.
Надеюсь, это поможет.

person David Ramirez    schedule 06.08.2014