การรันซิงค์อาจหยุดกลางทางเพราะ worker รีสตาร์ท ระบบอีกฝั่งล่ม หรือมีเรคคอร์ดถูกปฏิเสธ หลังจาก worker หยุดทำงานหรือเหตุขัดข้องชั่วคราวผ่านไป Tajo จะทำการซิงค์ต่อเอง และไม่ส่งเรคคอร์ดที่เขียนไปแล้วในเจ็ดวันล่าสุดซ้ำ หน้านี้อธิบายว่า Tajo ทำอะไร คุณจะเห็นอะไรบนหน้าของการซิงค์ และกรณีไม่กี่กรณีที่คุณต้องลงมือ
ตรวจสอบด่วน เปิดการซิงค์จาก Syncs and mappings ภายใต้ Connections แล้วอ่านการรันล่าสุดใน Run history การรันที่ล้มเหลวจะบอกว่าเกิดอะไรขึ้นและต้องทำอะไรต่อ
สิ่งที่ Tajo ทำเอง
cursor การรันจะอ่านแหล่งที่มาเป็นแบตช์ โดยเริ่มจาก cursor ที่บันทึกไว้ของการซิงค์ cursor จะขยับเมื่อจบแบตช์ก็ต่อเมื่อทุกเรคคอร์ดในแบตช์นั้นไปถึงปลายทางแล้วเท่านั้น ถ้าการรันล้มเหลว ตำแหน่งสุดท้ายที่ไปถึงได้อย่างสมบูรณ์จะถูกเก็บไว้ การรันครั้งถัดไปเริ่มจากตรงนั้น แบตช์ที่ถูกขัดจังหวะจึงถูกอ่านซ้ำแทนที่จะถูกข้ามไป
บัญชีการส่ง ก่อนเขียนเรคคอร์ด เรคคอร์ดจะได้รับคีย์การส่ง คีย์นี้เป็นค่าแฮชของการซิงค์ แหล่งที่มา cursor ของหน้า ตำแหน่งของเรคคอร์ดบนหน้า และตัวเรคคอร์ดเอง จึงไม่มีข้อมูลส่วนบุคคล ก่อนเรียกปลายทาง ระบบจะจองคีย์นี้ไว้ เมื่อเขียนสำเร็จ คีย์จะถูกทำเครื่องหมายว่าเสร็จสมบูรณ์และเก็บไว้เจ็ดวัน คีย์ไม่ขึ้นกับว่าการรันใดเป็นผู้ถาม การลองใหม่หรือการรันตามกำหนดเวลาครั้งหลังจึงได้คีย์เดียวกันสำหรับเรคคอร์ดเดียวกัน ภายในเจ็ดวันนั้น ระบบจะใช้ผลลัพธ์ที่บันทึกไว้และไม่เรียกปลายทางซ้ำ นี่คือเหตุผลที่แบตช์ที่ถูกเล่นซ้ำจะไม่ถูกเขียนสองครั้ง
รันได้ครั้งละหนึ่งการรัน การซิงค์แต่ละรายการมีสิทธิ์เช่า (lease) หนึ่งรายการ ซึ่งการรันที่กำลังดำเนินอยู่ถือไว้ตลอดอายุของมัน สิทธิ์เช่ามีโทเค็นของตัวเองและมีอายุ 15 นาที โดยต่ออายุทุก 5 นาทีขณะที่การรันทำงาน การรันที่เสียสิทธิ์เช่าจะหยุดก่อนการเขียนหรือ checkpoint ครั้งถัดไป เพื่อไม่ให้เขียนซ้ำ เมื่อ 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 ของการรัน
- View DLQ บนหน้า Syncs แสดงการรันที่ล้มเหลวและสำเร็จบางส่วนของทุกการซิงค์ แต่ละรายการมีปุ่ม Retry
สิ่งที่ต้องทำ
- อ่านการรันที่ล้มเหลวล่าสุด บรรทัด “ต้องทำอะไร” ของมันคือขั้นตอนถัดไป ตารางด้านล่างแสดงความล้มเหลวที่คุณมีแนวโน้มจะเจอมากที่สุด
- ถ้าระบุว่า “Nothing” (ไม่ต้องทำอะไร) ให้รอ การรันตามกำหนดเวลาครั้งถัดไปจะกู้คืนได้เอง
- ถ้าระบุให้รันการซิงค์อีกครั้ง กด Retry บนการรันที่ล้มเหลวใน View DLQ การลองใหม่จะเริ่มจาก 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 ทั้งระบบ ไม่ใช่ต่อการซิงค์