java - DAX 间歇性无可用端点
问题描述
设想:
我们有一个流式 Java 应用程序,它通过 DAX 使用最新的 DAX 客户端实例对 DynamoDB 执行读/写请求。在执行简单的集成测试和性能测试时,我们会间歇性地看到没有可用端点的异常。
com.amazonaws.AmazonClientException: Unable to call cluster endpoint: No endpoints available
at com.amazon.dax.client.dynamodbv2.ClusterDaxClient$ClusterReadRetryHandler.check(ClusterDaxClient.java:699)
at com.amazon.dax.client.dynamodbv2.ClusterDaxClient.invoke(ClusterDaxClient.java:649)
....
IOException: No endpoints available
at com.amazon.dax.client.cluster.Cluster.readClient(Cluster.java:680)
at com.amazon.dax.client.dynamodbv2.ClusterDaxClient$2.getClient(ClusterDaxClient.java:138)
at com.amazon.dax.client.dynamodbv2.ClusterDaxClient.invoke(ClusterDaxClient.java:631)
... 23 more
澄清一下,间歇性意味着一些请求会成功,然后一些请求会失败,只有在单个测试(集成或性能)中再次让请求再次成功。事实上,这些测试运行中的大多数将在没有看到此错误的情况下成功,但它确实偶尔会发生,如最后一句中所述。
DAX 和 DynamoDB 的开发实例是常设实例,这意味着运行这些测试不会重新构建/部署 DAX 或 DynamoDB 实例以实现全新的状态(它们在测试运行之间保持启动并运行)。
问题:
在使用 DAX 的小规模测试(例如集成/e2e 测试)或更大规模的测试(例如性能测试)中,有没有其他人看到过这种间歇性行为的类似模式?我知道这已经在人们无法连接到 DAX 的场景的其他票证上进行了讨论,但是我没有看到任何问题或场景可以识别此类间歇性行为。
解决方案
推荐阅读
- ternary-operator - 如何在 express-handelbars 中使用三元运算符在我的输入字段中赋值?
- django - 如何在 django 中使用分页和 .filter
- python - 如何制作具有负值或非负值的正则表达式?
- java - 首先按值对地图进行排序,然后按键对地图进行排序
- r - R 级别函数通过调用数据集列返回 NULL
- java - BufferedWriter 写 sumbols 而不是数字有什么原因吗?
- c# - iTextSharp - 添加印章 - 印章不在内容之上,而是在其之下
- javascript - React-native-arkit/ 如何使用 ARKit.Sprite 设置位置
- c++ - 创建和管理查找容器的正确方法
- javascript - 无法将生成的 jsPdf 发送到服务器