Return error details for unhandled ConstraintViolationException; log tenant and user ids on failure
This commit is contained in:
parent
31e1d082f2
commit
3e50963005
@ -22,6 +22,7 @@ import jakarta.servlet.http.HttpServletResponse;
|
|||||||
import jakarta.validation.ConstraintViolation;
|
import jakarta.validation.ConstraintViolation;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import org.apache.commons.lang3.exception.ExceptionUtils;
|
import org.apache.commons.lang3.exception.ExceptionUtils;
|
||||||
|
import org.hibernate.exception.ConstraintViolationException;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
@ -358,30 +359,34 @@ public abstract class BaseController {
|
|||||||
|
|
||||||
private ThingsboardException handleException(Exception exception, boolean logException) {
|
private ThingsboardException handleException(Exception exception, boolean logException) {
|
||||||
if (logException && logControllerErrorStackTrace) {
|
if (logException && logControllerErrorStackTrace) {
|
||||||
log.error("Error [{}]", exception.getMessage(), exception);
|
try {
|
||||||
}
|
SecurityUser user = getCurrentUser();
|
||||||
|
log.error("[{}][{}] Error", user.getTenantId(), user.getId(), exception);
|
||||||
String cause = "";
|
} catch (Exception e) {
|
||||||
if (exception.getCause() != null) {
|
log.error("Error", exception);
|
||||||
cause = exception.getCause().getClass().getCanonicalName();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Throwable cause = exception.getCause();
|
||||||
if (exception instanceof ThingsboardException) {
|
if (exception instanceof ThingsboardException) {
|
||||||
return (ThingsboardException) exception;
|
return (ThingsboardException) exception;
|
||||||
} else if (exception instanceof IllegalArgumentException || exception instanceof IncorrectParameterException
|
} else if (exception instanceof IllegalArgumentException || exception instanceof IncorrectParameterException
|
||||||
|| exception instanceof DataValidationException || cause.contains("IncorrectParameterException")) {
|
|| exception instanceof DataValidationException || cause instanceof IncorrectParameterException) {
|
||||||
return new ThingsboardException(exception.getMessage(), ThingsboardErrorCode.BAD_REQUEST_PARAMS);
|
return new ThingsboardException(exception.getMessage(), ThingsboardErrorCode.BAD_REQUEST_PARAMS);
|
||||||
} else if (exception instanceof MessagingException) {
|
} else if (exception instanceof MessagingException) {
|
||||||
return new ThingsboardException("Unable to send mail: " + exception.getMessage(), ThingsboardErrorCode.GENERAL);
|
return new ThingsboardException("Unable to send mail: " + exception.getMessage(), ThingsboardErrorCode.GENERAL);
|
||||||
} else if (exception instanceof AsyncRequestTimeoutException) {
|
} else if (exception instanceof AsyncRequestTimeoutException) {
|
||||||
return new ThingsboardException("Request timeout", ThingsboardErrorCode.GENERAL);
|
return new ThingsboardException("Request timeout", ThingsboardErrorCode.GENERAL);
|
||||||
} else if (exception instanceof DataAccessException) {
|
} else if (exception instanceof DataAccessException) {
|
||||||
String errorType = exception.getClass().getSimpleName();
|
|
||||||
if (!logControllerErrorStackTrace) { // not to log the error twice
|
if (!logControllerErrorStackTrace) { // not to log the error twice
|
||||||
log.warn("Database error: {} - {}", errorType, ExceptionUtils.getRootCauseMessage(exception));
|
log.warn("Database error: {} - {}", exception.getClass().getSimpleName(), ExceptionUtils.getRootCauseMessage(exception));
|
||||||
}
|
}
|
||||||
|
if (cause instanceof ConstraintViolationException) {
|
||||||
|
return new ThingsboardException(ExceptionUtils.getRootCause(exception).getMessage(), ThingsboardErrorCode.BAD_REQUEST_PARAMS);
|
||||||
|
} else {
|
||||||
return new ThingsboardException("Database error", ThingsboardErrorCode.GENERAL);
|
return new ThingsboardException("Database error", ThingsboardErrorCode.GENERAL);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return new ThingsboardException(exception.getMessage(), exception, ThingsboardErrorCode.GENERAL);
|
return new ThingsboardException(exception.getMessage(), exception, ThingsboardErrorCode.GENERAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user