added log of exception on failing
This commit is contained in:
parent
a4611b887a
commit
a341824dc6
|
@ -6,8 +6,10 @@ import javax.ws.rs.Produces;
|
||||||
import javax.ws.rs.QueryParam;
|
import javax.ws.rs.QueryParam;
|
||||||
import javax.ws.rs.core.MediaType;
|
import javax.ws.rs.core.MediaType;
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
|
import javax.ws.rs.core.Response.ResponseBuilder;
|
||||||
|
|
||||||
import org.eclipse.microprofile.health.HealthCheckResponse;
|
import org.eclipse.microprofile.health.HealthCheckResponse;
|
||||||
|
import org.eclipse.microprofile.health.HealthCheckResponse.State;
|
||||||
import org.gcube.application.geoportal.service.rest.health.GeoportalHealthCheck;
|
import org.gcube.application.geoportal.service.rest.health.GeoportalHealthCheck;
|
||||||
import org.gcube.application.geoportal.service.rest.health.HealthCheckResponseSerializer;
|
import org.gcube.application.geoportal.service.rest.health.HealthCheckResponseSerializer;
|
||||||
import org.gcube.application.geoportal.service.rest.health.MongoHealthCheck;
|
import org.gcube.application.geoportal.service.rest.health.MongoHealthCheck;
|
||||||
|
@ -47,7 +49,7 @@ public class GeoportalHealth {
|
||||||
public Response databaseCheck(@QueryParam("context") String context) throws JsonProcessingException {
|
public Response databaseCheck(@QueryParam("context") String context) throws JsonProcessingException {
|
||||||
log.debug("databaseCheck called in the context {}", context);
|
log.debug("databaseCheck called in the context {}", context);
|
||||||
if (context == null) {
|
if (context == null) {
|
||||||
HealthCheckResponse response = HealthCheckResponse.named("databaseCheck")
|
HealthCheckResponse response = HealthCheckResponse.named(MongoHealthCheck.SERVICE_NAME)
|
||||||
.withData("context", "is required parameter (e.g. context=/gcube/devsec/devVRE)").down().build();
|
.withData("context", "is required parameter (e.g. context=/gcube/devsec/devVRE)").down().build();
|
||||||
String json = healthCheckSerializer(response);
|
String json = healthCheckSerializer(response);
|
||||||
log.info("databaseCheck error response is {}", json);
|
log.info("databaseCheck error response is {}", json);
|
||||||
|
@ -56,9 +58,13 @@ public class GeoportalHealth {
|
||||||
}
|
}
|
||||||
|
|
||||||
HealthCheckResponse response = new MongoHealthCheck(context).call();
|
HealthCheckResponse response = new MongoHealthCheck(context).call();
|
||||||
|
ResponseBuilder responseBuilder = Response.ok();
|
||||||
|
if (response.getState().equals(State.DOWN)) {
|
||||||
|
responseBuilder = responseBuilder.status(503);
|
||||||
|
}
|
||||||
String json = healthCheckSerializer(response);
|
String json = healthCheckSerializer(response);
|
||||||
log.info("databaseCheck response is {}", json);
|
log.info("databaseCheck response is {}", json);
|
||||||
return Response.ok().entity(json).build();
|
return responseBuilder.entity(json).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String healthCheckSerializer(HealthCheckResponse response) throws JsonProcessingException {
|
private String healthCheckSerializer(HealthCheckResponse response) throws JsonProcessingException {
|
||||||
|
|
|
@ -20,7 +20,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||||
public class MongoHealthCheck implements HealthCheck {
|
public class MongoHealthCheck implements HealthCheck {
|
||||||
|
|
||||||
private String context;
|
private String context;
|
||||||
private static final String SERVICE_NAME = "mongo";
|
public static final String SERVICE_NAME = "mongo";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public HealthCheckResponse call() {
|
public HealthCheckResponse call() {
|
||||||
|
@ -40,7 +40,6 @@ public class MongoHealthCheck implements HealthCheck {
|
||||||
mongo = ImplementationProvider.get().getProvidedObjectByClass(Mongo.class);
|
mongo = ImplementationProvider.get().getProvidedObjectByClass(Mongo.class);
|
||||||
buildHCRBuilder = appendMongoInfo(buildHCRBuilder, mongo.getConnection());
|
buildHCRBuilder = appendMongoInfo(buildHCRBuilder, mongo.getConnection());
|
||||||
buildHCRBuilder.state(true);
|
buildHCRBuilder.state(true);
|
||||||
log.info("checkMongo is OK in the context: {}", context);
|
|
||||||
MongoIterable<String> collections = mongo.getTheClient().getDatabase(mongo.getConnection().getDatabase())
|
MongoIterable<String> collections = mongo.getTheClient().getDatabase(mongo.getConnection().getDatabase())
|
||||||
.listCollectionNames();
|
.listCollectionNames();
|
||||||
log.info("listCollectionNames is null: {}", collections == null);
|
log.info("listCollectionNames is null: {}", collections == null);
|
||||||
|
@ -50,9 +49,11 @@ public class MongoHealthCheck implements HealthCheck {
|
||||||
buildHCRBuilder.withData("collection_" + i, coll);
|
buildHCRBuilder.withData("collection_" + i, coll);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
log.info("checkMongo is OK in the context: {}", context);
|
||||||
return buildHCRBuilder.build();
|
return buildHCRBuilder.build();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.info("checkMongo is KO in the context: {}", context);
|
log.error("Error on checkMongo: ", e);
|
||||||
|
log.warn("checkMongo is KO in the context: {}", context);
|
||||||
buildHCRBuilder.state(false);
|
buildHCRBuilder.state(false);
|
||||||
if (mongo != null) {
|
if (mongo != null) {
|
||||||
MongoConnection connection = null;
|
MongoConnection connection = null;
|
||||||
|
|
Loading…
Reference in New Issue