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

时间:2018-06-25 13:27:11

标签: elasticsearch tfs tfs2018

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

任何搜索都显示“我们在处理您的请求时遇到了意外错误”,并且我已通过所有故障排除文档来清理并重新索引所有馆藏。还将搜索包完全重新安装到我们运行的用于搜索和索引的单独服务器上,以确保我们运行的版本正确。

在TFS App Server上的事件日志中,记录了大量这些异常:

  

事件(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]”更新返回404 _index:   workitemsearchshared_0_2 _type:workItemContract _version:0错误:   类型:type_missing_exception原因:“缺少类型[workItemContract]”

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

有人对如何解决这个问题并使Elastic Search恢复正常工作提出了一些建议吗?

3 个答案:

答案 0 :(得分:4)

我们解决了这种情况,方法是完全卸载然后重新安装与搜索有关的所有内容。

  1. 从网络管理员的扩展程序管理中卸载所有集合中的所有Code / Work / Wiki扩展程序
  2. 从TFS管理控制台中删除了TFS搜索服务功能。
  3. 使用PowerShell脚本。\ Configure-TFSSearch.ps1 -operation remove
  4. ,从单独的搜索服务器上卸载elasticsearch服务
  5. 重新启动TFS作业代理服务

  6. 使用

    从所有集合数据库中删除旧的与搜索相关的数据库内容
      

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

         

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

         

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

         

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

         

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

         

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

         

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

         

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

  7. 重新启动TFS作业代理服务

  8. 重新启动搜索服务器

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

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

      

    。\ Configure-TFSSearch.ps1-操作安装-TFSSearchInstallPath   D:\ ES -TFSSearchIndexPath D:\ ESDATA-端口9200-详细

  11. Tli管理控制台中的
  12. 完整搜索配置向导,可对所有现有集合进行代码搜索

  13. 检查服务是否正在运行并测试了从Web应用程序的搜索是否正常!

答案 1 :(得分:0)

根据您的错误信息和TFS版本,此问题类似于Unable to start search after upgrade to TFS 2018 Update 2

尝试以下问题中的解决方案:

  

在以下规则中,我似乎设置了无效/问题   更新/安装未修复的密钥。

     

HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Apache软件   基金会\程序   2.0 \ elasticsearch-service-x64 \ Parameters \ Java \ Options

     

包含的值

     

-Xms0m   -Xmx0m

     

将'0m'更改为'1g'均解决了该问题。据我   了解'0m'默认为4GB,这可能与我的服务器冲突   只有2.8 GB的RAM。我将升级服务器以遵循   最低要求。

     

也许配置工具可以警告此问题或设置   有价值的东西。

也请看一下这篇文章,它可能会有所帮助:Elasticsearch 6.2.2 fails to run as a windows service

答案 2 :(得分:0)

[此文章指的是azure devops服务器2019到2020的升级]

我也得到了 “在处理您的请求时,我们遇到了意外错误” 进行任何搜索-这是在将azure devops服务器2019迁移到新框后(无法在同一框上执行升级)

http:// localhost:9200 / _cat / health?v显示了唯一的集群TFS_Search_AZURE-DEVOPS处于红色状态

在我特定的情况下,所有内容都在同一框中-Windows 2019 + SQL Server 2019 +搜索服务

按照Per Salmi的说明进行操作,很遗憾,这不能解决问题。

在我的案例中,解决方案是重建弹性搜索索引(detailsscripts):

  1. 重新索引存储库

要为Git或TFVC存储库重新编制索引,请为具有管理特权的Azure DevOps Server或TFS版本执行脚本的适当版本 Re-IndexingCodeRepository.ps1 。系统提示您输入:[括号中的我的值]
Azure DevOps服务器或TFS配置数据库为[azure-devops]的SQL Server实例名称
Azure DevOps服务器或TFS集合数据库的名称[Tfs_DefaultCollection]
Azure DevOps服务器或TFS配置数据库的名称[Tfs_Configuration]
要执行的重新索引编制的类型。可以是以下值之一:Git_Repository TFVC_Repository [Git_Repository] ​​
集合的名称[DefaultCollection]
要重新编制索引的存储库的名称。 [您的回购名称在这里]

  1. 重新编制索引

要为集合重新编制索引,请使用管理权限执行脚本 TriggerCollectionIndexing.ps1 。系统提示您输入:[括号中的我的值]
Azure DevOps服务器或TFS配置数据库为[azure-devops]的SQL Server实例名称
Azure DevOps服务器或TFS集合数据库的名称[Tfs_DefaultCollection]
Azure DevOps服务器或TFS配置数据库的名称[Tfs_Configuration]
集合的名称[DefaultCollection]
要重新编制索引的实体。可以是以下值之一:全部代码WorkItem Wiki [全部]

上面的脚本放置了重新索引作业,这些作业通常需要几分钟才能完成。

执行后不久,我得到了一个鼓舞人心的“我们无法显示结果,因为您的组织中的一个或多个项目仍在被索引”

几分钟后结果开始出现,http:// localhost:9200 / _cat / health?v显示了唯一的集群TFS_Search_AZURE-DEVOPS呈绿色状态