public boolean removeLeadershipFor()

in iep-spring-leader-dynamodb/src/main/java/com/netflix/iep/leader/dynamodb/DynamoDbLeaderDatabase.java [291:324]


  public boolean removeLeadershipFor(ResourceId resourceId) {
    boolean removed;
    try {
      final Map<String, AttributeValue> resourceRecordKey = Collections.singletonMap(
          hashKeyName, AttributeValue.builder().s(resourceId.getId()).build()
      );

      final Map<String, AttributeValue> expressionAttributeValues = new HashMap<>(2, 1.0f);
      expressionAttributeValues.put(LEADER_ID_PLACEHOLDER,
          AttributeValue.builder().s(leaderId.getId()).build()
      );
      expressionAttributeValues.put(NO_LEADER_PLACEHOLDER,
          AttributeValue.builder().s(LeaderId.NO_LEADER.getId()).build()
      );

      final UpdateItemRequest updateRequest = UpdateItemRequest.builder()
          .tableName(tableName)
          .key(resourceRecordKey)
          .updateExpression(removeLeadershipExpression)
          .conditionExpression(removeLeadershipConditionExpression)
          .expressionAttributeValues(expressionAttributeValues)
          .build();

      removed = db.updateItem(updateRequest).sdkHttpResponse().isSuccessful();
    } catch (ConditionalCheckFailedException e) {
      logger.debug(
          "Didn't remove leader attribute for {}; this {} is not its leader.",
          resourceId,
          leaderId.getId());
      removed = false;
    }

    return removed;
  }