code: @Override
    public synchronized Map<String, LocalResource> call() throws IOException {
      final Map<String, LocalResource> globalResources = new HashMap<>(1);
      if (!this.isUploaded){
        this.pathToGlobalJar = this.uploader.uploadToJobFolder(makeGlobalJar());
        this.isUploaded = true;
      }
  
      final LocalResource updatedGlobalJarResource = this.uploader.makeLocalResourceForJarFile(this.pathToGlobalJar);
  
      if (this.globalJarResource != null
          && this.globalJarResource.getTimestamp() != updatedGlobalJarResource.getTimestamp()) {
        LOG.log(Level.WARNING,
                "The global JAR LocalResource timestamp has been changed from "
                + this.globalJarResource.getTimestamp() + " to " + updatedGlobalJarResource.getTimestamp());
      }
  
      this.globalJarResource = updatedGlobalJarResource;
  
      // For now, always rewrite the information due to REEF-348
      globalResources.put(this.fileNames.getGlobalFolderPath(), updatedGlobalJarResource);
  
      return globalResources;
    }
docs: Creates the JAR file with the global files on the driver and then uploads it to the job folder on
  (H)DFS.
  
  @return the map to be used as the "global" resources when submitting Evaluators.
  @throws IOException if the creation of the JAR or the upload fails