diff --git a/metadata.sh b/metadata.sh index aa04820c1e..a022c6ae5e 100755 --- a/metadata.sh +++ b/metadata.sh @@ -1,3 +1,3 @@ #!/bin/sh # return version -echo '{"name":"learner_service","version":"1.5.0","org":"sunbird","hubuser":"purplesunbird"}' +echo '{"name":"learner_service","version":"1.5.1","org":"sunbird","hubuser":"purplesunbird"}' diff --git a/service/app/controllers/BaseController.java b/service/app/controllers/BaseController.java index 7bb525ad8d..ce35b375e5 100644 --- a/service/app/controllers/BaseController.java +++ b/service/app/controllers/BaseController.java @@ -265,7 +265,10 @@ public Result createCommonResponse(Object response, String key, Request request) params.put(JsonKey.LOG_TYPE, JsonKey.API_ACCESS); params.put(JsonKey.MESSAGE, ""); params.put(JsonKey.METHOD, request.method()); - params.put(JsonKey.END_TIME, System.currentTimeMillis()); + // calculate the total time consume + long startTime = (Long) params.get(JsonKey.START_TIME); + params.put(JsonKey.DURATION , calculateApiTimeTaken(startTime)); + removeFields(params , JsonKey.START_TIME); params.put(JsonKey.STATUS, String.valueOf(((Response) response).getResponseCode().getResponseCode())); params.put(JsonKey.LOG_LEVEL, JsonKey.INFO); req.setRequest(generateTelemetryRequestForController(TelemetryEvents.LOG.getName(), params, @@ -294,6 +297,12 @@ public Result createCommonResponse(Object response, String key, Request request) */ } + private void removeFields(Map params, String... properties) { + for(String property: properties){ + params.remove(property); + } + } + private String generateStackTrace(StackTraceElement[] elements) { StringBuilder builder = new StringBuilder(""); for (StackTraceElement element : elements) { @@ -344,8 +353,10 @@ public Result createCommonExceptionResponse(Exception e, Request request) { params.put(JsonKey.LOG_TYPE, JsonKey.API_ACCESS); params.put(JsonKey.MESSAGE, ""); params.put(JsonKey.METHOD, request.method()); - long endTime = System.currentTimeMillis(); - params.put(JsonKey.END_TIME, endTime); + // calculate the total time consume + long startTime = (Long) params.get(JsonKey.START_TIME); + params.put(JsonKey.DURATION , calculateApiTimeTaken(startTime)); + removeFields(params , JsonKey.START_TIME); params.put(JsonKey.STATUS, String.valueOf(exception.getResponseCode())); params.put(JsonKey.LOG_LEVEL, "error"); params.put(JsonKey.STACKTRACE, generateStackTrace(exception.getStackTrace())); @@ -358,6 +369,15 @@ public Result createCommonExceptionResponse(Exception e, Request request) { Json.toJson(BaseController.createResponseOnException(req, exception))); } + private long calculateApiTimeTaken(Long startTime) { + + Long timeConsumed=null; + if(null != startTime ){ + timeConsumed= System.currentTimeMillis() - startTime; + } + return timeConsumed; + } + /** * This method will make a call to Akka actor and return promise. *