private void manageProfile(TaskContext context) {
    Container current = fabricService.get().getCurrentContainer();
    ProfileData profileData = createProfileData(context);
    String profileId = context.getConfiguration().get(TEMPLATE_PROFILE_PROPERTY_NAME) + "-" + name;
    Version version = current.getVersion();

    try {
      if (lock.acquire(60, TimeUnit.SECONDS)) {
        if (profileData.isEmpty()) {
          if (version.hasProfile(profileId)) {
            // Just delete the profile
            version.getProfile(profileId).delete(true);
          }
          return;
        } else if (!version.hasProfile(profileId)) {
          // Create the profile
          fabricService.get().getDataStore().createProfile(version.getId(), profileId);
        }

        Profile managedProfile = version.getProfile(profileId);
        // managedProfile.setConfigurations(profileData.getConfigs());
        managedProfile.setFileConfigurations(profileData.getFiles());
        current.addProfiles(managedProfile);
      } else {
        throw new TimeoutException("Timed out waiting for lock");
      }
    } catch (Exception e) {
      LOGGER.error("Error managing work items.", e);
    } finally {
      releaseLock();
    }
  }