Khắc phục sự cố đồng bộ hoá

Trang này giải thích cách khắc phục và giải quyết các vấn đề liên quan đến lệnh repo sync.

Khắc phục sự cố mạng

Phần này cung cấp một số đề xuất để khắc phục các sự cố mạng có thể khiến đồng bộ hoá không thành công.

Sử dụng phương thức xác thực để tránh rào cản về hạn mức

Để bảo vệ máy chủ khỏi việc sử dụng quá mức, mỗi địa chỉ IP được dùng để nguồn truy cập được liên kết với một hạn mức.

Khi chia sẻ địa chỉ IP với người dùng khác, chẳng hạn như khi truy cập vào kho lưu trữ nguồn từ bên ngoài tường lửa NAT, hạn mức có thể kích hoạt cho các mẫu thông thường. Ví dụ: một hạn mức có thể kích hoạt khi có nhiều người dùng đồng bộ hoá các ứng dụng mới từ cùng một địa chỉ IP trong một khoảng thời gian ngắn.

Để tránh kích hoạt hạn mức, bạn có thể sử dụng quyền truy cập đã xác thực. Quyền này sử dụng hạn mức riêng cho từng người dùng, bất kể địa chỉ IP.

Cách bật quyền truy cập đã xác thực:

  1. Tạo mật khẩu bằng trình tạo mật khẩu.

  2. Chạy lệnh sau để chuyển đổi ứng dụng của bạn sang sử dụng tính năng xác thực tự động (mà không thay đổi nhánh):

    $ repo init -u https://android.googlesource.com/a/platform/manifest
    

    Xin lưu ý rằng tiền tố thư mục /a/ sẽ kích hoạt quá trình xác thực tự động.

Định cấu hình để sử dụng proxy

Nếu bạn đang tải xuống nguồn từ sau một proxy, như thường lệ ở một số môi trường công ty, hãy đảm bảo bạn chỉ định rõ một proxy cho Repo để sử dụng chạy các lệnh sau:

$ export HTTP_PROXY=http://proxy_user_id:proxy_password@proxy_server:proxy_port
$ export HTTPS_PROXY=http://proxy_user_id:proxy_password@proxy_server:proxy_port

Điều chỉnh chế độ cài đặt TCP/IP để tránh các vấn đề về kết nối

Mặc dù hiếm khi xảy ra, nhưng ứng dụng Linux có thể gặp phải các vấn đề về kết nối, chẳng hạn như bị treo giữa quá trình tải xuống trong khi nhận đối tượng. Để cải thiện vấn đề này, hãy điều chỉnh chế độ cài đặt của ngăn xếp TCP/IP hoặc sử dụng các kết nối không song song. Bạn phải có quyền truy cập thư mục gốc để sửa đổi chế độ cài đặt TCP. Để sửa đổi hãy đưa ra các lệnh sau:

$ sudo sysctl -w net.ipv4.tcp_window_scaling=0
$ repo sync -j1

Sử dụng bản sao cục bộ để tránh độ trễ mạng

Khi sử dụng một số ứng dụng khách, bạn có thể tạo một bản sao cục bộ của toàn bộ nội dung máy chủ và đồng bộ hoá các ứng dụng khách từ bản sao đó mà không cần truy cập vào mạng. Làm theo các hướng dẫn sau để tạo một bản sao cục bộ trong ~/aosp-mirror/ và đồng bộ hoá ứng dụng với bản sao đó:

  1. Tạo và đồng bộ hoá bản sao:

    $ mkdir -p /usr/local/aosp/mirror
    $ cd /usr/local/aosp/mirror
    $ repo init -u https://android.googlesource.com/mirror/manifest --mirror
    

    Các lệnh này tạo một bản sao cục bộ trong /user/local/aosp/mirror và khởi chạy bản sao bằng cờ --mirror với lệnh repo init.

  2. Cách đồng bộ hoá ứng dụng từ bản sao:

    $ mkdir -p /usr/local/aosp/main
    $ cd /usr/local/aosp/main
    $ repo init -u /usr/local/aosp/mirror/platform/manifest.git
    $ repo sync
    
  3. Cuối cùng, hãy làm theo các lệnh sau để đồng bộ hoá máy chủ phản chiếu với máy chủ và đồng bộ hoá máy khách với máy chủ phản chiếu:

    $ cd /usr/local/aosp/mirror</code>
    $ repo sync
    $ cd /usr/local/aosp/main
    $ repo sync
    

Bạn có thể lưu trữ bản sao trên máy chủ LAN và truy cập vào bản sao đó qua NFS, SSH hoặc Git. Bạn cũng có thể lưu trữ tệp đó trên ổ đĩa di động và chuyển ổ đĩa đó giữa người dùng hoặc máy.

Sử dụng tính năng sao chép một phần

Nếu bạn đang sử dụng Git phiên bản 2.19 trở lên, hãy chỉ định --partial-clone khi thực hiện repo init để khắc phục mọi sự cố mạng có độ trễ thấp:

  $ repo init -u https://android.googlesource.com/platform/manifest -b main --partial-clone --clone-filter=blob:limit=10M

Thay vì khởi chạy Repo để tải mọi thứ xuống, lệnh này sẽ tải các đối tượng Git xuống khi cần.

Khắc phục các sự cố đồng bộ hoá cụ thể

Trang này trình bày chi tiết một số vấn đề đã biết mà bạn có thể gặp phải khi cố gắng đồng bộ hoá mã nguồn Android.

Lệnh không thực hiện được với lỗi 403 hoặc 500 (vấn đề về proxy)

Các lệnh repo init hoặc repo sync có thể không thành công với lỗi 403 hoặc 500 . Thông thường, những lỗi này liên quan đến việc proxy HTTP gặp khó khăn trong việc xử lý các lượt chuyển dữ liệu lớn.

Mặc dù không có cách khắc phục cụ thể cho những lỗi này, nhưng đôi khi, việc sử dụng phiên bản Python mới nhất và sử dụng repo sync -j1 một cách rõ ràng có thể giúp ích.