申请抢先体验

请输入您的名字和电子邮箱地址。我们会发送确认 Tajo 访问申请的链接。

初级 6 分钟

恢复卡住或失败的同步

当 worker 停止或同步运行失败时,Tajo 会自行做什么,同步页面会显示什么,以及何时需要你来处理:重试、重新连接、修正映射或重新发布。

同步运行可能会中途停止,原因可能是 worker 重启、另一个系统宕机或某条记录被拒绝。在 worker 停止或短暂故障之后,Tajo 会自行接续同步。它不会重发过去七天内已写入的记录。本页说明 Tajo 会做什么、你在同步页面上看到什么,以及少数需要你来处理的情况。

快速检查 在 Connections 下的 Syncs and mappings 中打开同步,查看 Run history 中最新的一次运行。失败的运行会说明发生了什么以及下一步该做什么。

Tajo 自行处理的事情

Cursor。 运行从同步保存的 cursor 开始,按批次读取源数据。只有当一个批次中的每条记录都已送达,cursor 才会在该批次结束时前移。如果运行失败,会保留它最后一次完整到达的位置。下一次运行从那里开始,因此被中断的批次会被重新读取,而不是被跳过。

投递台账。 每条记录在写入之前都会获得一个投递键。该键是同步、源、页面 cursor、记录在页面中的位置以及记录本身的哈希值,因此不包含个人数据。在调用目标之前,先占用该键。写入成功后,该键被标记为已完成,并保留七天。该键与发起请求的是哪次运行无关,所以重试或之后的计划运行会为同一条记录得到相同的键。在这七天内,会直接使用已保存的结果,不会再次调用目标。这就是重放的批次不会写入两次的原因。

同一时间只有一次运行。 每个同步都有一个租约,由正在进行的运行在其整个生命周期内持有。租约有自己的令牌,有效期为 15 分钟,运行工作期间每 5 分钟续期一次。失去租约的运行会在下一次写入或检查点之前停止,以避免重复写入。worker 停止后,它的租约不再续期,并会在 15 分钟内过期。

自动重试。 队列中的运行失败后最多有五次尝试。Tajo 在第二次尝试前等待 60 秒,之后依次等待 120、240 和 480 秒。你自己发起的重试或测试运行只执行一次。与正在进行的运行发生冲突的运行不会被重试,已发布版本或连接不再有效的运行也不会被重试。

卡住的运行。 对于 Tajo 按计划运行的同步,如果某次运行已开始超过一小时且不再持有租约,它会被关闭,并有一个新的运行进入队列。被关闭的运行会显示 “The run stopped reporting progress and was closed.”(该运行已停止报告进度并被关闭)。因此,停止的运行的租约最多持续 15 分钟,计划同步中卡住的运行会在一小时后被替换。了解数据同步 列出了哪些同步按计划运行。

多次失败后暂停。 如果自上次修改同步以来最近五次已结束的运行全部失败,Tajo 会暂停该同步。它的页面会显示 “Paused automatically by the failure circuit breaker” 以及最后一个错误。只要有一次运行成功,计数就会清零。没有任何机制会自动重新启动已暂停的同步:在你修复原因并重新发布之前,它会一直保持暂停。

每小时检查。 每小时的第 13 分钟,Tajo 会针对每个有活跃同步、但过去 24 小时内没有成功运行的工作区,向自己的团队发出告警。这也包括完全没有记录任何运行的工作区。告警只发送一次,只有在某次运行成功之后才会再次发送。如果一个工作区中最早的活跃同步是在不到 24 小时前启用或修改的,暂时不会检查它。这个告警发给 Tajo,而不是发给你,也不会改变你的同步。

你会看到什么

