การใช้งานไคลเอ็นต์/เซิร์ฟเวอร์

รายงานปัญหา ดูแหล่งที่มา

ระบบ Bazel ได้รับการนำมาใช้เป็นกระบวนการของเซิร์ฟเวอร์ที่มีอายุการใช้งานยาวนาน ซึ่งทำให้สามารถดำเนินการเพิ่มประสิทธิภาพหลายอย่างซึ่งไม่สามารถทำได้หากใช้แบบกลุ่ม เช่น การแคชไฟล์ BUILD, กราฟทรัพยากร Dependency และข้อมูลเมตาอื่นๆ จากบิลด์หนึ่งไปยังอีกบิลด์หนึ่ง ซึ่งจะช่วยปรับปรุงความเร็วของบิลด์ที่เพิ่มขึ้นและอนุญาตให้คำสั่งต่างๆ เช่น build และ query แชร์แคชของแพ็กเกจที่โหลดไว้เดียวกัน ซึ่งทำให้การค้นหารวดเร็วขึ้นมาก

การเรียกใช้ bazel คุณกำลังเรียกใช้ไคลเอ็นต์ ไคลเอ็นต์จะค้นหาเซิร์ฟเวอร์ตามฐานเอาต์พุต ซึ่งจะกำหนดโดยเส้นทางของไดเรกทอรีพื้นที่ทำงานฐานและรหัสผู้ใช้ของคุณโดยค่าเริ่มต้น ดังนั้นหากคุณสร้างในพื้นที่ทำงานหลายแห่ง คุณจะมีฐานเอาต์พุตหลายรายการ ทำให้มีกระบวนการของเซิร์ฟเวอร์ Bazel หลายรายการ ผู้ใช้หลายคนในเวิร์กสเตชันเดียวกันสามารถสร้างพร้อมกันได้ในพื้นที่ทำงานเดียวกันเนื่องจากฐานเอาต์พุตจะแตกต่างกัน (รหัสผู้ใช้ที่แตกต่างกัน) หากไคลเอ็นต์ไม่พบอินสแตนซ์เซิร์ฟเวอร์ที่ทำงานอยู่ ไคลเอ็นต์จะเริ่มต้นอินสแตนซ์ใหม่ กระบวนการของเซิร์ฟเวอร์จะหยุดลงหลังจากไม่มีการใช้งานเป็นระยะเวลาหนึ่ง (3 ชั่วโมงโดยค่าเริ่มต้น ซึ่งแก้ไขได้โดยใช้ตัวเลือกเริ่มต้น --max_idle_secs)

โดยส่วนใหญ่แล้วผู้ใช้มองไม่เห็นเซิร์ฟเวอร์ที่กำลังทำงานอยู่ แต่บางครั้งก็ช่วยตระหนักถึงเรื่องนี้ด้วย ตัวอย่างเช่น ถ้าคุณเรียกใช้สคริปต์ที่ดำเนินการกับบิลด์อัตโนมัติจำนวนมากในไดเรกทอรีต่างๆ คุณต้องไม่สะสมเซิร์ฟเวอร์ที่ไม่ได้ใช้งานในปริมาณมาก ซึ่งทำได้โดยปิดระบบอย่างชัดแจ้งเมื่อเริ่มใช้เสร็จแล้ว หรือระบุระยะหมดเวลาสั้นๆ

ชื่อกระบวนการของเซิร์ฟเวอร์ Bazel จะปรากฏในเอาต์พุตของ ps x หรือ ps -e f เป็น bazel(dirname) โดยที่ dirname เป็นชื่อฐานของไดเรกทอรีที่รวมรูทของไดเรกทอรีพื้นที่ทำงานไว้ เช่น

ps -e f
16143 ?        Sl     3:00 bazel(src-johndoe2) -server -Djava.library.path=...

วิธีนี้จะช่วยให้ค้นหาได้ง่ายขึ้นว่ากระบวนการของเซิร์ฟเวอร์ใดของพื้นที่ทำงาน (โปรดทราบว่าเมื่อใช้ตัวเลือกอื่นๆ ในps การประมวลผลของเซิร์ฟเวอร์ Bazel อาจมีชื่อเป็น java) เซิร์ฟเวอร์ Bazel สามารถหยุดโดยใช้คำสั่ง ปิดการทำงาน

เมื่อเรียกใช้ bazel ไคลเอ็นต์จะตรวจสอบก่อนว่าเซิร์ฟเวอร์เป็นเวอร์ชันที่เหมาะสมหรือไม่ หากไม่ใช่ เซิร์ฟเวอร์จะหยุดและเริ่มต้นใหม่ วิธีนี้ช่วยให้มั่นใจว่าการใช้กระบวนการของเซิร์ฟเวอร์ที่ใช้เวลานานจะไม่รบกวนการกำหนดเวอร์ชันที่เหมาะสม