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

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top