@@ -208,8 +208,8 @@ public static void updateCachedResultsForFiles(
208208 updateInProgress = false ;
209209
210210 } finally {
211- //if (filesToProceed != null && !filesToProceed.isEmpty())
212- info ("MUTEX RELEASED" );
211+ // if (filesToProceed != null && !filesToProceed.isEmpty())
212+ info ("MUTEX RELEASED" );
213213 MUTEX .unlock ();
214214 }
215215 }
@@ -290,21 +290,57 @@ private static Map<PsiFile, List<SuggestionForFile>> retrieveSuggestions(
290290 if (isNotSucceed (project , createBundleResponse , "Bad Create/Extend Bundle request: " ))
291291 return EMPTY_MAP ;
292292 final String bundleId = createBundleResponse .getBundleId ();
293- final List <String > missingFiles = createBundleResponse .getMissingFiles ();
293+ List <String > missingFiles = createBundleResponse .getMissingFiles ();
294294 info (
295295 "--- Create/Extend Bundle took: "
296296 + (System .currentTimeMillis () - startTime )
297297 + " milliseconds"
298- + "\n bundleId: " + bundleId
299- + "\n missingFiles: " + missingFiles .size ());
298+ + "\n bundleId: "
299+ + bundleId
300+ + "\n missingFiles: "
301+ + missingFiles .size ());
300302
301303 // ---------------------------------------- Upload Files
302304 startTime = System .currentTimeMillis ();
303305 progress .setText (UPLOADING_FILES_TEXT );
304306 ProgressManager .checkCanceled ();
305307
306- fileCounter = 0 ;
307- totalFiles = missingFiles .size ();
308+ for (int counter = 0 ; counter < 10 ; counter ++) {
309+ uploadFiles (project , psiFiles , missingFiles , bundleId , progress );
310+ missingFiles = checkBundle (project , bundleId , progress );
311+ if (missingFiles .isEmpty ()) {
312+ break ;
313+ } else {
314+ warn (
315+ "Check Bundle found some missingFiles to be NOT uploaded, will try to upload "
316+ + (10 - counter )
317+ + " more times:\n missingFiles = "
318+ + missingFiles );
319+ }
320+ }
321+ // mapPsiFile2Hash.clear();
322+ mapPsiFile2Content .clear ();
323+ info ("--- Upload Files took: " + (System .currentTimeMillis () - startTime ) + " milliseconds" );
324+
325+ // ---------------------------------------- Get Analysis
326+ startTime = System .currentTimeMillis ();
327+ progress .setText (WAITING_FOR_ANALYSIS_TEXT );
328+ ProgressManager .checkCanceled ();
329+ GetAnalysisResponse getAnalysisResponse = doRetrieveSuggestions (project , bundleId , progress );
330+ result = parseGetAnalysisResponse (project , psiFiles , getAnalysisResponse , progress );
331+ info ("--- Get Analysis took: " + (System .currentTimeMillis () - startTime ) + " milliseconds" );
332+ // progress.stop();
333+ return result ;
334+ }
335+
336+ private static void uploadFiles (
337+ @ NotNull Project project ,
338+ @ NotNull Collection <PsiFile > psiFiles ,
339+ @ NotNull List <String > missingFiles ,
340+ @ NotNull String bundleId ,
341+ @ NotNull ProgressIndicator progress ) {
342+ int fileCounter = 0 ;
343+ int totalFiles = missingFiles .size ();
308344 long fileChunkSize = 0 ;
309345 int brokenMissingFilesCount = 0 ;
310346 String brokenMissingFilesMessage = "" ;
@@ -337,7 +373,7 @@ private static Map<PsiFile, List<SuggestionForFile>> retrieveSuggestions(
337373 final long fileSize = psiFile .getVirtualFile ().getLength ();
338374 if (fileChunkSize + fileSize > MAX_BUNDLE_SIZE ) {
339375 info ("Files-chunk size: " + fileChunkSize );
340- uploadFiles (project , filesChunk , bundleId , progress );
376+ doUploadFiles (project , filesChunk , bundleId , progress );
341377 fileChunkSize = 0 ;
342378 filesChunk .clear ();
343379 }
@@ -346,21 +382,18 @@ private static Map<PsiFile, List<SuggestionForFile>> retrieveSuggestions(
346382 }
347383 if (brokenMissingFilesCount > 0 ) warn (brokenMissingFilesCount + brokenMissingFilesMessage );
348384 info ("Last files-chunk size: " + fileChunkSize );
349- uploadFiles (project , filesChunk , bundleId , progress );
350-
351- // mapPsiFile2Hash.clear();
352- mapPsiFile2Content .clear ();
353- info ("--- Upload Files took: " + (System .currentTimeMillis () - startTime ) + " milliseconds" );
385+ doUploadFiles (project , filesChunk , bundleId , progress );
386+ }
354387
355- // ---------------------------------------- Get Analysis
356- startTime = System . currentTimeMillis ();
357- progress . setText ( WAITING_FOR_ANALYSIS_TEXT );
358- ProgressManager . checkCanceled ();
359- GetAnalysisResponse getAnalysisResponse = doRetrieveSuggestions ( project , bundleId , progress );
360- result = parseGetAnalysisResponse ( project , psiFiles , getAnalysisResponse , progress );
361- info ( "--- Get Analysis took: " + ( System . currentTimeMillis () - startTime ) + " milliseconds" );
362- // progress.stop();
363- return result ;
388+ @ NotNull
389+ private static List < String > checkBundle (
390+ @ NotNull Project project , @ NotNull String bundleId , @ NotNull ProgressIndicator progress ) {
391+ CreateBundleResponse checkBundleResponse =
392+ DeepCodeRestApi . checkBundle ( DeepCodeParams . getSessionToken () , bundleId );
393+ if ( isNotSucceed ( project , checkBundleResponse , "Bad CheckBundle request: " )) {
394+ return Collections . emptyList ( );
395+ }
396+ return checkBundleResponse . getMissingFiles () ;
364397 }
365398
366399 private static CreateBundleResponse makeNewBundle (
@@ -481,7 +514,7 @@ private static String doGetFileContent(@NotNull PsiFile psiFile) {
481514 */
482515 }
483516
484- private static void uploadFiles (
517+ private static void doUploadFiles (
485518 @ NotNull Project project ,
486519 @ NotNull Collection <PsiFile > psiFiles ,
487520 @ NotNull String bundleId ,
0 commit comments