Сессия для этого агента уже существует
Я использую TFS для выполнения ночной сборки, включающей несколько шагов, в которых используется агент тестирования TFS. Я использую последнюю версию TFS/Test Agent(2015 - обновление 3), и в настоящее время нет других сборок. Часто (возможно, в половине случаев), когда выполняется ночное задание, шаг "Развертывание агента тестирования Visual Studio" завершается с ошибкой:
Задание было отменено, поскольку агент Agent-XXX не обновил блокировку. Убедитесь, что агент работает, не спит и не потерял связь со службой.
Это связано с ошибкой, найденной в файле журнала тестового агента (в _diag):
Сессия для этого агента уже существует. Спать в течение 30 секунд до следующей попытки.
Microsoft.TeamFoundation.DistributedTask.WebApi.TaskAgentSessionConflictException: агент задачи Агент-XXX уже имеет активный сеанс для владельца XXX.
Эта проблема прямо упоминается здесь, и косвенно обсуждается здесь.
Решение, которое я нашел для этой проблемы, состоит в том, чтобы перезапустить сервер, на котором запущен тестовый агент, это удаляет все мертвые сеансы, и после запуска сервера тесты выполняются просто отлично. Я думаю, что это эффективно то, что делается в ранее упомянутом посте. Результатом сброса настроек является то, что служба перезапускается.
Хотя в связанной статье оно представлено как решение, оно носит временный характер. Даже после перезапуска сервера и успешного запуска сборки на следующий день проблема снова появится, что потребует ручного вмешательства для запуска сборки.
Я мог бы запланировать задачу для сброса службы или даже перезапустить сервер непосредственно перед запуском ночной сборки, но это кажется мне повязкой, а не исправлением. Кто-нибудь сталкивался с этой проблемой раньше, и если да, есть ли способ предотвратить ее возникновение?
Обновление 1
Я просто настроил сборку, которая запускается за 5 минут до моих основных тестов, запускающих скрипт Bat, чтобы перезапустить все мои серверы, на которых размещены мои тестовые агенты. Это обходной путь, но, похоже, он решает проблему. Надеюсь, когда-нибудь кто-нибудь сможет найти лучшее решение, чем это, но сейчас мне нужно запустить автоматическое тестирование в TFS.
Обновление 2
У меня сейчас три сервера, все три имеют одну и ту же проблему, хотя трудно точно определить, когда это происходит. Масштабирование обходного пути без простоя оказывается довольно сложным.
Обновление 3
Настал лучший день, я обновил TFS до 2018 года, и агент сборки до последней версии, эта проблема больше не возникает, я думаю, это ошибка в старом агенте сборки. У меня до сих пор нет решения для оригинальной версии агента сборки...
2 ответа
Похоже, что процесс Agent.Listener.exe выполнялся где-то на машине, возможно, как служба (а не сеанс пользователя, вошедшего в систему).
обратите внимание: если процесс агента внезапно завершается во время активного сеанса, сеанс в конечном итоге истечет по тайм-ауту (я думаю, через 5 минут). и при запуске, если агент сталкивается с конфликтом сеанса, он будет повторять попытку до 5,5 минут, я думаю, прежде чем сдаться (достаточно времени для истечения срока действия внезапно прерванного сеанса).
я собираюсь закрыть это и предположить, что процесс где-то запущен. у нас не было никаких проблем в этой области и мы не слышали никаких других сообщений, поэтому я не думаю, что здесь проблема с агентом. если вы найдете репродукцию или похоже, что я ошибаюсь, пожалуйста, откройте снова.
Я просто перезапускаю свой сервер и после этого открываю run.cmd, и моя проблема решена. Надеюсь, это сработает для вас.