in Elastiflix/java-favorite-otel-manual/src/main/java/com/movieapi/ApiServlet.java [142:179]
public String getUserFavorites(String user_id) {
Span span = GlobalOpenTelemetry.getTracer(SERVICE_NAME).spanBuilder("Redis.Get").setSpanKind(SpanKind.CLIENT).startSpan();
String returnedFavorites = "";
Jedis jedis = r.getResource();
try (Scope scope = span.makeCurrent()) {
span.setAttribute("db.system", "redis");
span.setAttribute("db.connection_string", redisHost);
span.setAttribute("db.statement", "GET user_id" + user_id);
handleDelay();
logger.info("Getting favorites for user " + user_id);
List<String> favorites = new ArrayList<>(jedis.smembers(user_id));
JSONObject favorites_json = new JSONObject();
favorites_json.put("favorites", favorites);
logger.info("User " + user_id + " has favorites " + favorites);
logger.info("Delay time is " + delayTime);
logger.info("Sleep time is " + sleepTime);
logger.info("Toggle canary failure is " + toggleCanaryFailure);
returnedFavorites = favorites_json.toString();
} catch (Exception e) {
span.setStatus(StatusCode.ERROR, "Error while getting data from Redis");
span.recordException(e);
} finally {
jedis.close();
span.end();
}
// get currently active span
Span currentSpan = Span.current();
currentSpan.setStatus(StatusCode.OK);
return returnedFavorites;
}