2016-12-28 9 views
0

У меня есть приложение, которое инкапсулирует взаимодействие с TFS REST API для очереди сборки. Приложение просто отправляет требуемый json в API, и он работал в течение нескольких месяцев, пока он внезапно не начал возвращаться к конфликту.409 ответ конфликта с использованием TFS 2015 REST API для очереди сборки

System.Net.WebException: The remote server returned an error: (409) Conflict. (https://tfs2015/tfs/spf/SPF/_apis/build/builds?api-version=2.0 :{"definition":{"id":190},"parameters":"{}"})

w3.org определить код HTTP 409, как:

The request could not be completed due to a conflict with the current state of the resource. This code is only allowed in situations where it is expected that the user might be able to resolve the conflict and resubmit the request. The response body SHOULD include enough information for the user to recognize the source of the conflict. Ideally, the response entity would include enough information for the user or user agent to fix the problem; however, that might not be possible and is not required.

409 не будет уходить либо - простая повторная попытка не подействует. Даже в целом «вы пытались отключить его снова» подход к перезапуску серверов сборки не помог.

ответ

0

Как оказалось, «конфликт» в этом на самом деле не представляет собой какую-то странную проблему параллелизма, а состояние, в котором требования к построению не могут быть удовлетворены.

В принципе, определение сборки, стоящее в очереди, требовало «PowerShell = 4». Сборка началась с предоставления 409 сразу после того, как серверы сборки были обновлены до PowerShell 5.

В этом случае 409 означало, что любые требования сборки не могут быть удовлетворены ни одним из агентов сборки в пуле.

Изменение определения сборки для запроса PowerShell вместо конкретной версии PowerShell устраняет проблему.

(я мог бы отработать это раньше, если бы мое приложение сбросило весь ответ на консоль, поэтому я буду обновлять это в ближайшем будущем).

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

  • Нет связанных вопросов^_^