问题标签 [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.

0 投票
1 回答
53 浏览

java - 为什么在迭代期间从 ArrayList 中删除元素时我没有收到 ConcurrentModificationException

我正在使用以下代码循环遍历数组列表,然后从数组列表中删除一个元素。

在这里,我期待 ConcurrentModificationException。但没有得到那个例外。特别是当您使用第 (n-1) 个元素检查条件时。请帮我。下面是我的代码。

提前致谢

0 投票
1 回答
635 浏览

javascript - 在 JavaScript 中使用 Promise 实现快速失败的设计

我不确定“快速失败”是否是描述这种方法的最佳方式,但自从我开始学习编程以来,我一直被教导设计这样的功能:

因此,我试图像这样调用一个承诺函数:

但这给了我类似于finally经典try...catch...finally语句块的行为,即该then()块将始终被调用,即使在错误之后也是如此。有时这很有用,但我很少发现自己需要这样的功能(或try...catch一般的陈述,就此而言)。

因此,为了尽可能快速和清晰地失败,有没有一种方法可以使上面的第二个示例以我期望的方式工作(即then()catch()在没有执行的情况下执行,但单个catch()仍然会捕获所有错误由doSomethingAsync()) 提出?

0 投票
1 回答
639 浏览

java - 当自定义事务管理器无法连接时,Spring Boot 应用程序不会快速失败

我正在制作一个带有自定义 transactionManager 的 spring boot 应用程序,它有自己的数据源,就像这样。顺便说一句,我使用 hikariCP 作为数据源

在我的 application.properties 中,我有这些配置

现在这一切都可以正常工作,但问题是当它不起作用时。例如,如果我输入了错误的密码,hikari 会引发连接池异常,但应用程序会继续运行。我希望应用程序失败,抛出异常并关闭,但我无法弄清楚。我尝试像这样添加另一个名为initializationFailTimeout 的配置,myConfig.datasource.initializationFailTimeout:5000但同样的问题,我看到一个异常,但应用程序继续运行。

无论如何,当hikari引发连接异常时如何使spring boot快速失败?

谢谢

0 投票
1 回答
88 浏览

java - java.util.ConcurrentModificationException 同时改变一个对象

我正在迭代一个 CustomObject 列表,并且在执行此迭代时,我通过向此自定义对象的标签列表添加一个标签来改变此对象。我没有在 customObjects (List) 中添加或删除任何 CustomObject。我仍然收到 java.util.ConcurrentModifcationException。

这是堆栈跟踪:

这是否意味着即使我们只是尝试修改对象而不是从列表/集合中删除或添加,我们也可以获得 ConcurrentModifcationException?

0 投票
0 回答
356 浏览

tomcat - Tomcat maxThreads 和 acceptCount 调优以实现 Fail-Fast

我想将 Tomcat 调整为快速失败,以防在所有线程都被占用时出现任何问题(例如,如果数据库突然开始表现不佳,则等待数据库连接)。

我查了几篇文章,特别是: https ://netflixtechblog.com/tuning-tomcat-for-a-high-throughput-fail-fast-system-e4d7b2fc163f https://tomcat.apache.org/tomcat-8.5-doc/配置/http.html

我有几个问题,如果你能帮助我,我将不胜感激:

  1. 为什么 Netflix 将并发请求保留在内存中,如果达到阈值,则在他们自己的代码中回复 503?它自己做的背后的理由是什么?据我从tomcat文档(见上面的链接)了解到,如果达到maxThreads和acceptCount,tomcat会自己回复Connection Refused。因此,正确指定小的 acceptCount 应该是诀窍。

来自 Tomcat 文档:

每个传入的请求在该请求期间都需要一个线程。如果收到的并发请求多于当前可用的请求处理线程可以处理的数量,则将创建额外的线程,直至配置的最大值(maxThreads 属性的值)。如果接收到更多的同时请求,它们会堆积在连接器创建的服务器套接字中,直到配置的最大值(acceptCount 属性的值)。任何进一步的并发请求都将收到“连接被拒绝”错误,直到有可用资源来处理它们。

来自文章:

跟踪内存中活动并发请求的数量并将其用于快速失败。如果并发请求的数量接近估计的活动线程(在我们的示例中为 8),则返回 http 状态代码 503。这将防止过多的工作线程变得忙碌,因为一旦达到峰值吞吐量,任何额外的线程变得活跃将做一个非常轻量级的返回 503 的工作,然后可用于进一步处理。

  1. 我假设即使在 Tomcat NIO 中,工作线程也不会像在 NodeJS 中那样“同时”重复使用。对于一个 http 请求,有一个分配的 1 个工作线程,它不会处理任何其他 http 请求,除非完成这个请求。即使这个 http 请求正在等待像数据库读取这样的阻塞 i/o。

  2. 鉴于上述所有情况,我相信这可能是正确的配置:

PS 我正在使用 Tomcat 8.5 和 NIO 连接器。

任何帮助/建议将不胜感激。

0 投票
1 回答
483 浏览

java - Kafka 消费者无法连接时快速失败

出于我自己的目的,如果 Kafka Consumer 无法连接到代理,我需要停止 Spring Boot 应用程序。我的意思是,当 Kafka Consumer 尝试池化消息时,我们可以看到以下日志:

当主题或代理不可用时,这是标准行为。结果 - 应用程序不会停止。但是我需要。

我正在尝试添加以下属性,但它不起作用:

一般来说,我希望得到如下行为:如果消费者无法连接 - 关闭应用程序

  • Spring Boot 版本:2.3.8.RELEASE
  • 卡夫卡:spring-kafka-starter

Kafka 轮询示例:

0 投票
1 回答
62 浏览

java - 我们如何使用 try-catch 处理 Java ConcurrentModificationException?

我正在尝试使用 try-catch 块处理 java ConcurrentModificationException 异常,但在编译代码时仍然遇到相同的错误。

0 投票
0 回答
35 浏览

flutter - 颤振测试是否有“快速失败”选项?

为了节省本地和 CICD 的时间和金钱,
我想在我的颤振测试中添加“快速失败”,
但我在官方文档中找不到它
有没有办法做到这一点?