问题描述
最近将 Team City 升级到最新版本(TeamCity Professional 2021.1.1 (build 92714))。升级后,当创建一个新的 VCS 根时,构建可以正常运行,但在对存储库进行推送后,VCS 根在尝试检测更改时出现问题。根据堆栈跟踪,似乎在检索可用内存时出现了问题。以下是堆栈跟踪的内容:
java.lang.NumberFormatException: For input string: "18446744073709551615"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:592)
at java.lang.Long.parseLong(Long.java:631)
at jdk.internal.platform.cgroupv1.SubSystem.convertStringToLong(SubSystem.java:159)
at jdk.internal.platform.cgroupv1.SubSystem.getLongValue(SubSystem.java:153)
at jdk.internal.platform.cgroupv1.Metrics.getMemoryLimit(Metrics.java:410)
at sun.management.OperatingSystemImpl.getFreePhysicalMemorySize(OperatingSystemImpl.java:99)
at jetbrains.buildServer.buildTriggers.vcs.git.GitServerUtil.getFreePhysicalMemorySize(GitServerUtil.java:541)
at jetbrains.buildServer.buildTriggers.vcs.git.ProcessXmxProvider.getDefaultStartXmx(ProcessXmxProvider.java:151)
at jetbrains.buildServer.buildTriggers.vcs.git.ProcessXmxProvider.<init>(ProcessXmxProvider.java:63)
at jetbrains.buildServer.buildTriggers.vcs.git.FetchCommandImpl.fetchInSeparateProcess(FetchCommandImpl.java:100)
at jetbrains.buildServer.buildTriggers.vcs.git.FetchCommandImpl.fetch(FetchCommandImpl.java:89)
at jetbrains.buildServer.buildTriggers.vcs.git.CommitLoaderImpl.doFetch(CommitLoaderImpl.java:126)
at jetbrains.buildServer.buildTriggers.vcs.git.CommitLoaderImpl.loadCommits(CommitLoaderImpl.java:162)
at jetbrains.buildServer.buildTriggers.vcs.git.GitCollectChangesPolicy$FetchContext.fetchIfNoCommitsOrFail(GitCollectChangesPolicy.java:238)
at jetbrains.buildServer.buildTriggers.vcs.git.GitCollectChangesPolicy.ensureRepositoryStateLoadedFor(GitCollectChangesPolicy.java:128)
at jetbrains.buildServer.buildTriggers.vcs.git.GitCollectChangesPolicy.lambda$collectChanges$0(GitCollectChangesPolicy.java:82)
at jetbrains.buildServer.buildTriggers.vcs.git.RepositoryManagerImpl.runWithDisabledRemove(RepositoryManagerImpl.java:256)
at jetbrains.buildServer.buildTriggers.vcs.git.GitCollectChangesPolicy.collectChanges(GitCollectChangesPolicy.java:76)
at jetbrains.vcs.api.services.collectChanges.CollectRepositoryChangesPolicyFactory$3.collectChanges(CollectRepositoryChangesPolicyFactory.java:5)
at jetbrains.vcs.api.services.collectChanges.CollectChangesServiceProvider$1.collectChanges(CollectChangesServiceProvider.java:10)
at jetbrains.buildServer.buildTriggers.vcs.LoadChanges$CollectChangesForCheckoutRules.lambda$call$1(LoadChanges.java:3)
at jetbrains.buildServer.serverSide.impl.BaseAccessChecker.runWithDisabledChecks(BaseAccessChecker.java:3)
at jetbrains.buildServer.serverSide.impl.SecondaryNodeSecurityManager.executeSafe(SecondaryNodeSecurityManager.java:10)
at jetbrains.buildServer.buildTriggers.vcs.LoadChanges$CollectChangesForCheckoutRules.call(LoadChanges.java:5)
at jetbrains.buildServer.buildTriggers.vcs.LoadChanges$CollectChangesForCheckoutRules.call(LoadChanges.java:11)
at jetbrains.buildServer.vcs.VcsOperationProgressProviderImpl.runWithProgress(VcsOperationProgressProviderImpl.java:29)
at jetbrains.buildServer.buildTriggers.vcs.LoadChanges.collectChangesWithProgress(LoadChanges.java:15)
at jetbrains.buildServer.buildTriggers.vcs.LoadChanges.collectChangesForCheckoutRules(LoadChanges.java:18)
at jetbrains.buildServer.buildTriggers.vcs.LoadChanges.collectChangesByCombinedRule(LoadChanges.java:9)
at jetbrains.buildServer.buildTriggers.vcs.LoadChanges.collectChanges(LoadChanges.java:66)
at jetbrains.buildServer.buildTriggers.vcs.VcsRootChangesLoader$RunLoadChanges.run(VcsRootChangesLoader.java:55)
at jetbrains.buildServer.util.NamedThreadFactory.executeWithNewThreadName(NamedThreadFactory.java:76)
at jetbrains.buildServer.buildTriggers.vcs.VcsRootChangesLoader.loadChanges(VcsRootChangesLoader.java:114)
at jetbrains.buildServer.vcs.impl.VcsChangesFetcher$LoadChangesForRoot.run(VcsChangesFetcher.java:26)
at jetbrains.buildServer.vcs.impl.ImmediateFutureExecService$2.call(ImmediateFutureExecService.java:2)
at jetbrains.buildServer.serverSide.impl.ImmediateFuture.get(ImmediateFuture.java:63)
at jetbrains.buildServer.serverSide.impl.ImmediateFuture.get(ImmediateFuture.java:73)
at jetbrains.buildServer.vcs.impl.VcsChangesLoader.waitForTasksToComplete(VcsChangesLoader.java:38)
at jetbrains.buildServer.vcs.impl.VcsChangesLoader.doLoadChanges(VcsChangesLoader.java:92)
at jetbrains.buildServer.vcs.impl.VcsChangesLoader.tryLoadChanges(VcsChangesLoader.java:139)
at jetbrains.buildServer.serverSide.impl.VcsModificationChecker$CollectChangesAction$1.run(VcsModificationChecker.java:18)
at jetbrains.buildServer.util.NamedThreadFactory.executeWithNewThreadName(NamedThreadFactory.java:76)
at jetbrains.buildServer.serverSide.impl.VcsModificationChecker$CollectChangesAction.run(VcsModificationChecker.java:5)
at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1640)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
请问可能是什么原因导致的呢?
最佳回答
仅供参考,以免浪费时间。问题是由于 JRE 版本引起的。尽管 Team City 文档中表示支持 Java 8,但问题是由 JRE 版本引起的。升级到 JDK(和 JRE)11 可以解决数字格式转换的问题。
解决方案
方案1
根据最佳回答,问题是由于 JRE 版本引起的。升级到 JDK(和 JRE)11 可以解决数字格式转换的问题。以下是升级的步骤:
1. 下载并安装 JDK 11。你可以从 Oracle 官方网站或 OpenJDK 下载页面下载适合你系统的 JDK 11 安装包。
2. 配置 Team City 使用新安装的 JDK 11。在 Team City 的配置文件中,找到 JDK 配置部分,并将路径指向新安装的 JDK 11。
3. 重新启动 Team City 服务,以使更改生效。
4. 验证问题是否已解决。重新运行推送操作,检查 VCS 根是否能够正确检测到更改。
方案2
如果你不想升级 JDK 版本,你可以尝试以下解决方案:
1. 检查 Team City 的文档和支持论坛,查看是否有关于此问题的已知解决方案或补丁。
2. 尝试重新配置 VCS 根,确保配置正确并与存储库保持同步。
3. 检查 Team City 的日志文件,查找其他可能与此问题相关的错误或警告信息。
4. 如果问题仍然存在,建议联系 Team City 的技术支持团队,向他们报告此问题,并提供详细的错误信息和堆栈跟踪。
注意:在执行任何操作之前,请确保备份 Team City 的配置和数据,以防止意外数据丢失或配置损坏。
以上是解决 Team City 升级后出现的问题的两种可能方案。根据你的需求和环境选择适合你的方案。如果问题仍然存在,建议联系 Team City 的技术支持团队,获取进一步的帮助和支持。