• ตั้งแต่ Gradle 8.6 เป็นต้นมา ในสภาพแวดล้อม Windows จะเกิดข้อผิดพลาด 'Could not move temporary workspace...' บ่อยครั้งจนกระทั่งเกิดการ build ล้มเหลว เนื่องจากข้อขัดแย้งกับโปรแกรมป้องกันไวรัส และตอนนี้ได้รับการแก้ไขใน Gradle 9.1 RC
  • ผู้ใช้ Windows จะพ้นจากปัญหา build ที่เจอกันมากว่าหนึ่งปี และเริ่มทำ Gradle build ได้อย่างปกติตั้งแต่เวอร์ชัน 9.1 (ประเด็นที่เกี่ยวข้อง: #31438)

วิธีการทำงานของเวอร์ชันก่อนหน้า

  • ใช้การล็อกไฟล์แบบตรงไปตรงมาโดยการวางล็อกบนไฟล์เอง เพื่อรับประกันความคงที่ของแคช dependency แนวทางที่ง่ายและชัดเจน

วิธีการทำงานตั้งแต่เวอร์ชัน 8.6

  • เพื่อปรับปรุงประสิทธิภาพ ได้นำ CacheBasedImmutableWorkspaceProvider มาใช้ โดยสร้างไฟล์ชั่วคราวที่อิงตาม UUID และย้ายไปยังเส้นทางเฉพาะหลังงานเสร็จ
  • วิธีนี้ถูกออกแบบมาเพื่อแก้ปัญหาคอขวดด้านประสิทธิภาพของการล็อกไฟล์ระหว่างการทดสอบแบบรวม
  • ในสภาพแวดล้อม Windows เกิดปัญหาการย้ายไฟล์ชั่วคราวล้มเหลว เนื่องจากชนกับการเฝ้าติดตามแบบเรียลไทม์ของโปรแกรมป้องกันไวรัส (เมื่อมีการสร้างไฟล์ใหม่จะพยายามรับล็อก)

วิธีแก้ในเวอร์ชัน 9.1

  • นำกลยุทธ์การล็อกแบบต่างกันตามระบบปฏิบัติการมาใช้
  • สภาพแวดล้อม Windows: ใช้แนวทาง LockingStrategy.WORKSPACE_LOCK โดยสร้าง โฟลเดอร์ย่อย (\workspace) ภายในเส้นทางแคช และรับล็อกทั้งโฟลเดอร์ย่อยนี้ทั้งก้อน เพื่อป้องกันการรบกวนรายไฟล์จากโปรแกรมป้องกันไวรัส ช่วยแก้ปัญหาได้
  • สภาพแวดล้อมนอก Windows: คงแนวทาง ATOMIC_MOVE (แบบเวอร์ชัน 8.6) เดิม

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น