in iep-spring-leader-dynamodb/src/main/java/com/netflix/iep/leader/dynamodb/DynamoDbLeaderDatabase.java [214:243]
public LeaderId getLeaderFor(ResourceId resourceId) {
final String resourceIdStr = resourceId.getId();
final Map<String, AttributeValue> resourceRecordKey = Collections.singletonMap(
hashKeyName, AttributeValue.builder().s(resourceIdStr).build()
);
final GetItemRequest request =
GetItemRequest
.builder()
.tableName(tableName)
.key(resourceRecordKey)
.projectionExpression(leaderIdAttributeName)
.consistentRead(true)
.build();
LeaderId leader = LeaderId.NO_LEADER;
try {
final Map<String, AttributeValue> itemMap = db.getItem(request).item();
if (itemMap != null) {
final AttributeValue leaderIdAttrVal = itemMap.get(leaderIdAttributeName);
if (leaderIdAttrVal != null) {
leader = LeaderId.create(leaderIdAttrVal.s());
}
}
} catch (ResourceNotFoundException e) {
logger.warn("No current record for resource " + resourceIdStr, e);
}
return leader;
}