قد يتوقف تشغيل المزامنة في منتصفه لأن عامل المعالجة (worker) أُعيد تشغيله، أو لأن النظام الآخر متوقف، أو لأن سجلًا رُفض. بعد توقف عامل المعالجة أو انقطاع عابر، يستأنف Tajo المزامنة من تلقاء نفسه. ولا يعيد إرسال السجلات التي كتبها خلال الأيام السبعة الأخيرة. تشرح هذه الصفحة ما يفعله، وما تراه في صفحة المزامنة، والحالات القليلة التي تحتاج فيها إلى التدخل.
فحص سريع افتح المزامنة من Syncs and mappings تحت Connections واقرأ أحدث تشغيل في Run history. يذكر التشغيل الفاشل ما حدث وما يجب فعله بعد ذلك.
ما يفعله Tajo بنفسه
المؤشر. يقرأ التشغيل مصدره على دفعات بدءًا من المؤشر المحفوظ للمزامنة. لا يتقدم المؤشر في نهاية الدفعة إلا إذا وصلت كل سجلات تلك الدفعة. إذا فشل التشغيل، يُحتفظ بآخر موضع بلغه دون أخطاء. يبدأ التشغيل التالي من هناك، فتُقرأ الدفعة المنقطعة من جديد بدلًا من تخطيها.
سجل التسليم. قبل كتابة أي سجل، يحصل على مفتاح تسليم. المفتاح قيمة تجزئة (hash) للمزامنة والمصدر ومؤشر الصفحة وموضع السجل في الصفحة والسجل نفسه، لذا لا يحتوي على أي بيانات شخصية. قبل استدعاء الوجهة، يُحجز المفتاح. عندما تنجح الكتابة، يُعلَّم المفتاح بأنه مكتمل ويُحفظ سبعة أيام. لا يعتمد المفتاح على التشغيل الذي يطلبه، لذا تشتق إعادة المحاولة أو تشغيل مجدول لاحق المفتاح نفسه للسجل نفسه. خلال هذه الأيام السبعة تُستخدم النتيجة المحفوظة ولا تُستدعى الوجهة مرة أخرى. لهذا لا تصل الدفعة المعادة مرتين.
تشغيل واحد في كل مرة. لكل مزامنة حجز (lease) واحد، يحتفظ به التشغيل الجاري طوال مدته. للحجز رمز خاص به وعمر 15 دقيقة، ويُجدَّد كل 5 دقائق ما دام التشغيل يعمل. التشغيل الذي يفقد حجزه يتوقف قبل كتابته التالية أو نقطة الحفظ التالية، كي لا يكتب مرتين. عندما يتوقف عامل المعالجة، لا يُجدَّد حجزه بعد ذلك، فتنتهي مهلته خلال 15 دقيقة.
إعادة المحاولة التلقائية. التشغيل الموجود في قائمة الانتظار الذي يفشل يحصل على خمس محاولات كحد أقصى. ينتظر Tajo 60 ثانية قبل المحاولة الثانية، ثم 120 و240 و480 ثانية. أما إعادة المحاولة أو التشغيل التجريبي الذي تبدأه بنفسك فيعمل مرة واحدة. لا تُعاد محاولة تشغيل تعارض مع تشغيل جارٍ بالفعل، ولا تشغيل لم تعد نسخته المنشورة أو اتصالاته صالحة.
التشغيلات العالقة. في المزامنة التي يشغّلها Tajo وفق جدول، يُغلق التشغيل ويوضع تشغيل جديد في قائمة الانتظار متى بدأ قبل أكثر من ساعة ولم يعد يحتفظ بحجزه. يعرض التشغيل المغلق “The run stopped reporting progress and was closed.” (توقف التشغيل عن الإبلاغ عن تقدمه وأُغلق). إذن لا يدوم حجز التشغيل المتوقف أكثر من 15 دقيقة، ويُستبدل التشغيل العالق لمزامنة مجدولة بعد ساعة. يوضح مقال فهم مزامنة بيانات Shopify مع Brevo أي المزامنات تعمل وفق جدول.
الإيقاف المؤقت بعد إخفاقات متكررة. إذا فشلت آخر خمسة تشغيلات منتهية منذ آخر تعديل على المزامنة، يوقف Tajo المزامنة مؤقتًا. تعرض صفحتها “Paused automatically by the failure circuit breaker” مع آخر خطأ. تشغيل واحد ناجح يعيد العدّ إلى الصفر. لا شيء يعيد تشغيل المزامنة الموقوفة من تلقاء نفسه: تبقى موقوفة حتى تصلح السبب وتنشرها من جديد.
الفحص كل ساعة. كل ساعة، عند الدقيقة 13، ينبّه Tajo فريقه عن أي مساحة عمل فيها مزامنة نشطة ولم ينجح فيها أي تشغيل خلال آخر 24 ساعة. ويشمل ذلك مساحة العمل التي لم يُسجَّل فيها أي تشغيل على الإطلاق. يُطلق التنبيه مرة واحدة، ولا يُطلق مجددًا إلا بعد نجاح تشغيل. مساحة العمل التي فُعّلت أو عُدّلت أقدم مزامنة نشطة فيها قبل أقل من 24 ساعة لا تُفحص بعد. يصل هذا التنبيه إلى Tajo لا إليك، ولا يغيّر مزامنتك.
ما تراه
افتح المزامنة من Syncs and mappings. يعرض Run history كل تشغيل مع عدد السجلات المكتوبة من السجلات المقروءة، وعدد الإخفاقات، والمدة، ووقت البدء. حالته هي Queued أو Running أو Succeeded أو Partial (فشلت بعض السجلات) أو Failed.
- التشغيل الجاري الذي لم يبلّغ عن تقدمه منذ دقيقتين يعرض “Waiting for a fresh progress update” (في انتظار تحديث جديد للتقدم).
- يعرض التشغيل الفاشل جملة عما حدث، وجملة عما يجب فعله بعد ذلك، واسم الإخفاق، ومعرّف التشغيل.
- يعرض View DLQ في صفحة Syncs التشغيلات الفاشلة والجزئية في كل المزامنات، ومع كل منها زر Retry.
ما يجب فعله
- اقرأ أحدث تشغيل فاشل. سطر “ما يجب فعله” فيه هو الخطوة التالية. يسرد الجدول أدناه الإخفاقات التي يُرجَّح أن تصادفها.
- إذا كان مكتوبًا “Nothing”، فانتظر. يتعافى التشغيل المجدول التالي من تلقاء نفسه.
- إذا كان مكتوبًا أن تشغّل المزامنة مرة أخرى، فاضغط Retry على التشغيل الفاشل تحت View DLQ. تبدأ إعادة المحاولة من المؤشر المحفوظ، فلا تُكتب الدفعات المكتوبة بالفعل مرة أخرى. إعادة المحاولة الناجحة تزيل التشغيل الفاشل من القائمة.
- إذا أُوقفت المزامنة مؤقتًا، فأصلح السبب الذي يذكره الشريط، ثم انشر المزامنة من جديد عبر Publish sync أو Request publish approval.
- إذا تكرر الإخفاق نفسه، فأرسل إلينا معرّف التشغيل الظاهر تحت التشغيل الفاشل.
يقابل كل اسم إخفاق جملةً عما حدث، وجملةً عما يجب فعله بعد ذلك، ومن يصلحه: أنت أم Tajo.
| اسم الإخفاق | ما حدث | ما يجب فعله | من يصلحه |
|---|---|---|---|
lease_conflict | كان تشغيل آخر لهذه المزامنة جاريًا بالفعل. | لا شيء. سينتهي التشغيل الجاري؛ ويبدأ التشغيل المجدول التالي بشكل طبيعي. | Tajo |
lease_lost | فقد التشغيل خانته في منتصف الطريق وتوقف كي لا يكتب مرتين. | شغّل المزامنة مرة أخرى. | Tajo |
lease_unavailable | تعذّر على المزامنة حجز خانة التشغيل. | شغّل المزامنة مرة أخرى. إذا فشلت بالطريقة نفسها، فأرسل إلينا معرّف التشغيل. | Tajo |
stale_job_swept | توقف التشغيل عن الإبلاغ عن تقدمه وأُغلق. | شغّل المزامنة مرة أخرى. | Tajo |
provider_rate_limited | طلب منا النظام الآخر أن نبطئ. | لا شيء. انتظر التشغيل المجدول التالي. | Tajo |
provider_unavailable | كان النظام الآخر غير متاح أو لم يرد في الوقت المحدد. | لا شيء. انتظر التشغيل المجدول التالي. إذا ظلت تفشل بالطريقة نفسها يومًا كاملًا، فأرسل إلينا معرّف التشغيل. | Tajo |
connection_missing | أداة تستخدمها المزامنة غير متصلة في مساحة العمل هذه؛ ويذكرها التشغيل باسمها. | اربطها، ثم شغّل المزامنة مرة أخرى. | أنت |
connection_unauthorized | رفض النظام الآخر وصولنا. | أعد ربط الاتصال ليحصل على تفويض جديد، ثم شغّل المزامنة مرة أخرى. | أنت |
destination_rejected | رفضت الوجهة كل سجلات هذا التشغيل. | راجع ربط الحقول مقابل الحقول الإلزامية والتنسيقات في الوجهة، ثم شغّل المزامنة مرة أخرى. | أنت |
node_failed | فشلت خطوة من المزامنة أثناء قراءة السجلات أو تحويلها أو كتابتها. | افتح التشغيل لترى أي خطوة فشلت ولماذا، وأصلح ذلك، ثم شغّل المزامنة مرة أخرى. | أنت |
attestation_rule_not_active | هذه المزامنة موقوفة مؤقتًا. | استأنف المزامنة لتشغيلها. | أنت |
attestation_publication_not_attested | لم تُنشر هذه النسخة من المزامنة. | انشر المزامنة. لا تعمل التغييرات على المزامنة حتى تُنشر. | أنت |
unclassified_exception | فشلت المزامنة لسبب لم نصنّفه بعد. | شغّل المزامنة مرة أخرى. إذا فشلت بالطريقة نفسها، فأرسل إلينا معرّف التشغيل. | Tajo |
ما الذي قد يسوء
- يجيب Retry بـ “This sync rule is already running.” (قاعدة المزامنة هذه قيد التشغيل بالفعل). تُرفض إعادة المحاولة أو التشغيل التجريبي الذي تبدأه ما دام أي تشغيل للمزامنة يظهر بحالة Queued أو Running، بما في ذلك تشغيل توقف عامل معالجته. في المزامنة التي يشغّلها Tajo وفق جدول، يُغلق ذلك التشغيل ويُستبدل متى بدأ قبل أكثر من ساعة. وفي أي مزامنة أخرى، أرسل إلينا معرّف التشغيل.
- فشلت مزامنة لأكثر من سبعة أيام. بعد سبعة أيام ينسى سجل التسليم عملية الكتابة المكتملة. الدفعة المعادة بعد ذلك قد تكتب السجلات مرة أخرى، لذا افحص الوجهة بحثًا عن جهات اتصال مكررة.
- مزامنة صامتة بينما تعمل أخرى. يراقب الفحص كل ساعة مساحة العمل، لا كل مزامنة على حدة. المزامنة السليمة تخفي مزامنة صامتة في مساحة العمل نفسها، لذا اقرأ Run history لكل مزامنة.
- تريد حدودًا مختلفة. الإيقاف بعد خمسة إخفاقات والفحص على مدى 24 ساعة مضبوطان على مستوى تثبيت Tajo بأكمله، لا لكل مزامنة على حدة.