К сожалению, из-за неожиданного поведения серверного кода, в одну из указанных выше процедур передавался определённый аргумент (не имевший значения по умолчанию), вызывая программную ошибку при каждом вызове процедуры перехода 'захватываемая станция -> главная станция'. Всего таких станций (захватываемых + главных) на Tranquility 10 штук.
Исправляя ситуацию, мы не заметили, что флаг ошибки в процедуре выставлялся не правильный (не правильный в том смысле, что не закрывал транзакцию). Этим процедура блокировала сессию с базой данных, бесконечно ожидая либо закрытия транзакции, либо её отката; этим блокировались все остальные запросы. Это и вызывало крах сервера базы данных.
Такая же засада находится ещё в 2х процедурах бд, но эти процедуры вызываются настолько редко, что не приводят к проблемам.
Суммируя сказанное: происходила серия неожиданных ошибок, приводящая к тому, что одна из 10 станций блокировала все подключния к базам данных, пока сервер не отключался и разработчики не могли снять блокировки вручную. Сейчас мы пересматриваем наши процедуры установки серверных патчей, чтобы избежать таких проблем в будущем.
Обсудить эту новость вы можете в этой ветке официального форума.
Оригинал новости.
Сообщение отредактировал AllSeeingI: 16 September 2007 - 6:14