从 Syncs and mappings 打开同步。Run history 列出每次运行,包括已写入记录数与已读取记录数、失败数、持续时间和开始时间。状态为 Queued、Running、Succeeded、Partial(部分记录失败)或 Failed。

  • 正在运行、但 2 分钟内没有报告进度的运行会显示 “Waiting for a fresh progress update”(正在等待新的进度更新)。
  • 失败的运行会显示一句说明发生了什么、一句说明下一步该做什么、失败名称以及运行 id。
  • Syncs 页面上的 View DLQ 列出所有同步中失败和部分失败的运行,每个都带有 Retry 按钮。

该怎么做

  1. 查看最新一次失败的运行。 其中”该做什么”那一行就是下一步。下表列出了你最可能遇到的失败。
  2. 如果显示 “Nothing”(无需操作),请等待。 下一次计划运行会自行恢复。
  3. 如果提示重新运行同步, 请在 View DLQ 中找到失败的运行,按下 Retry。重试会从保存的 cursor 开始,所以已写入的批次不会再次写入。重试成功后,失败的运行会从列表中移除。
  4. 如果同步已被暂停, 请修复横幅中指出的原因,然后通过 Publish sync 或 Request publish approval 重新发布同步。
  5. 如果同样的失败再次出现, 请把失败运行下方显示的运行 id 发给我们。

每个失败名称都对应一句说明发生了什么、一句说明下一步该做什么,以及由谁修复:你或 Tajo。

失败名称发生了什么该做什么由谁修复
lease_conflict该同步的另一次运行已在进行中。无需操作。进行中的运行会完成;下一次计划运行会正常开始。Tajo
lease_lost运行中途失去了运行名额,为避免重复写入而停止。重新运行同步。Tajo
lease_unavailable同步无法预留运行名额。重新运行同步。如果以同样方式失败,请把运行 id 发给我们。Tajo
stale_job_swept该运行已停止报告进度并被关闭。重新运行同步。Tajo
provider_rate_limited另一个系统要求我们放慢速度。无需操作。等待下一次计划运行。Tajo
provider_unavailable另一个系统不可用或未能及时响应。无需操作。等待下一次计划运行。如果一整天都以同样方式失败,请把运行 id 发给我们。Tajo
connection_missing同步使用的某个工具在此工作区中未连接;运行会指出是哪个工具。连接该工具,然后重新运行同步。你
connection_unauthorized另一个系统拒绝了我们的访问。重新连接该连接以获得新的授权,然后重新运行同步。你
destination_rejected目标拒绝了本次运行中的所有记录。对照目标的必填字段和格式检查字段映射,然后重新运行同步。你
node_failed同步的某个步骤在读取、转换或写入记录时失败。打开该运行,查看哪个步骤失败以及原因,修复后重新运行同步。你
attestation_rule_not_active此同步已暂停。恢复同步以运行它。你
attestation_publication_not_attested此版本的同步尚未发布。发布同步。对同步的更改在发布之前不会运行。你
unclassified_exception同步因我们尚未归类的原因而失败。重新运行同步。如果以同样方式失败,请把运行 id 发给我们。Tajo

可能出现的问题

  • Retry 返回 “This sync rule is already running.” 只要该同步有任何运行显示为 Queued 或 Running,你发起的重试或测试运行就会被拒绝,包括 worker 已停止的运行。对于 Tajo 按计划运行的同步,该运行在开始超过一小时后会被关闭并替换。对于其他同步,请把运行 id 发给我们。
  • 同步失败超过七天。 七天之后,台账会忘记已完成的写入。此后重放的批次可能会再次写入记录,因此请检查目标中是否有重复联系人。
  • 一个同步没有动静,另一个却正常。 每小时检查监控的是工作区,而不是每个同步。同一工作区中一个正常的同步会掩盖一个没有动静的同步,所以请查看每个同步的 Run history。
  • 你想要不同的限制。 五次失败后暂停和 24 小时检查是为整个 Tajo 部署设置的,不能按同步单独设置。

相关文章

本页的 Markdown: recover-a-stuck-or-failed-sync.md

正在加载 Markdown…