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:
- TFS 2013 : Migration d’une ferme TFS 2010 vers 2013 sans upgrade
- TFS 2013 : Migration d’une ferme TFS 2005 vers 2013 sans Upgrade
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_tfsDetailed 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_tfsDetailed 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
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:
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:
- TF30065: An unhandled exception occurred when getting files
- the type initializer for 'Microsoft.TeamFoundation.Framework.Server.ByteArray' threw an exception
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
Enregistrer un commentaire