Как исправить блокировку общего ресурса TeamCity после тяжелого сбоя?

Предыстория: у меня есть установка TeamCity с десятками конфигураций сборки. Многие из этих конфигураций сборки развертываются на одних и тех же серверах. Чтобы смягчить любые конфликты, я использовал функцию общих ресурсов TeamCity для управления работой этих сборок. Все сборки, которые развертываются на одном конкретном сервере, требуют блокировки записи для одного и того же общего ресурса; таким образом, они не будут пытаться выполнить развертывание на одном и том же сервере одновременно.

В выходные у нас был тяжелый сбой из-за отключения электроэнергии. Сбой произошел во время работы сборки, которая имела блокировку записи на общем ресурсе. Теперь кажется, что блокировка записи не была снята. Ни одна из сборок, использующих этот общий ресурс, не может быть запущена - все они просто стоят в очереди. Если я отключу ресурс, а затем снова включу его, сборка будет запущена, но в следующий раз она просто снова встанет в очередь.

Я бы действительно не хотел удалять и заново создавать эти общие ресурсы; каждый используется 6-9 конфигурациями сборки, и переназначение их всех было бы огромной головной болью. Как снять снятую блокировку записи?

1 ответ

Решение

Ник, состояние блокировки общего ресурса определяется во время выполнения и нигде не сохраняется. Таким образом, если существует зависшая сборка, требующая блокировки записи, это может вызвать описанное поведение. В этом случае вы должны проверить наличие зависших сборок и принудительно прекратить их для снятия блокировки

Кроме того, существует проблема TW-36042 в TeamCity 8.1.2, которая заставляет ресурсы с бесконечной квотой работать неправильно при блокировках записи. Если ваше поведение соответствует этому в проблеме - обходной путь (до обновления 8.1.3) заключается в преобразовании бесконечного ресурса в ресурс с указанной квотой

Другие вопросы по тегам