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;
}