Uploaded image for project: 'Artifactory Binary Repository'
  1. Artifactory Binary Repository
  2. RTFACT-10351

Debian repos don't recalculate metadata upon replication



    • Type: Change Request
    • Status: Open
    • Priority: Normal
    • Resolution: Unresolved
    • Affects Version/s: 4.1.3, 4.3.2, 4.7.7, 4.8.0
    • Fix Version/s: None
    • Component/s: Debian, Replication
    • Labels:
    • Environment:

      CentOS Linux release 7.2.1511


      When .deb artifacts are replicated to a Debian repository, the destination repo doesn't calculate metadata. If metadata is replicated along with the artifact, the replicated metadata is kept at the destination. If metadata is not replicated, no metadata is generated. A debug message is logged on the destination: "Skipping debian calculation: Insufficient Properties {}."

      This behavior was reproduced with replications from an Artifactory 4.1.3 instance to a 4.3.2 instance, from 4.3.2 to 4.7.7, and from 4.8.0 to 4.8.0.

      To reproduce (replication from [src] -> [dest]):
      1. Create local Debian repositories on [src] and [dest] instances.
      2. Deploy any .deb ("A") in [src] Debian repository.
      3. Enable event replication from [src] Debian repository to [dest] Debian repository.
      4. Deploy another .deb ("B") in [src] Debian repository.
      5. Wait for metadata calculation to complete on [src].
      6. Package "B" and [src]'s metadata are replicated to [dest]. Metadata in [dest] will contain data for both packages "A" and "B" even though only "B" is in the repo. [dest] will never calculate its own metadata. It maintains the replicated metadata even though that data contains invalid information for the repo.

      7. Install plugin to block Debian metadata replication (code below).
      8. Deploy a 3rd .deb ("C") in [src] Debian repository.
      9. "C" is replicated, but metadata is blocked. No metadata is generated on [dest], so [dest]'s Debian repository now contains packages "B" and "C," but metadata for "A" and "B".

      10. Delete everything from both [src] and [dest] repositories. Metadata is rebuilt upon deletion. Refresh repos and delete that too, until both repositories are empty.
      11. Deploy any .deb ("A") to [src]
      12. "A" is replicated to [dest], but no metadata is ever generated, so [dest] now only contains the single .deb file.

      13. Empty the [dest] repository as in step 10.
      14. Create a generic repository on [src].
      15. Enable event replication from [src] generic repository to [dest] Debian repository.
      16. Deploy a .deb artifact to [src] generic repository.
      17. Since the generic repository has no metadata, only the .deb is pushed to [dest]. [dest] never generates metadata, giving the same result as in step 12.


          Issue Links



              mikem Mike Mitchell (Inactive)
              0 Vote for this issue
              1 Start watching this issue