public void store()

in server/src/jetbrains/buildServer/sharedResources/server/runtime/LocksStorageImpl.java [123:151]


  public void store(@NotNull final BuildPromotion buildPromotion,
                    @NotNull final Map<Lock, String> takenLocks) {
    if (!takenLocks.isEmpty()) {
      withLock(buildPromotionLock(buildPromotion), () -> {
        final Collection<String> serializedStrings = new ArrayList<>();
        final Map<String, Lock> locksToStore = new HashMap<>();
        takenLocks.forEach((lock, value) -> {
          serializedStrings.add(serializeTakenLock(lock, value));
          locksToStore.put(lock.getName(), Lock.createFrom(lock, value));
        });
        try {
          final File artifact = new File(buildPromotion.getArtifactsDirectory(), FILE_PATH);
          if (FileUtil.createParentDirs(artifact)) {
            FileUtil.writeFile(artifact, StringUtil.join(serializedStrings, "\n"), MY_ENCODING);
            withLock(myGlobalLock::writeLock, () -> {
              myLocksCache.put(buildPromotion, locksToStore);
              existsSet.add(buildPromotion.getId());
              return null;
            });
          } else {
            log.warn("Failed to create parent dirs for file with taken locks for build {" + buildPromotion + "}");
          }
        } catch (IOException e) {
          log.warn("Failed to store taken locks for build [" + buildPromotion + "]; Message is: " + e.getMessage());
        }
        return null;
      });
    }
  }