Uploaded image for project: 'Project Quay'
  1. Project Quay
  2. PROJQUAY-5256

Storage replication not triggered on manifest list mirror

XMLWordPrintable

    • 0

      When a manifest list is mirrored to Quay, individual images are not georeplicated across all geolocations, mirroring jobs are not executed. This is the situation before mirroring:

      quay=# select count(*) from imagestorageplacement where location_id = 9;
       count 
      -------
          25
      (1 row)
      
      quay=# select count(*) from imagestorageplacement where location_id = 10;
       count 
      -------
          25
      (1 row)
      
      quay=# select count(*) from imagestorageplacement where location_id = 11;
       count 
      -------
          25
      (1 row)
      

      After mirroring the latest tag from docker.io/postgres, we see that the number of layers in the primary storage increased, but secondary storage does not contain any of the mirrored layers:

      quay=# select count(*) from imagestorageplacement where location_id = 9;
       count 
      -------
          25
      (1 row)
      
      quay=# select count(*) from imagestorageplacement where location_id = 10;
       count 
      -------
         137
      (1 row)
      
      quay=# select count(*) from imagestorageplacement where location_id = 11;
       count 
      -------
          25
      (1 row)
      

      No mirroring jobs have been issued for this sync and storage ends in this status until the backfill replication worker is run manually. This does not happen when we copy individual images, for instance if I mirror quay.io/redhat/quay:v3.3.4 all layers are copied over immediately:

      quay=# select count(*) from imagestorageplacement where location_id = 9;
       count 
      -------
          44
      (1 row)
      
      quay=# select count(*) from imagestorageplacement where location_id = 10;
       count 
      -------
         156
      (1 row)
      
      quay=# select count(*) from imagestorageplacement where location_id = 11;
       count 
      -------
          44
      (1 row)
      

      We replicated the same behaviour on the client's machines, we executed a copy of the same image from Docker and then two individual tags from Quay, the two tags were replicated immediately. After executing the backfill script, we see that once again all storage engines are synced:

      quay=# select count(*) from imagestorageplacement where location_id = 9;
       count 
      -------
         156
      (1 row)
      
      quay=# select count(*) from imagestorageplacement where location_id = 10;
       count 
      -------
         156
      (1 row)
      
      quay=# select count(*) from imagestorageplacement where location_id = 11;
       count 
      -------
         156
      (1 row)
      

      Please check, thank you!

            rhn-support-ibazulic Ivan Bazulic
            rhn-support-ibazulic Ivan Bazulic
            Votes:
            2 Vote for this issue
            Watchers:
            10 Start watching this issue

              Created:
              Updated:
              Resolved: