Khắc phục sự cố và khắc phục sự cố đồng bộ hóa

Trang này giải thích cách khắc phục sự cố 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 sự cố mạng có thể khiến đồng bộ hóa không thành công.

Sử dụng xác thực để tránh rào cản hạn ngạch

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

Khi chia sẻ địa chỉ IP với những 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 ngạch có thể kích hoạt các mẫu thông thường. Ví dụ: hạn ngạch có thể được kích hoạt khi một số người dùng đồng bộ hóa ứng dụng khách 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 ngạch, bạn có thể sử dụng quyền truy cập được xác thực, sử dụng hạn ngạch riêng cho từng người dùng, bất kể địa chỉ IP.

Để kích hoạt quyền truy cập được 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 khách của bạn sang sử dụng xác thực tự động (không thay đổi nhánh):

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

    Lưu ý rằng tiền tố thư mục /a/ sẽ kích hoạt 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ừ phía sau proxy, như thường thấy trong một số môi trường công ty, hãy đảm bảo bạn chỉ định rõ ràng proxy để Repo sử dụng bằng cách 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 cài đặt TCP/IP để tránh các sự cố kết nối

Mặc dù hiếm khi xảy ra nhưng máy khách Linux có thể gặp phải sự cố kết nối, chẳng hạn như bị kẹt khi đang 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 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 root để sửa đổi cài đặt TCP. Để sửa đổi cài đặt, hãy đưa ra các lệnh sau:

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

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

Khi sử dụng nhiều máy 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ộ hóa các máy khách từ máy nhân bản đó mà không cần truy cập mạng. Thực hiện theo các hướng dẫn sau để tạo một máy nhân bản cục bộ tại ~/aosp-mirror/ và đồng bộ hóa các máy khách với máy nhân bản đó:

  1. Tạo và đồng bộ hóa gương:

    $ 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 máy nhân bản cục bộ trong /user/local/aosp/mirror và khởi tạo máy nhân bản bằng cờ --mirror bằng lệnh repo init .

  2. Để đồng bộ hóa ứng dụng khách từ máy nhân bản:

    $ 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ộ hóa máy nhân bản với máy chủ và đồng bộ hóa máy khách với máy nhân bản:

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

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

Sử dụng bản sao 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 tạo Repo để tải xuống mọi thứ, lệnh này sẽ tải xuống các đối tượng Git khi cần thiết.

Khắc phục sự cố đồng bộ hóa cụ thể

Trang này nêu 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ộ hóa mã nguồn Android.

Các lệnh không thành công với lỗi 403 hoặc 500 (vấn đề về proxy)

Các lệnh đồng bộ hóa 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 proxy HTTP đang gặp khó khăn trong việc xử lý việc truyề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 việc sử dụng phiên bản Python mới nhất và sử dụng rõ ràng repo sync -j1 đôi khi có thể hữu ích.