@@ -321,6 +321,9 @@ else if ( exception == null )
321321 session .getLocalRepositoryManager ().getPathForRemoteMetadata (
322322 metadata , request .getRepository (), request .getRequestContext () ) );
323323
324+ metadataDownloading (
325+ session , trace , result .getRequest ().getMetadata (), result .getRequest ().getRepository () );
326+
324327 ResolveTask task =
325328 new ResolveTask ( session , trace , result , installFile , checks , policy .getChecksumPolicy () );
326329 tasks .add ( task );
@@ -354,6 +357,19 @@ else if ( exception == null )
354357
355358 for ( ResolveTask task : tasks )
356359 {
360+ /*
361+ * NOTE: Touch after registration with local repo to ensure concurrent resolution is not
362+ * rejected with "already updated" via session data when actual update to local repo is
363+ * still pending.
364+ */
365+ for ( UpdateCheck <Metadata , MetadataTransferException > check : task .checks )
366+ {
367+ updateCheckManager .touchMetadata ( task .session , check .setException ( task .exception ) );
368+ }
369+
370+ metadataDownloaded ( session , task .trace , task .request .getMetadata (), task .request .getRepository (),
371+ task .metadataFile , task .exception );
372+
357373 task .result .setException ( task .exception );
358374 }
359375 }
@@ -513,7 +529,6 @@ private void shutdown( Executor executor )
513529 class ResolveTask
514530 implements Runnable
515531 {
516-
517532 final RepositorySystemSession session ;
518533
519534 final RequestTrace trace ;
@@ -548,8 +563,6 @@ public void run()
548563 Metadata metadata = request .getMetadata ();
549564 RemoteRepository requestRepository = request .getRepository ();
550565
551- metadataDownloading ( session , trace , metadata , requestRepository );
552-
553566 try
554567 {
555568 List <RemoteRepository > repositories = new ArrayList <>();
@@ -593,19 +606,6 @@ else if ( request.isDeleteLocalCopyIfMissing() && exception instanceof MetadataN
593606 {
594607 exception = new MetadataTransferException ( metadata , requestRepository , e );
595608 }
596-
597- /*
598- * NOTE: Touch after registration with local repo to ensure concurrent resolution is not rejected with
599- * "already updated" via session data when actual update to local repo is still pending.
600- */
601- for ( UpdateCheck <Metadata , MetadataTransferException > check : checks )
602- {
603- updateCheckManager .touchMetadata ( session , check .setException ( exception ) );
604- }
605-
606- metadataDownloaded ( session , trace , metadata , requestRepository , metadataFile , exception );
607609 }
608-
609610 }
610-
611611}
0 commit comments