Résoudre les problèmes de synchronisation

Cette page explique comment résoudre les problèmes liés à la commande repo sync.

Résoudre les problèmes de réseau

Cette section fournit plusieurs suggestions pour résoudre les problèmes de réseau des échecs de synchronisation.

Utiliser l'authentification pour éviter les obstacles au quota

Afin de protéger les serveurs contre une utilisation excessive, chaque adresse IP utilisée pour source d'accès est associée à un quota.

Lorsque vous partagez une adresse IP avec d'autres utilisateurs, par exemple pour accéder à la source. au-delà d'un pare-feu NAT, les quotas peuvent se déclencher modèles de ML. Par exemple, un quota peut se déclencher lorsque plusieurs utilisateurs synchronisent de nouveaux clients à partir de la même adresse IP, dans un court laps de temps.

Pour éviter de déclencher des quotas, vous pouvez utiliser l'accès authentifié, qui utilise un un quota distinct pour chaque utilisateur, quelle que soit l'adresse IP.

Pour activer l'accès authentifié:

  1. Créez un mot de passe à l'aide du générateur de mots de passe.

  2. Exécutez la commande suivante pour convertir votre client en mode automatique authentification (sans changer de branche):

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

    Notez que le préfixe de répertoire /a/ déclenche l'authentification automatique.

Configurer pour l'utilisation du proxy

Si vous téléchargez la source derrière un proxy, comme c'est souvent le cas d'entreprise, veillez à spécifier explicitement un proxy que Repo doit utiliser en exécutant les commandes suivantes:

$ 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

Ajuster les paramètres TCP/IP pour éviter les problèmes de connectivité

Bien que cela soit rare, les clients Linux peuvent rencontrer des problèmes de connectivité, tels que bloqué au milieu des téléchargements et recevant des objets. Pour améliorer pour résoudre ce problème, ajustez les paramètres de la pile TCP/IP ou utilisez des connexions externes. Vous devez disposer d'un accès root pour modifier le paramètre TCP. Pour modifier les , exécutez les commandes suivantes:

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

Utiliser un miroir local pour éviter la latence du réseau

Lorsque vous utilisez plusieurs clients, vous pouvez créer un miroir local de l'ensemble du serveur du contenu et des clients de synchronisation à partir de ce miroir, réseau. Suivez ces instructions pour créer une mise en miroir locale sur ~/aosp-mirror/ et synchronisez les clients avec ce miroir:

  1. Créez et synchronisez le miroir:

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

    Ces commandes créent un miroir local dans /user/local/aosp/mirror et initialiser le miroir à l'aide de l'indicateur --mirror avec repo init .

  2. Pour synchroniser des clients à partir du miroir:

    $ mkdir -p /usr/local/aosp/main
    $ cd /usr/local/aosp/main
    $ repo init -u /usr/local/aosp/mirror/platform/manifest.git
    $ repo sync
    
  3. Enfin, exécutez les commandes suivantes pour synchroniser le miroir avec le serveur et le client avec le miroir:

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

Il est possible de stocker le miroir sur un serveur LAN et d'y accéder via NFS, SSH ou Git. Il est également possible de le stocker sur un lecteur amovible et de transmettre qui se déplacent entre les utilisateurs ou les machines.

Utiliser un clone partiel

Si vous utilisez Git 2.19 ou une version ultérieure, spécifiez --partial-clone lorsque en exécutant repo init pour résoudre les problèmes de réseau à faible latence:

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

Au lieu d'initialiser Repo pour tout télécharger, cette commande télécharge Git objets en fonction de leurs besoins.

Résoudre des problèmes de synchronisation spécifiques

Cette page détaille certains problèmes connus que vous pouvez rencontrer lors de la tentative de synchronisation du Code source Android.

Échec des commandes avec une erreur 403 ou 500 (problèmes de proxy)

Les commandes repo init ou repo sync peuvent échouer et renvoyer un code d'erreur 403 ou 500 . Le plus souvent, ces erreurs sont liées à des proxys HTTP qui ont du mal à pour traiter les transferts de données volumineux.

Bien qu'il n'existe pas de correction spécifique à ces erreurs, les versions les plus récentes de Python et l'utilisation explicite de repo sync -j1 peut parfois aider.