TFS2010 et agents de construction paresseux
-
27-10-2019 - |
Question
Nous avons une configuration TFS2010 avec un seul contrôleur et 2 agents en cours d'exécution sur la même machine de construction. Hier, le serveur de build a cessé de fonctionner 2 construit en même temps et il suffit de laisser un agent faire le travail. J'ai essayé de redémarrer le contrôleur et les agents, mais sans verrou. Il n'y a pas motif et les deux agents font un travail - un à la fois. J'ai ajouté un nouveau agent aujourd'hui (même machine) et il peut maintenant prendre 2 construit en même temps - encore obtenu un agent paresseux. Toute pensée?
New Info: Quand j'ai 2 courir construit et un couple dans la file d'attente (NB avec 3 agents au total) et je change la priorité à haute -? Il commence à construire sur le dernier agent
La solution
Ok - donc une entrée non valide dans tbl_BuildQueue dans la base de données de TFS a été la raison. normale Builds ne construirons pas dans TFS 2010
Une solution rapide est de supprimer les entrées tbl_BuildQueue qui ont une DefinitionId qui n'existe pas.
SELECT * FROM [Tfs_Default].[dbo].[tbl_BuildQueue] where DefinitionId not in (select DefinitionId from tbl_BuildDefinition)
Autres conseils
Il y a quelques choses que vous pouvez vérifier:
- Est-ce que des définitions de build configurées pour Agent utilisés balises ou nom de l'agent Filtres?
- Est-ce que des agents Configuré avec des étiquettes? Vous pouvez vérifier dans TF Admin Console.
- Vérifier l'état de chaque agent en utilisant "Build" -.> "Gérer les contrôleurs Build ..." de Visual Studio
- Vérifier l'état de chaque agent en utilisant TF Admin Console sur l'agent.
- est la console d'administration TF rapporte tout événement dans les 24 dernières heures?
Nous travaillons actuellement avec un client pour résoudre un problème qui peut laisser des agents orphelins à une construction qui ne fonctionne plus. Cela se produit en raison d'une condition de course dans une procédure stockée et n'a rien à voir avec les relations manquantes clés étrangères.
Si vous souhaitez vérifier que cela a effectivement été perpétrés, exécutez la requête suivante sur la base de données de collecte de projet:
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
Si elle retourne toutes les lignes, vous pouvez temporairement résoudre le problème en réglant la colonne « IdRéservation » les agents de construction affectés à NULL dos. Après la mise à jour de cette colonne toute nouvelle builds après la mise à jour en file d'attente sera en mesure d'utiliser l'agent qui était auparavant « paresseux » comme vous le dites.
Patrick