Triển khai ứng dụng/máy chủ

Báo cáo sự cố Xem nguồn

Hệ thống Bazel được triển khai dưới dạng một quy trình máy chủ tồn tại lâu dài. Nhờ đó, công cụ này có thể thực hiện nhiều biện pháp tối ưu hoá không thể thực hiện khi triển khai theo hướng hàng loạt, chẳng hạn như lưu các tệp BUILD vào bộ nhớ đệm, biểu đồ phần phụ thuộc và siêu dữ liệu khác giữa các bản dựng. Điều này giúp cải thiện tốc độ của các bản dựng gia tăng và cho phép nhiều lệnh (chẳng hạn như buildquery) dùng chung bộ nhớ đệm của các gói đã tải, giúp thực hiện truy vấn rất nhanh. Mỗi máy chủ có thể xử lý tối đa một lệnh gọi tại một thời điểm; các lệnh gọi đồng thời khác sẽ bị chặn hoặc bị lỗi nhanh (xem --block_for_lock).

Khi chạy bazel, bạn sẽ chạy ứng dụng. Ứng dụng tìm thấy máy chủ dựa trên cơ sở đầu ra. Theo mặc định, cơ sở này được xác định theo đường dẫn của thư mục không gian làm việc cơ sở và mã nhận dạng người dùng của bạn. Vì vậy, nếu xây dựng trong nhiều không gian làm việc, bạn sẽ có nhiều cơ sở đầu ra, từ đó có nhiều quy trình của máy chủ Bazel. Nhiều người dùng trên cùng một máy trạm có thể xây dựng đồng thời trong cùng một không gian làm việc vì cơ sở đầu ra của họ sẽ khác nhau (mã nhận dạng người dùng khác nhau).

Nếu không tìm thấy một phiên bản máy chủ đang chạy, ứng dụng sẽ bắt đầu một phiên bản mới. Trình phân tích cú pháp thực hiện việc này bằng cách kiểm tra xem cơ sở dữ liệu đầu ra đã tồn tại hay chưa, ngụ ý rằng bản lưu trữ blaze đã được giải nén. Nếu không, nếu cơ sở đầu ra không tồn tại, ứng dụng sẽ giải nén các tệp của kho lưu trữ và đặt mtime của các tệp đó thành một ngày sau 9 năm trong tương lai. Sau khi cài đặt, ứng dụng sẽ xác nhận rằng mtime của các tệp đã giải nén bằng với ngày đã quá hạn để đảm bảo không có sự can thiệp vào quá trình cài đặt.

Quá trình máy chủ sẽ dừng sau một khoảng thời gian không hoạt động (3 giờ, theo mặc định, có thể được sửa đổi bằng tuỳ chọn khởi động --max_idle_secs). Trong hầu hết trường hợp, người dùng sẽ không nhìn thấy thực tế là có một máy chủ đang chạy, nhưng đôi khi việc lưu ý điều này sẽ giúp bạn lưu ý điều này. Ví dụ: nếu đang chạy các tập lệnh thực hiện nhiều bản dựng tự động trong các thư mục khác nhau, bạn phải đảm bảo rằng bạn không tích luỹ nhiều máy chủ ở trạng thái rảnh. Bạn có thể thực hiện điều này bằng cách tắt các máy chủ đó một cách rõ ràng khi đã hoàn tất hoặc bằng cách chỉ định khoảng thời gian chờ ngắn.

Tên của quy trình máy chủ Bazel xuất hiện trong dữ liệu đầu ra của ps x hoặc ps -e f dưới dạng bazel(dirname), trong đó dirname là tên cơ sở của thư mục chứa gốc của thư mục Workspace. Ví dụ:

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

Nhờ vậy, bạn có thể dễ dàng tìm hiểu quy trình máy chủ nào thuộc về một không gian làm việc nhất định. (Hãy lưu ý rằng với một số tuỳ chọn khác đối với ps, các quy trình trên máy chủ Bazel có thể chỉ được đặt tên là java.) Bạn có thể dừng máy chủ Bazel bằng cách sử dụng lệnh tắt.

Khi chạy bazel, trước tiên, ứng dụng sẽ kiểm tra để đảm bảo rằng máy chủ đó là phiên bản phù hợp. Nếu không, máy chủ đó sẽ bị dừng và một máy chủ mới đã được khởi động. Điều này đảm bảo việc sử dụng quy trình máy chủ chạy trong thời gian dài không ảnh hưởng đến việc tạo phiên bản chính xác.