我们在Atlas Serverless系统中识别出某些场景,这些场景可能在特定条件下导致Serverless实例的数据完整性问题。
为了负载均衡并保持高质量的服务,Atlas Serverless系统偶尔会在不同的数据库服务器之间移动Serverless实例的数据。在此实时迁移系统中已识别出两个独立的问题。
作为实时迁移过程的一部分,在迁移完成后,必须将来自Serverless应用程序客户端的现有流量从捐赠服务器重新路由到接收服务器。此重新路由是作为一个关键切换的一部分执行的,在此期间,路由元数据被更新以准确地反映迁移实例数据的新托管位置,确保所有后续的Serverless应用程序客户端流量都指向正确的服务器。我们已识别出一个可能导致切换期间操作路由暂时受影响的潜在竞态条件。具体来说,存在一种可能性,即切换期间建立的连接上执行的操作可能仍然被定向到捐赠服务器而不是接收服务器,即使迁移已完成。错误的路由可能导致读取操作返回陈旧数据或写入操作数据丢失。在正常网络条件下,此问题的持续时间估计为毫秒到两秒。
实时迁移完成后,捐赠服务器上迁移数据库/集合上任何活动的数据库命令都将中断。然后Atlas Serverless自动在接收服务器上重试这些命令,以最小化对Serverless应用程序客户端的干扰。然而,我们已识别出某些多写入、非事务性数据库命令没有被Atlas Serverless安全地自动重试,这可能导致错误的更新和删除行为。具体来说
上述问题虽然与同一系统相关,但它们是独立的。例如,经历过数据迁移的服务无实例可能不受任何影响,也可能同时受两个问题的影响。
截至2024年6月20日,我们已在Atlas无服务器控制平面中解决了这些问题。过去至少进行过一次数据迁移序列的无服务器实例可能会受到影响。由于这些问题的性质,我们无法确切确认哪些实例受到影响。我们的内部评估表明,事件发生率很低,但我们出于谨慎发布此通知。
如果您担心此问题的影响,我们建议您将数据与其他可以帮助验证数据完整性的记录进行交叉验证。如有任何进一步问题,请打开支持案例或与Atlas支持团队开始聊天。