Accéder au contenu principal

TFS 2013: Comment fixer un serveur devenu totalement inutilisable

 Pour des raisons inconnues ou mal connues, le serveur TFS 2013 a décidé de devenir inutilisable durant tout le week-end. Sans doutes pour passer aussi un week-end paisible.

Malgré tout, après des heures de recherche, plusieurs solutions ont permis de fixer la situation, dont une qui ressemble à la solution ultime.


Fixation des erreurs de sécurités provenant des migrations

Les bases TFS proviennet d’anciennes solutions qui ont été migrées de TFS 2005 et TFS 2010, les articles sur ce point:

Sur le serveur TFS depuis cette migration, des erreurs se trouvaient dans l’Event Viewer du type:

Event ID 3300

TF53010: The following error has occurred in a Team Foundation component or extension:
Date (UTC): 07.09.2015 08:27:12
Machine: XXXXXXX
Application Domain: TfsJobAgent.exe
Assembly: Microsoft.TeamFoundation.Framework.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a; v4.0.30319
Service Host:
Process Details:
  Process Name: TFSJobAgent
  Process Id: 21776
  Thread Id: 13636
  Account name: EAME\svc_tfs

Detailed Message: TF30065: An unhandled exception occurred.
Exception Message: Operation is not valid due to the current state of the object. (type InvalidOperationException)
Exception Stack Trace:    at Microsoft.TeamFoundation.Framework.Server.TeamFoundationRequestContext.ValidateRequestContext(Boolean throwOnError)
   at Microsoft.TeamFoundation.Framework.Server.TeamFoundationRequestContext.To(TeamFoundationServiceHost targetHost)
   at Microsoft.TeamFoundation.Framework.Server.TeamFoundationRequestContext.To(TeamFoundationHostType hostType)
   at Microsoft.TeamFoundation.Warehouse.LockResources..ctor(TeamFoundationRequestContext requestContext)
   at Microsoft.TeamFoundation.Warehouse.WarehouseExecutionContext..ctor(TeamFoundationRequestContext requestContext)
   at Microsoft.TeamFoundation.Warehouse.WarehouseSyncJobExtension`1.CheckSchemaLockQueue(Object source)

TF53010: The following error has occurred in a Team Foundation component or extension:
Date (UTC): 07.09.2015 08:27:11
Machine: XXXXXX
Application Domain: TfsJobAgent.exe
Assembly: Microsoft.TeamFoundation.Framework.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a; v4.0.30319
Service Host:
Process Details:
  Process Name: TFSJobAgent
  Process Id: 21776
  Thread Id: 19580
  Account name: EAME\svc_tfs

Detailed Message: TF221033: Job failed to acquire a lock using lock mode Shared, resource DataSync and timeout 0.
Exception Message: Operation is not valid due to the current state of the object. (type InvalidOperationException)
Exception Stack Trace:    at Microsoft.TeamFoundation.Framework.Server.TeamFoundationRequestContext.ValidateRequestContext(Boolean throwOnError)
   at Microsoft.TeamFoundation.Framework.Server.TeamFoundationRequestContext.To(TeamFoundationServiceHost targetHost)
   at Microsoft.TeamFoundation.Framework.Server.TeamFoundationRequestContext.To(TeamFoundationHostType hostType)
   at Microsoft.TeamFoundation.Warehouse.WarehouseExecutionContext.AcquireLock(TeamFoundationRequestContext requestContext, TeamFoundationLockMode lockMode, String resource, Int32 waitSeconds)
   at Microsoft.TeamFoundation.Warehouse.WarehouseExecutionContext.QueryLockMode(String resource)
   at Microsoft.TeamFoundation.Warehouse.WarehouseExecutionContext.QueryLockMode(WarehouseLocks queryLocks)
   at Microsoft.TeamFoundation.Warehouse.WarehouseExecutionContext.ContinueDataChange()

On trouve alors la solution ici pour corriger la configuration des accès sur les solutions TFS, avec une commande qu’il faut utiliser sur chaque base TFS:

La commande en question:

C:\Program Files\Microsoft Team Foundation Server 12.0\tools\tfssecurity.exe /a+ Server FrameworkGlobalSecurity GenericRead "[DefaultCollection]\Project Collection Valid Users" ALLOW /collection:http://abc:8080/tfs/DefaultCollection

image


Service “Net.Tcp Listener Adapter” à ne pas stopper

Nous avons constaté dans le message précédant l’impact d’un service de communication pour la configuration de SharePoint 2013 et Office Web Apps:

Tout ceci fonctionne parfaitement, mais il convient de ne pas stopper le service “Net.Tcp Listener Adapter”, car celui-ci est utilisé par le moteur de recherche de SharePoint avec la configuration des noeuds, comme on peut le voir dans le répertoire de configuration de “Nodes”:

  • [SP DATA Folder]\Office Server\Applications\Search\Nodes\[XXXXX]\AdminComponent1\Configuration\Local\Node.ini

Qui est de la forme suivante:

; This file contains node properties set by the host controller.
; Manually modifying this file may cause problems for the host controller
; in contacting the node for monitoring. All such modifications would be
; overwritten when the host controller reconfigures the node.

[HostController]
InstallRoot=[SP DATA Folder]\Office Server\Applications\Search\Repository\
Managed.Repository.RootPath=[SP DATA Folder]\Office Server\Applications\Search\Repository\
Managed.Node.AssemblyPath=C:\Program Files\Windows SharePoint Services\15.0\Search\Native
Managed.Node.DynamicAssemblyPath=
Managed.Node.NativeLibraryPath=C:\Program Files\Windows SharePoint Services\15.0\Search\Native
Managed.Node.SchemaPath=
Managed.DotNetRemoting.Secure=True
Managed.WcfRemoting.SecurityMode=Transport
Managed.WcfManagement.SecurityMode=Transport
Managed.Host.Name.c776cbf842b84e46be8e8ed0acea9688=XXXXXX
Managed.Host.Uri.c776cbf842b84e46be8e8ed0acea9688=net.tcp://XXXXXX/ceres/hostcontroller/nettcp
Managed.Host.Name.535fa9d5a9f64996b3717344816fb29e=xxxyyyyyyy
Managed.Host.Uri.535fa9d5a9f64996b3717344816fb29e=net.tcp://xxxxxyyyyyy/ceres/hostcontroller/nettcp
Managed.Host.Name.59ad81e448e5497ab9eca1100c32f050=sqlserver
Managed.Host.Uri.59ad81e448e5497ab9eca1100c32f050=net.tcp://sqlserver/ceres/hostcontroller/nettcp
Managed.Host.Name=XXXXXX
Managed.HostController.ServiceUri=net.tcp://XXXXXX/ceres/hostcontroller/nettcp
Managed.HostController.PrimaryServiceUri=net.tcp://XXXXXX/ceres/hostcontroller/nettcp

Ainsi, si le service est stoppé, le moteur de recherche de SharePoint 2013 ne peut plus du tout travailler, et va tourner en boucle.

Du coup, je vous conseille de laisser les 3 services toujours démarrés:

image


Forcer le refresh de TFS

Comme toute application serveur, TFS gère un ensemble de fichier de Cache qui sont à plusieurs niveaux, il est donc parfois utile de forcer le refresh de tous ces niveaux, dont celui vraiment interne à TFS.

Solution trouvée ici:

Ainsi, les répertoires à vider sont:

  • C:\ProgramData\Microsoft\Team Foundation\Web Access\Cache_vxxxxxxxx\*
  • C:\Users\[svcAccount]\AppData\Local\Microsoft\Team Foundation\[XXX]\Cache\*
  • C:\Windows\Temp\*
  • C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\*
  • C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\*
  • C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\*
  • C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\*

Une fois ces répertoires vidés, il faut recharger TFS en exécutant (en mode administrateur) la commande MSDOS:

  • IISRESET

Les moteurs Web vont tous se recharger et le fonctionnement redeviendra normal, si tout se passe bien.


Conclusion

Les produits Microsoft sont de plus en plus imbriqués et une modification sur un des composants peut rapidement entrainer des soucis sur les autres. Chaque composant devenant la brique de base d’un autre module.

Romelard Fabrice [MBA Risk Management]

Commentaires

Posts les plus consultés de ce blog

Série de vidéos sur le montage d'une serre horticole ACD

 Episode 1: Préparation du terrain Episode 2: Montage de la serre en elle même Episode 3: Finalisation avec le montage électrique alimentant la serre Bon visionnage Fab

Présentation des outils utiles pour l'entretien de ses haies vives

Afin de gérer les haies vives, il est nécessaire d'avoir recourt à un matériel adapté. Les solutions à batteries sont bien adaptées pour un usage personnel avec des dimensions raisonnables. Ainsi dans mon cas précis, j'utilise les outils suivants de la Gamme Ryobi 18V ONE+ électroportatif: Petit taille-haies simple mais efficace -  RYOBI OHT1855R Un modèle plus puissant qui fonctionne très bien -  RYOBI RY18HTX60A Pour les parties hautes de vos haies, voici un outil très utile -  RYOBI OPT1845 Enfin lorsque vous devez élaguer certains arbres ou certaines partie hautes de vos haies, ce dernier outil est très utile -  RYOBI OPP1820 Ces outils font parti maintenant de mon arsenal de base pour maintenir notre maison chaque saison de taille. Fab

Série de Videos sur Home Assistant intégrant la production Photovoltaïque

 Un certain nombre de vidéos sont en ligne pour intégrer sa production photovoltaïque dans Home Assistant en partant de la base. Installation de Home Assistant: On peut ensuite intégrer les composant des Micro-Onduleurs Enphase, mais aussi les batteries Enphase: Ou encore le composant de contrôle Ecojoko: Ce qui permet alors de faire des comparaisons entre les valeurs capturées: Des videos seront encore publiés dans les prochaines semaines sur différents aspects de cette solution. Fab