XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 1.9.8
    • Resolver
    • None

    Description

      The locking that is present in Resolver since 1.8.0 is too eager:

      • there are no shared locks used at all
      • this implies that local repository access is heavily serialized by locking
      • there is no "upgrade" of locking due that above
      • consequence is that "hot" artifacts in bigger multi module build run in parallel become bottleneck as all threads will wait for their moment to grab exclusive lock.
      • another consequence: our "wait time" (def 30s) becomes problem, as due that above, if build grows, the plausible "wait time" (as all lock is exclusive, but requester count grows) grows as well. Also, this means we have threads there doing nothing, just sitting as they wait for exclusive lock one after another.

      We can do it better: there are 4 main areas where locking is used:

      • ArtifactInstaller: it is about to install (write) artifact files to local repository, it needs exclusive lock, no change needed.
      • ArtifactDeployer: it is about to upload present files to remote, it does not modifies anything on local. Change its lock to shared. The exclusive lock also meant that if no DeployAtEnd used, other modules during resolution had to wait while this module uploaded.
      • ArtifactResolver and MetadataResolver: two very similar beasts, they attempt to resolve locally (from local repo) w/o any content modification (read only), and if not successful, they will reach remote to download what is needed (write). Here we could do something similar to DCL is: try with shared lock first, and if local content is not fulfilling, release shared, acquire exclusive and REDO all (as meanwhile someone else may downloaded files already).

      Attachments

        Issue Links

          Activity

            People

              cstamas Tamas Cservenak
              cstamas Tamas Cservenak
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: