Skip to content
This repository has been archived by the owner on Aug 13, 2020. It is now read-only.

Commit

Permalink
Merge pull request #798 from CJSCommonPlatform/add-event-name-to-erro…
Browse files Browse the repository at this point in the history
…r-log

Add event_name to error_log table
  • Loading branch information
mapingo committed Dec 17, 2019
2 parents 53182da + cbeeee6 commit 7bff5de
Show file tree
Hide file tree
Showing 7 changed files with 46 additions and 24 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on [Keep a CHANGELOG](http://keepachangelog.com/). This project adheres to

## [Unreleased]

## [6.5.0-M3] - 2019-12-16
## [6.5.0-M4] - 2019-12-17
- Update framework-api to 4.2.1
- Add table in system database 'event_error_log' for storing errors with events that failed to process
- New SystemErrorService for reporting system errors
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,14 @@ public void reportError(

final Metadata metadata = jsonEnvelope.metadata();
final UUID eventId = metadata.id();
final String eventName = metadata.name();
final Optional<Long> eventNumber = metadata.eventNumber();

final EventError eventError = new EventError(
messageId,
componentName,
eventId,
eventName,
eventNumber.orElse(MISSING_EVENT_NUMBER),
metadata.asJsonObject().toString(),
jsonEnvelope.payload().toString(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ public void shouldCreateEventErrorAndPersist() throws Exception {

final String messageId = "message id";
final String componentName = "EVENT_LISTENER";
final String eventName = "context.events.an.event";
final String errorMessage = "Help help we're all going to die";
final Throwable exception = new NullPointerException(errorMessage);
final Long eventNumber = 239874L;
Expand All @@ -72,6 +73,7 @@ public void shouldCreateEventErrorAndPersist() throws Exception {

when(jsonEnvelope.metadata()).thenReturn(metadata);
when(metadata.id()).thenReturn(eventId);
when(metadata.name()).thenReturn(eventName);
when(metadata.eventNumber()).thenReturn(of(eventNumber));

when(metadata.asJsonObject()).thenReturn(metadataJsonObject);
Expand All @@ -96,11 +98,12 @@ public void shouldCreateEventErrorAndPersist() throws Exception {

assertThat(eventError.getMessageId(), is(messageId));
assertThat(eventError.getComponent(), is(componentName));
assertThat(eventError.getErrorMessage(), is(errorMessage));
assertThat(eventError.getEventNumber(), is(eventNumber));
assertThat(eventError.getEventId(), is(eventId));
assertThat(eventError.getEventName(), is(eventName));
assertThat(eventError.getEventNumber(), is(eventNumber));
assertThat(eventError.getMetadata(), is(metadataJson));
assertThat(eventError.getPayload(), is(payloadJson));
assertThat(eventError.getErrorMessage(), is(errorMessage));
assertThat(eventError.getStacktrace(), is(stackTrace));
assertThat(eventError.getErroredAt(), is(erroredAt));
assertThat(eventError.getComments(), is(AN_EMPTY_STRING));
Expand All @@ -111,6 +114,7 @@ public void shouldHandleMissingEventNumber() throws Exception {

final String messageId = "message id";
final String componentName = "EVENT_LISTENER";
final String eventName = "context.events.an.event";
final String errorMessage = "Help help we're all going to die";
final Throwable exception = new NullPointerException(errorMessage);
final UUID eventId = randomUUID();
Expand All @@ -126,6 +130,7 @@ public void shouldHandleMissingEventNumber() throws Exception {

when(jsonEnvelope.metadata()).thenReturn(metadata);
when(metadata.id()).thenReturn(eventId);
when(metadata.name()).thenReturn(eventName);
when(metadata.eventNumber()).thenReturn(empty());

when(metadata.asJsonObject()).thenReturn(metadataJsonObject);
Expand All @@ -150,6 +155,7 @@ public void shouldHandleMissingEventNumber() throws Exception {

assertThat(eventError.getMessageId(), is(messageId));
assertThat(eventError.getComponent(), is(componentName));
assertThat(eventError.getEventName(), is(eventName));
assertThat(eventError.getErrorMessage(), is(errorMessage));
assertThat(eventError.getEventNumber(), is(-1L));
assertThat(eventError.getEventId(), is(eventId));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@
<column name="event_id" type="uuid">
<constraints nullable="false"/>
</column>
<column name="event_name" type="TEXT">
<constraints nullable="false"/>
</column>
<column name="event_number" type="BIGINT">
<constraints nullable="false"/>
</column>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ public class EventError {
private final String messageId;
private final String component;
private final UUID eventId;
private final String eventName;
private final Long eventNumber;
private final String metadata;
private final String payload;
Expand All @@ -21,6 +22,7 @@ public EventError(
final String messageId,
final String component,
final UUID eventId,
final String eventName,
final Long eventNumber,
final String metadata,
final String payload,
Expand All @@ -31,6 +33,7 @@ public EventError(
this.messageId = messageId;
this.component = component;
this.eventId = eventId;
this.eventName = eventName;
this.eventNumber = eventNumber;
this.metadata = metadata;
this.payload = payload;
Expand All @@ -52,6 +55,10 @@ public UUID getEventId() {
return eventId;
}

public String getEventName() {
return eventName;
}

public Long getEventNumber() {
return eventNumber;
}
Expand Down Expand Up @@ -88,18 +95,18 @@ public boolean equals(final Object o) {
return Objects.equals(messageId, that.messageId) &&
Objects.equals(component, that.component) &&
Objects.equals(eventId, that.eventId) &&
Objects.equals(eventName, that.eventName) &&
Objects.equals(eventNumber, that.eventNumber) &&
Objects.equals(metadata, that.metadata) &&
Objects.equals(payload, that.payload) &&
Objects.equals(errorMessage, that.errorMessage) &&
Objects.equals(stacktrace, that.stacktrace) &&
Objects.equals(erroredAt, that.erroredAt) &&
Objects.equals(comments, that.comments);
}

@Override
public int hashCode() {
return Objects.hash(messageId, component, eventId, eventNumber, metadata, payload, errorMessage, stacktrace, erroredAt, comments);
return Objects.hash(messageId, component, eventId, eventName, eventNumber, metadata, payload, errorMessage, stacktrace, erroredAt, comments);
}

@Override
Expand All @@ -108,11 +115,11 @@ public String toString() {
"messageId='" + messageId + '\'' +
", component='" + component + '\'' +
", eventId=" + eventId +
", eventName='" + eventName + '\'' +
", eventNumber=" + eventNumber +
", metadata='" + metadata + '\'' +
", payload='" + payload + '\'' +
", errorMessage='" + errorMessage + '\'' +
", stacktrace='" + stacktrace + '\'' +
", erroredAt=" + erroredAt +
", comments='" + comments + '\'' +
'}';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,13 @@
public class EventErrorLogRepository {

private static final String INSERT_EVENT_ERROR_LOG_SQL = "INSERT INTO event_error_log " +
"(event_id, event_number, component, message_id, metadata, payload, error_message, stacktrace, errored_at, comments) " +
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
"(message_id, component, event_name, event_id, event_number, " +
"metadata, payload, error_message, stacktrace, errored_at, comments) " +
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

private static final String FIND_ALL_EVENT_ERROR_LOG_SQL = "SELECT " +
"event_id, event_number, component, message_id, metadata, payload, error_message, stacktrace, errored_at, comments " +
"message_id, component, event_name, event_id, event_number, " +
"metadata, payload, error_message, stacktrace, errored_at, comments " +
"FROM event_error_log";

private static final String TRUNCATE_EVENT_ERROR_LOG_SQL = "TRUNCATE event_error_log CASCADE";
Expand All @@ -43,16 +45,17 @@ public void save(final EventError eventError) {
try (final Connection connection = dataSource.getConnection();
final PreparedStatement preparedStatement = connection.prepareStatement(INSERT_EVENT_ERROR_LOG_SQL)) {

preparedStatement.setObject(1, eventError.getEventId());
preparedStatement.setLong(2, eventError.getEventNumber());
preparedStatement.setString(3, eventError.getComponent());
preparedStatement.setString(4, eventError.getMessageId());
preparedStatement.setString(5, eventError.getMetadata());
preparedStatement.setString(6, eventError.getPayload());
preparedStatement.setString(7, eventError.getErrorMessage());
preparedStatement.setString(8, eventError.getStacktrace());
preparedStatement.setTimestamp(9, toSqlTimestamp(eventError.getErroredAt()));
preparedStatement.setString(10, eventError.getComments());
preparedStatement.setString(1, eventError.getMessageId());
preparedStatement.setString(2, eventError.getComponent());
preparedStatement.setString(3, eventError.getEventName());
preparedStatement.setObject(4, eventError.getEventId());
preparedStatement.setLong(5, eventError.getEventNumber());
preparedStatement.setString(6, eventError.getMetadata());
preparedStatement.setString(7, eventError.getPayload());
preparedStatement.setString(8, eventError.getErrorMessage());
preparedStatement.setString(9, eventError.getStacktrace());
preparedStatement.setTimestamp(10, toSqlTimestamp(eventError.getErroredAt()));
preparedStatement.setString(11, eventError.getComments());
preparedStatement.executeUpdate();
} catch (final SQLException e) {
throw new SystemPersistenceException("Failed to insert into event_error_log", e);
Expand All @@ -69,10 +72,11 @@ public List<EventError> findAll() {
final ResultSet resultSet = preparedStatement.executeQuery()) {

while (resultSet.next()) {
final String messageId = resultSet.getString("message_id");
final String component = resultSet.getString("component");
final String eventName = resultSet.getString("event_name");
final UUID eventId = (UUID) resultSet.getObject("event_id");
final long eventNumber = resultSet.getLong("event_number");
final String component = resultSet.getString("component");
final String messageId = resultSet.getString("message_id");
final String metadata = resultSet.getString("metadata");
final String payload = resultSet.getString("payload");
final String errorMessage = resultSet.getString("error_message");
Expand All @@ -84,6 +88,7 @@ public List<EventError> findAll() {
messageId,
component,
eventId,
eventName,
eventNumber,
metadata,
payload,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package uk.gov.justice.services.system.persistence;

import static java.util.Optional.empty;
import static java.util.Optional.of;
import static java.util.UUID.randomUUID;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
Expand All @@ -14,7 +12,6 @@

import java.time.ZonedDateTime;
import java.util.List;
import java.util.Optional;

import javax.sql.DataSource;

Expand Down Expand Up @@ -48,6 +45,7 @@ public void shouldStoreEventErrorLog() throws Exception {
"messageId_1",
"component_1",
randomUUID(),
"eventName_1",
1L,
"metadata_1",
"payload_1",
Expand All @@ -60,6 +58,7 @@ public void shouldStoreEventErrorLog() throws Exception {
"messageId_2",
"component_2",
randomUUID(),
"eventName_2",
2L,
"metadata_2",
"payload_2",
Expand Down

0 comments on commit 7bff5de

Please sign in to comment.