pnpm ยอมรับการแก้ไขปัญหา TMPDIR Socket Path Budget
การทดสอบภาคสนาม (field test) ล่าสุดสำหรับ pnpm ส่งผลให้ได้รับการยอมรับใน upstream นี่คือชัยชนะครั้งสำคัญสำหรับการแก้ไขปัญหาที่เน้นขอบเขต (boundary-focused repairs)
ปัญหาคือเรื่องความยาวของ path
เมื่อ pnpm ติดตั้งแพ็กเกจ มันจะกำหนด path ของ TMPDIR แพ็กเกจบางตัวจะรัน lifecycle tools ระหว่างการติดตั้ง เครื่องมือเหล่านี้มักจะสร้าง IPC sockets หาก path ของ TMPDIR ของ pnpm ยาวเกินไป ความยาวรวมของ socket path จะเกินขีดจำกัดของ Unix ซึ่งทำให้ Node รายงานข้อผิดพลาดออกมา
ข้อผิดพลาดดูเหมือนจะเป็นความล้มเหลวของ Node หรือเครื่องมือ แต่สาเหตุที่แท้จริงคือปัญหาเรื่อง path budget
pnpm ไม่ได้เป็นเจ้าของขีดจำกัด Unix socket pnpm ไม่ได้เป็นเจ้าของ lifecycle tools แต่ pnpm เป็นเจ้าของ path ของไดเรกทอรีชั่วคราวที่มันจัดเตรียมไว้
การแก้ไขนี้มุ่งเน้นไปที่สิ่งที่ pnpm ควบคุมเท่านั้น
การแก้ไขนี้จะทำให้ส่วนของ path ที่เป็นของ pnpm สั้นลง โดยใช้ fs.mkdtemp() ของ Node แบบ native พร้อมกับ prefix ที่กระชับ วิธีนี้จะช่วยให้ไดเรกทอรีชั่วคราว (temp directory) ยังคงอยู่ภายใน pnpm store แต่ใช้พื้นที่น้อยลง
แนวทางนี้ปฏิบัติตามกฎสามข้อ:
- รักษา pnpm temp root ไว้
- ทำให้ pnpm basename สั้นลง
- เหลือ path budget ให้กับเครื่องมือปลายทาง (downstream tools) มากขึ้น
นี่คือการแก้ไขที่เฉพาะเจาะจงและมีประสิทธิภาพ มันไม่ได้พยายามแก้ไขข้อผิดพลาดของ socket ทุกรูปแบบที่อาจเกิดขึ้น ไม่ได้เปลี่ยนวิธีการรันสิทธิ์ (privileges) ของ pnpm แต่มันเพียงแค่หยุดไม่ให้ pnpm สิ้นเปลือง path budget โดยไม่จำเป็น
ผู้ดูแล (maintainers) ของ pnpm ได้อนุมัติและรวม (merge) การแก้ไขนี้เมื่อวันที่ 16 มิถุนายน 2026
ความสำเร็จนี้พิสูจน์ว่าวิธีการ Scarab/SDS นั้นใช้งานได้จริง เราค้นหาขอบเขตที่เราเป็นเจ้าของ (owned surface) เราหลีกเลี่ยงอาการที่เด่นชัดที่สุด (loudest symptom) เราทำให้ patch มีขนาดเล็ก และเรายังรักษาขอบเขตของโปรเจกต์เอาไว้
สถานะ Field Lab สำหรับการทดสอบนี้คือ: upstream-accepted
Optional learning community: https://t.me/GyaanSetuAi