อ้าวทำไม Text File Pipe มันหายหละ

บันทึกเคสที่เจอช่วงระหว่าง UAT ครับ ตอนแรกหากันนานมากว่า image ของ container ที่ทำไปมีปัญหาอะไร หรือป่าว ? โดยปัญหา คือ ว่าตัว Text File ที่ Container มันสร้างขึ้น Pipe มันหายไป ทำให้ Column มันเขย่งกัน

อ้าวเราก็ใช้ Container นี่ ผลลัพธ์ที่ได้จากควรจะเหมือนกันสิ !!!

เรื่องนี้ทำให้น้องๆ ที่ดูเคสนี้ปวดหัวเหมือนกัน ส่วนผมเองที่พยายามเจรจากับอีกระบบ กำหนดชื่อเลยแหละกันว่าระบบ AA ว่าขอตรวจสอบก่อน เพื่อไม่ให้ระบบ AA นั้นเอาข้ออ้างนี้ ว่าระบบที่ผมดู Column แหว่งแล้ว ระบบ AA เค้าทำงานไม่ได้ครับ (จริงๆระบบ AA ไม่มีคนที่จะเอา Text File ไปทำต่อครับ เลยจะโทษระบบที่ผมดูก่อนครับ) หลังจากเจรจาได้ช่วงเวลาเสาร์ อาทิตย์ก่อนประชุม ผมก็มาติดตามน้องที่ดูเคสครับ ทดสอบยังไงก็ไม่เจอครับ ผมเลยลองตรวจสอบต่อครับ แล้วก็ถึงบ้างอ้อ ว่าปัญหาเกิดจากอะไร

ลูกค้ามี Change เปลี่ยน Requirement กระทบโครงสร้าง Table Temp

  • หลังจาก UAT ไปทางลูกค้ามี Change เปลี่ยน Requirement กระทบโครงสร้าง Table Temp ทำให้มี Script ALTER เพิ่มครับ ตัว Table Temp ที่ Interface ใช้จึงมี ALTER 2 รอบครับ ถ้ารันสลับลำดับกันก็ชิบหายเลย ใช่ครับ เคสนี้ IT ลูกค้ารัน Script สลับลำดับ กับจริงครับ แล้ว Column ที่ Shift มาเป็น String หมดครับเลยไม่มี Error เลย ชิบหายแบบเงียบๆเลย

สาเหตุ Run Script ผิดอย่างเดียว หรือป่าว ?

ลองมามุมกลับว่าทำไมถึง Run สลับ ถึงแม้ว่าจะแจ้งลูกค้าไป แต่เดี๋ยวเค้าน่าจะหาทางบี้กลับอยู่ดีตามสาเหตุที่บอกไปตอนต้นครับ

  • แม้ว่าลูกค้าจะ Change แต่การ Run Script ต้องมีการควบคุมลำดับเหมือนกันครับ ถ้าลูกค้าขอ Change เพิ่ม ต้องแจ้งว่าต้องขยับเลข Version จริงๆ
OLD 
8.7.290.281
- ALTER TABLE TEMP_INF // FIELD P / Q / R
- ALTER TABLE TEMP_INF // FIELD S (NEW CHANGE REQUIREMENT)

=========================================================
NEW
8.7.290.281
- ALTER TABLE TEMP_INF // FIELD P / Q / R
8.7.290.282
- ALTER TABLE TEMP_INF // FIELD S (NEW CHANGE REQUIREMENT)
  • ตัว Script Interface ของเราหละ พอลองเข้าไปดู Legacy Shell Script อันนั้นที่อายุ 10 ปีนิดๆก็พบว่า ตอน INSERT มันไม่มีการกำหนด Column ตอน INSERT เลยครับ ลำดับตอน SELECT ต้องตรงกับ TALBE TEMP_INF
INSERT INTO TEMP_INF 
SELECT A, B, C ..... , P, Q, T, S FROM DAILTPOSITION
WHERE VALUEDATE > @INF_DATE;
สิ่งที่ควรทำ ตือ ต้อง INSERT ต้องมีการระบุ Column ด้วย

INSERT INTO TEMP_INF(A, B, C ..... , P, Q, T, S)
SELECT A, B, C ..... , P, Q, T, S FROM DAILTPOSITION
WHERE VALUEDATE > @INF_DATE;

สุดท้าย ผมเลือกปรับตัว Script นะ แม้ว่าลูกค้าจะ change แล้วไม่อยากขยับเวอร์ชัน รอบนี้ต้องยอมแล้ว แม้ว่าต้องนำเอกสารไปให้ท่านเซ็นต์มาใหม่ ส่วนปรับ Legacy Shell Script ดูไม่คุ้มค่าเลยครับ


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.