سنک کا رن آدھے راستے میں رک سکتا ہے کیونکہ کوئی worker دوبارہ شروع ہوتا ہے، دوسرا سسٹم بند ہوتا ہے یا کوئی ریکارڈ مسترد ہو جاتا ہے۔ رکے ہوئے worker یا عارضی بندش کے بعد Tajo سنک کو خود وہیں سے سنبھال لیتا ہے۔ یہ پچھلے سات دنوں میں لکھے گئے ریکارڈز دوبارہ نہیں بھیجتا۔ یہ صفحہ بتاتا ہے کہ Tajo کیا کرتا ہے، آپ سنک کے صفحے پر کیا دیکھتے ہیں، اور وہ چند صورتیں جن میں آپ کو قدم اٹھانا ہے۔
فوری جانچ Connections کے تحت Syncs and mappings سے سنک کھولیں اور Run history میں سب سے نیا رن پڑھیں۔ ناکام رن بتاتا ہے کہ کیا ہوا اور آگے کیا کرنا ہے۔
Tajo خود کیا کرتا ہے
Cursor۔ رن اپنے سورس کو سنک کے محفوظ cursor سے شروع کر کے بیچوں میں پڑھتا ہے۔ cursor بیچ کے آخر میں صرف تب آگے بڑھتا ہے جب اس بیچ کا ہر ریکارڈ پہنچ چکا ہو۔ اگر رن ناکام ہو جائے تو وہ آخری مقام محفوظ رہتا ہے جہاں تک وہ صاف طور پر پہنچا تھا۔ اگلا رن وہیں سے شروع ہوتا ہے، اس لیے رکا ہوا بیچ چھوڑا نہیں جاتا بلکہ دوبارہ پڑھا جاتا ہے۔
ڈیلیوری لیجر۔ کوئی ریکارڈ لکھے جانے سے پہلے ایک ڈیلیوری کلید حاصل کرتا ہے۔ یہ کلید سنک، سورس، صفحے کے cursor، صفحے پر ریکارڈ کی جگہ اور خود ریکارڈ کا ہیش ہے، اس لیے اس میں کوئی ذاتی ڈیٹا نہیں ہوتا۔ منزل کو کال کرنے سے پہلے کلید پر دعویٰ کیا جاتا ہے۔ تحریر کامیاب ہونے پر کلید کو مکمل نشان زد کر کے سات دن تک رکھا جاتا ہے۔ کلید اس بات پر منحصر نہیں کہ کون سا رن پوچھ رہا ہے، اس لیے دوبارہ کوشش یا بعد کا شیڈول شدہ رن ایک ہی ریکارڈ کے لیے وہی کلید بناتا ہے۔ ان سات دنوں میں محفوظ نتیجہ استعمال ہوتا ہے اور منزل کو دوبارہ کال نہیں کیا جاتا۔ اسی لیے دوبارہ چلایا گیا بیچ دو بار نہیں لکھا جاتا۔
ایک وقت میں ایک رن۔ ہر سنک کی ایک lease ہوتی ہے، جسے جاری رن اپنی پوری مدت تک رکھتا ہے۔ lease کا اپنا ٹوکن ہوتا ہے اور اس کی مدت 15 منٹ ہے، اور رن کے کام کرتے ہوئے ہر 5 منٹ بعد اس کی تجدید ہوتی ہے۔ جو رن اپنی lease کھو دے وہ دو بار لکھنے سے بچنے کے لیے اپنی اگلی تحریر یا چیک پوائنٹ سے پہلے رک جاتا ہے۔ جب کوئی worker رک جائے تو اس کی lease کی تجدید نہیں ہوتی اور وہ 15 منٹ کے اندر ختم ہو جاتی ہے۔
خودکار دوبارہ کوششیں۔ قطار میں موجود رن ناکام ہو تو اسے زیادہ سے زیادہ پانچ کوششیں ملتی ہیں۔ Tajo دوسری کوشش سے پہلے 60 سیکنڈ انتظار کرتا ہے، پھر 120، 240 اور 480 سیکنڈ۔ جو دوبارہ کوشش یا ٹیسٹ رن آپ خود شروع کریں وہ ایک بار چلتا ہے۔ جو رن پہلے سے جاری رن سے ٹکرا گیا ہو اسے دوبارہ نہیں چلایا جاتا، اور نہ ہی اس رن کو جس کا شائع شدہ ورژن یا کنکشن اب درست نہ ہوں۔
رکے ہوئے رن۔ جس سنک کو Tajo شیڈول پر چلاتا ہے، اس میں کوئی رن بند کر دیا جاتا ہے اور نیا رن قطار میں ڈالا جاتا ہے جب وہ ایک گھنٹے سے زیادہ پہلے شروع ہوا ہو اور اب lease نہ رکھتا ہو۔ بند کیا گیا رن “The run stopped reporting progress and was closed.” (رن نے پیش رفت کی اطلاع دینا بند کر دی اور اسے بند کر دیا گیا) دکھاتا ہے۔ یعنی رکے ہوئے رن کی lease زیادہ سے زیادہ 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 بٹن۔
کیا کریں
- سب سے نیا ناکام رن پڑھیں۔ اس کی “کیا کرنا ہے” والی سطر اگلا قدم ہے۔ نیچے کی جدول وہ ناکامیاں دکھاتی ہے جن کا آپ کو سب سے زیادہ سامنا ہو سکتا ہے۔
- اگر اس میں “Nothing” (کچھ نہیں) لکھا ہو تو انتظار کریں۔ اگلا شیڈول شدہ رن خود بحال ہو جاتا ہے۔
- اگر اس میں سنک دوبارہ چلانے کا کہا گیا ہو، تو View DLQ کے تحت ناکام رن پر Retry دبائیں۔ دوبارہ کوشش محفوظ cursor سے شروع ہوتی ہے، اس لیے پہلے سے لکھے گئے بیچ دوبارہ نہیں لکھے جاتے۔ کامیاب دوبارہ کوشش ناکام رن کو فہرست سے ہٹا دیتی ہے۔
- اگر سنک روک دیا گیا ہو، تو بینر میں بتائی گئی وجہ ٹھیک کریں، پھر Publish sync یا Request publish approval سے سنک کو دوبارہ شائع کریں۔
- اگر وہی ناکامی دوبارہ آئے، تو ناکام رن کے نیچے دکھائی گئی رن 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 تنصیب کے لیے مقرر ہیں، ہر سنک کے لیے الگ نہیں۔