in PetAdoptions/cdk/pet_stack/resources/microservices/petsearch-java/src/main/java/ca/petsearch/controllers/SearchController.java [131:160]
public List<Pet> search(
@RequestParam(name = "pettype", defaultValue = "", required = false) String petType,
@RequestParam(name = "petcolor", defaultValue = "", required = false) String petColor,
@RequestParam(name = "petid", defaultValue = "", required = false) String petId
) throws InterruptedException {
Span span = tracer.spanBuilder("Scanning DynamoDB Table").startSpan();
// This line is intentional. Delays searches
if (petType != null && !petType.trim().isEmpty() && petType.equals("bunny")) {
logger.debug("Delaying the response on purpose, to show on traces as an issue");
TimeUnit.MILLISECONDS.sleep(3000);
}
try(Scope scope = span.makeCurrent()) {
List<Pet> result = ddbClient.scan(
buildScanRequest(petType, petColor, petId))
.getItems().stream().map(this::mapToPet)
.collect(Collectors.toList());
metricEmitter.emitPetsReturnedMetric(result.size());
return result;
} catch (Exception e) {
span.recordException(e);
logger.error("Error while searching, building the resulting body", e);
throw e;
} finally {
span.end();
}
}