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

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

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

หากไคลเอ็นต์ไม่พบอินสแตนซ์ของเซิร์ฟเวอร์ที่ทำงานอยู่ ระบบจะเริ่มอินสแตนซ์ใหม่ โดยจะตรวจสอบว่าฐานเอาต์พุตมีอยู่แล้วหรือไม่ ซึ่งหมายความว่าได้คลายแพ็กเกจเก็บถาวรของ Blaze แล้ว หากฐานเอาต์พุตไม่มีอยู่ ไคลเอ็นต์จะคลายซิปไฟล์เก็บถาวรและตั้งค่า mtime เป็นวันที่ในอนาคต 9 ปี เมื่อติดตั้งแล้ว ไคลเอ็นต์จะยืนยันว่า mtime ของไฟล์ที่คลายซิปแล้วเท่ากับวันที่ที่กำหนดไว้ เพื่อให้แน่ใจว่าไม่มีการแก้ไขการติดตั้ง

กระบวนการของเซิร์ฟเวอร์จะหยุดลงหลังจากไม่มีการใช้งานเป็นระยะเวลาหนึ่ง (โดยค่าเริ่มต้นคือ 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 ได้โดยใช้คำสั่ง shutdown

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