问题标签 [fail-fast]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 堆栈的快速失败迭代器
我想实现一个快速失败迭代器来从我自己的列表中删除条目并测试它的正确行为。该列表包含 MyEntry 类型的元素。
这些条目包含一个通用值和对下一个条目的引用。
List 本身使用 pos Entry 跟踪其位置,并且其行为类似于 Stack。现在我想实现一个快速失败的迭代器,它允许我迭代列表并删除条目,而不是抛出 UnsupportedOperation 异常。
我也已经尝试在我的列表中实现一个迭代器并用我的测试类对其进行测试
}
但是输出循环一个 c 并且甚至没有删除一个条目。
我现在停留在可以迭代 MyList 并删除条目的快速失败迭代器的正确实现上。因为我无法将其分解为一个问题,所以我列出了在尝试实现迭代器时出现的一些问题
- Iterator 应该在 MyList 类中实现还是应该在自己的类中实现?
- 我如何让 Iterator 像 Advance() 方法一样在 MyList 上前进?
- 测试类中的while循环方便还是应该使用其他方法?
spring - 为未知的 Spring 属性抛出异常
我在 Spring Boot 应用程序的 YAML 配置中犯了一个非常愚蠢的错误:
我不小心在最后一节中尝试使用“spring.profiles.active”来设置 Spring 配置文件。由于这对 Spring 没有任何意义,因此始终应用最后一部分并且foo
始终打开配置文件。
spring.profiles.active
本质上是无稽之谈,但应用程序运行时没有抱怨(直到有问题的配置导致其他问题)。
我想以某种方式将 Spring 配置为在遇到出现内部 ( spring...
) 但它不知道的配置参数时立即抛出异常。我该怎么做呢?
linux - 部署到 Linux 环境时,Environment.FailFast 在 .NET Core 中会做什么?
这种方法的文档说:
将消息写入 Windows 应用程序事件日志后立即终止进程,然后将消息和可选的异常信息包含在向 Microsoft 报告的错误中。
但是,当部署到没有 EventLog 或 Windows 错误报告的 Linux 环境时呢?
我希望能够以这种方式立即终止控制台应用程序的好处,但目前尚不清楚这是否是正确的使用方法。Linux有更好的方法吗?
计划是让我的控制台应用程序在 Linux 容器中运行。我希望应用程序能够终止,从而导致容器终止,这样基础设施就可以启动一个新的。但是,我刚刚开始使用 Docker(我的 Linux 技能非常生疏)。所以我在这里不知所措...
我可能不得不旋转一个小样本并四处修补,但希望在这里提出这个问题,以防有人能提供更快的答案。
TIA
java - Java - 使用经典for循环时会发生并发修改异常吗?
使用经典 for 循环时是否有可能发生并发修改异常?
go - 有没有一种优雅的方式以快速失败的方式并行运行带有嵌套包的 Go 模块测试?
我有一个使用模块的 Go 项目。该模块包含许多嵌套的包。
./...
当我让 Go 通过传递给它来确定包结构时go test
,并行运行测试(默认行为)。
使用标志测试单个包-failfast
有效,它在第一次失败时停止,但是我想要实现的是-failfast
在所有组合包中使用(以增加 CI/CD 吞吐量)。当通过单个go test ./...
调用并行测试的一个包中的第一个测试失败时,我想停止整个测试套件。
这甚至可以使用当前版本的 go testing 实用程序吗?如果没有,是否有计划在未来实施这样的事情?
我还没有找到可以让我并行执行此操作的解决方案,但是我想到的一件事是结合类似的东西go test -failfast
,go list ./...
并按xargs
顺序(不是并行)运行测试。我会检查最后一个测试包的输出,并在第一次失败时停止一切。虽然这听起来不太好,而且可能会慢一些。
所以,是的,有没有我没有找到/想到的现有解决方案或方法?
谢谢!
go version go1.12 darwin/amd64
xsd - 当缺少必需元素时,如何使 JAXB 失败?
我正在尝试为在工作中调用 Web 服务的 Java 应用程序添加一些前向兼容性,但 JAXB 似乎在该主题上表现落后......
该应用程序使用wsdl2java
Maven 插件从 WSDL 生成 CXF Web 服务客户端。然后,它使用生成的客户端与 Web 服务进行通信(通过 JMS 上的 SOAP)。当 Web 服务在其对调用的响应中发送未知元素时,JAXB 会失败并出现“意外元素”错误,这是可以理解且符合 XML 的。为了更加向前兼容,我指定了一个自定义jaxb-reader-validation-event-handler
来忽略这些特定错误,从而解决了问题。
但是在进行一些补充测试时,我发现了不符合 XML 的行为。
首先,JAXB 不关心元素的顺序,即使在 a 内部也是sequence
如此,这不是 XML 兼容的,但有利于向前兼容,所以为什么不呢。
但是,它也不关心强制元素 ( minOccurs="1"
) 是否不存在,而是友好地为其分配一个任意默认值(即,对于绑定到 Java 原始值的元素,它们的默认值,如 0 代表一个int
!)。
这既不符合 XML ,也不利于兼容性:如果您需要一个强制性的,例如,作为整数的价格,但 Web 服务由于某种原因没有提供它,JAXB 将值 0 分配给它而不发出警告,使调试非常困难。
显然这是因为如果 JAXB 没有遇到元素,它根本不会调用它的 setter,这意味着它将保持其默认值。
[编辑:我做了一些补充测试,当应用程序需要 1 个元素maxOccurs="1"
(来自 WSDL,minOccurs
并且maxOccurs
被简单地忽略...]
当缺少必需元素时,如何使 JAXB 失败?
我们注意到,即使对于带有 的元素minOccurs="1"
,相应生成属性的注释也不包含required = true
。我尝试在生成之后和启动应用程序之前手动添加它,但没有成功:似乎它只是被忽略了......
c# - Environment.Exit(int) 会用运行非托管代码的踏板杀死我的应用程序吗?
我有一个 Windows 服务,它DllImport
在不同的线程中运行非托管代码(使用)。
有时,非托管代码“挂起”。想想while (true) ;
。发生这种情况时,我需要终止整个进程(它会自动启动另一个进程,因为它是 Windows 服务)。
是否Environment.Exit(int)
足够?或者我需要例如Environment.FailFast(string)
?
编辑:我无法“测试”这个。冻结是随机发生的。
linux - Linux:如何对一个进程的标准输出进行分类直到结束,但如果出现某个字符串,则停止并返回一个非零代码?
我们有一个运行测试的工具,但如果测试失败则返回错误代码。
该工具在开始通过 SSH 登录到自定义控制台(不是 bash)并发出命令后运行测试。所有测试在该调用中一次运行测试的日志记录到一个文件中。该工具的输出大致为:
要停止构建,我们需要在输出中查找某些字符串。
输出显示为测试运行。
我可以将整个输出捕获到一个文件中并最终失败。但是一旦第一次测试失败,它会节省相当多的失败时间。
因此,我想要类似的东西tee
,但如果它找到那个失败字符串,它也会终止执行。或者,至少,它应该打印输出,如果找到字符串则返回非零值。
这对标准的 Linux 工具包可行吗?
jenkins - 如何在 Jenkins 的动态管道中使用 failFast
我有具有动态并行阶段的管道,如果任何阶段失败,我希望我的管道快速失败。我尝试添加 failFast: true 但我的管道卡在“在 ABC 阶段失败”。
java - Fail-fast Iterator 如何在内部工作?
我知道什么是故障快速和故障安全迭代器。如果集合发生结构性修改,Fail-Fast 迭代器会立即抛出 ConcurrentModificationException。
Fail-Safe 不会抛出任何异常,因为它们适用于集合的克隆。
我的问题是快速失败的迭代器如何知道对我的集合进行了修改?