2012-02-17 3 views
0

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

Новая информация: Когда у меня есть 2 ходовых сборки и пара в очереди (NB с 3 агентами), и я меняю приоритет на высокий - он начинает строить на последнем агенте !?

ответ

2

ОК - поэтому причиной была некорректная запись в tbl_BuildQueue в базе данных TFS. Normal Priority Builds Will Not Build in TFS 2010

Быстрое исправление заключается в том, чтобы удалить записи в tbl_BuildQueue, у которых есть определитель, который не существует.

SELECT * FROM [Tfs_Default].[dbo].[tbl_BuildQueue] where DefinitionId not in (select DefinitionId from tbl_BuildDefinition) 
0

Есть несколько вещей, которые вы можете проверить:

  • ли какие-либо из Строительства определений настроенных б Агент теги или имя агента Фильтры?
  • Есть ли какие-либо из агентов, настроенных с помощью тегов? Вы можете проверить консоль TF Admin.
  • Проверьте статус каждого агента, используя «Build» -> «Управление контроллерами сборки ...» из Visual Studio.
  • Проверьте статус каждого агента, используя консоль администратора TF на агенте.
  • Консоль администратора TF сообщает о любых событиях за последние 24 часа?
+0

Сборка не настроена на использование тегов, и ни у одного из агентов нет никаких тегов. Состояние как для контроллера, так и для агентов кажется прекрасным. Количество одновременных сборок для контроллера устанавливается на число зарегистрированных агентов. Только события в журнале, события перезапуска (контроллер и агенты) – jaspernygaard

0

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

Если вы хотите, чтобы убедиться, что это, по сути, произошло, запустите следующий запрос в базе данных коллекции проекта:

SELECT * 
    FROM tbl_BuildAgent ba 
    LEFT JOIN tbl_BuildAgentReservation bar 
    ON  bar.ReservationId = ba.ReservationId 
    WHERE ba.ReservationId IS NOT NULL 
      AND bar.ReservationId IS NULL 

Если это возвращает все строки, вы можете временно решить проблему, установив " Столбец ReservationId 'помещает поврежденные агенты сборки обратно в NULL. После обновления этого столбца любые новые сборки, поставленные в очередь после обновления, смогут использовать агент, который ранее был «ленив», как вы выразились.

Patrick

+0

Спасибо за разработку. Я проверю это в понедельник. – jaspernygaard

+0

Патрик, я пробовал свой сценарий, но не имел записей с этим состоянием. Разве это не так? – jaspernygaard

Смежные вопросы