问题:升级到 TFS 2018 Update 2 后搜索失败

在将 TFS 服务器升级到 2018 Update 2 后,搜索和索引在我们的一个环境中似乎被破坏了。

任何搜索都会给出“我们在处理您的请求时遇到意外错误”,并且我已经完成了所有故障排除文档以清理和重新索引所有集合。还将搜索包完全重新安装到我们为搜索和索引运行的单独服务器上,以确保我们运行了正确的版本。

在 TFS 应用服务器上的事件日志中记录了大量这些异常:

事件 (81277) 已完成,状态为 FailedAndRetry。事件 81277 完成并显示消息“BeginBulkIndex-PushEventNotification:由于异常 Microsoft.VisualStudio.Services.Search.Common.FeederException:该操作未成功完成:Elasticsearch 拒绝了许多文件,此作业失败。失败原因:Microsoft.VisualStudio.Services.Search.Common.SearchPlatformException: ES 异常: [HTTP 状态代码: [200] BULK_API_ERROR: [ 索引返回 404 _index: codesearchshared_1_0 _type :SourceNoDedupeFileContractV3 _version:0 错误:类型:type_missing_exception 原因:“type[SourceNoDedupeFileContractV3] 缺失”

另一种异常类型也记录了很多次,表明索引工作项失败:

Microsoft.VisualStudio.Services.Search.Common.SearchPlatformException:ES 异常:[HTTP 状态代码:[200] BULK_API_ERROR:[ 更新返回 404 _index:workitemsearchshared_0_2 _type:workItemContract _version: 0 错误:类型:type_missing_exception 原因:“type[workItemContract] missing”更新返回 404 _index: workitemsearchshared_0_2 _type: workItemContract _version: 0 错误:类型:type_missing _exception 原因:“类型[workItemContract] 缺失”

异常似乎表明缺少某些类型的注册,例如 workItemContract 和 SourceNoDedupeFileContractV3,但我在搜索服务器安装日志中找不到任何错误。

有人对如何解决这个问题并让 Elastic Search 恢复工作状态有一些建议吗?

解答

我们通过完全卸载然后重新安装与搜索相关的所有内容来解决这种情况。

  1. 从 web admin 的扩展管理中卸载所有集合中的所有 Code/Work/Wiki 扩展

  2. 从 TFS 管理控制台中删除了 TFS 搜索服务功能。

  3. 使用 PowerShell 脚本 .\Configure-TFSSearch.ps1 -operation remove 从单独的搜索服务器卸载 elasticsearch 服务

4.重启TFS Job Agent服务

  1. 从所有收集数据库中删除旧的搜索相关数据库内容,使用

从 [Search] 中删除。[tbl_IndexingUnit]

从 [Search] 中删除。[tbl_IndexingUnitChangeEvent]

从 [Search] 中删除。[tbl_IndexingUnitChangeEventArchive]

从[搜索]中删除。[tbl_JobYield]

从[搜索]中删除。[tbl_TreeStore]

从 [Search] 中删除。[tbl_DisabledFiles]

从[搜索]中删除。[tbl_ItemLevelFailures]

从[搜索]中删除。[tbl_ResourceLockTable]

6.重启TFS Job Agent服务

7.重启搜索服务器

  1. 使用现有搜索服务器从 TFS 管理控制台运行配置搜索功能向导

9.根据PowerShell脚本的说明安装搜索包

.\Configure-TFSSearch.ps1 -操作安装 -TFSSearchInstallPath D:\ES -TFSSearchIndexPath D:\ESDATA -Port 9200 -Verbose

  1. 从 TFS 管理控制台完成搜索配置向导,为所有现有集合启用代码搜索

  2. 检查服务是否正在运行并测试从 Web 应用程序搜索,它工作正常!

Logo

欢迎大家访问Elastic 中国社区。由Elastic 资深布道师,Elastic 认证工程师,认证分析师,认证可观测性工程师运营管理。

更多推荐