From 2053a4427c507c46ef930cde027b29a3aed56349 Mon Sep 17 00:00:00 2001 From: amckenzie Date: Thu, 27 Jun 2019 11:49:56 +0100 Subject: [PATCH] Fix database draining problem --- CHANGELOG.md | 4 +++ .../events/IndexerCatchupCompletedEvent.java | 1 - ...rCatchupCompletedForSubscriptionEvent.java | 1 - .../EventIndexerCatchupByComponentRunner.java | 1 - .../EventIndexerCatchupProcessorBean.java | 3 -- .../commands/RebuildCommandHandler.java | 1 - .../process/PublishQueueInterrogator.java | 2 +- .../IndexerCatchupCommandHandlerTest.java | 2 -- ...ndexerCatchupBySubscriptionRunnerTest.java | 4 --- .../EventIndexerCatchupProcessorBeanTest.java | 2 -- .../EventIndexerCatchupProcessorTest.java | 2 -- .../IndexerCatchupDurationCalculatorTest.java | 2 -- .../observers/RebuildObserverTest.java | 4 +-- ...ishQueueDrainedShutteringObserverTest.java | 28 +++++++++---------- .../process/PublishQueueInterrogatorTest.java | 6 ++-- .../utils/persistence/DatabaseCleaner.java | 2 +- .../persistence/DatabaseCleanerTest.java | 6 ++-- 17 files changed, 27 insertions(+), 44 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e9dd1c37..f59d199e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ on [Keep a CHANGELOG](http://keepachangelog.com/). This project adheres to ## [Unreleased] +## [2.0.0-RC2] - 2019-06-27 +### Fixed +- fix of the pubish_queue draining problem + ## [2.0.0-RC1] - 2019-06-27 ### Added diff --git a/event-store-management/src/main/java/uk/gov/justice/services/eventstore/management/indexer/events/IndexerCatchupCompletedEvent.java b/event-store-management/src/main/java/uk/gov/justice/services/eventstore/management/indexer/events/IndexerCatchupCompletedEvent.java index 0aefe5d80..55fab10cb 100644 --- a/event-store-management/src/main/java/uk/gov/justice/services/eventstore/management/indexer/events/IndexerCatchupCompletedEvent.java +++ b/event-store-management/src/main/java/uk/gov/justice/services/eventstore/management/indexer/events/IndexerCatchupCompletedEvent.java @@ -1,6 +1,5 @@ package uk.gov.justice.services.eventstore.management.indexer.events; -import uk.gov.justice.services.eventstore.management.catchup.events.CatchupCompletedEvent; import uk.gov.justice.services.jmx.command.SystemCommand; import java.time.ZonedDateTime; diff --git a/event-store-management/src/main/java/uk/gov/justice/services/eventstore/management/indexer/events/IndexerCatchupCompletedForSubscriptionEvent.java b/event-store-management/src/main/java/uk/gov/justice/services/eventstore/management/indexer/events/IndexerCatchupCompletedForSubscriptionEvent.java index d792114d1..c94a6e655 100644 --- a/event-store-management/src/main/java/uk/gov/justice/services/eventstore/management/indexer/events/IndexerCatchupCompletedForSubscriptionEvent.java +++ b/event-store-management/src/main/java/uk/gov/justice/services/eventstore/management/indexer/events/IndexerCatchupCompletedForSubscriptionEvent.java @@ -1,6 +1,5 @@ package uk.gov.justice.services.eventstore.management.indexer.events; -import uk.gov.justice.services.eventstore.management.catchup.events.CatchupCompletedForSubscriptionEvent; import uk.gov.justice.services.jmx.command.SystemCommand; import java.time.ZonedDateTime; diff --git a/event-store-management/src/main/java/uk/gov/justice/services/eventstore/management/indexer/process/EventIndexerCatchupByComponentRunner.java b/event-store-management/src/main/java/uk/gov/justice/services/eventstore/management/indexer/process/EventIndexerCatchupByComponentRunner.java index 4f98423e6..71c41f847 100644 --- a/event-store-management/src/main/java/uk/gov/justice/services/eventstore/management/indexer/process/EventIndexerCatchupByComponentRunner.java +++ b/event-store-management/src/main/java/uk/gov/justice/services/eventstore/management/indexer/process/EventIndexerCatchupByComponentRunner.java @@ -2,7 +2,6 @@ import static java.lang.String.format; import static uk.gov.justice.services.core.annotation.Component.EVENT_INDEXER; -import static uk.gov.justice.services.core.annotation.Component.EVENT_LISTENER; import uk.gov.justice.services.eventstore.management.indexer.events.IndexerCatchupRequestedEvent; import uk.gov.justice.subscription.domain.subscriptiondescriptor.Subscription; diff --git a/event-store-management/src/main/java/uk/gov/justice/services/eventstore/management/indexer/process/EventIndexerCatchupProcessorBean.java b/event-store-management/src/main/java/uk/gov/justice/services/eventstore/management/indexer/process/EventIndexerCatchupProcessorBean.java index 4d8cb1746..96526a00f 100644 --- a/event-store-management/src/main/java/uk/gov/justice/services/eventstore/management/indexer/process/EventIndexerCatchupProcessorBean.java +++ b/event-store-management/src/main/java/uk/gov/justice/services/eventstore/management/indexer/process/EventIndexerCatchupProcessorBean.java @@ -2,9 +2,6 @@ import static javax.transaction.Transactional.TxType.NOT_SUPPORTED; -import uk.gov.justice.services.eventstore.management.catchup.process.CatchupContext; -import uk.gov.justice.subscription.domain.subscriptiondescriptor.Subscription; - import javax.ejb.Stateless; import javax.inject.Inject; import javax.transaction.Transactional; diff --git a/event-store-management/src/main/java/uk/gov/justice/services/eventstore/management/rebuild/commands/RebuildCommandHandler.java b/event-store-management/src/main/java/uk/gov/justice/services/eventstore/management/rebuild/commands/RebuildCommandHandler.java index dc45d8081..5ff864ee8 100644 --- a/event-store-management/src/main/java/uk/gov/justice/services/eventstore/management/rebuild/commands/RebuildCommandHandler.java +++ b/event-store-management/src/main/java/uk/gov/justice/services/eventstore/management/rebuild/commands/RebuildCommandHandler.java @@ -3,7 +3,6 @@ import static uk.gov.justice.services.eventstore.management.rebuild.commands.RebuildCommand.REBUILD; import uk.gov.justice.services.common.util.UtcClock; -import uk.gov.justice.services.eventstore.management.catchup.commands.CatchupCommand; import uk.gov.justice.services.eventstore.management.rebuild.events.RebuildCompleteEvent; import uk.gov.justice.services.eventstore.management.rebuild.events.RebuildRequestedEvent; import uk.gov.justice.services.jmx.command.HandlesSystemCommand; diff --git a/event-store-management/src/main/java/uk/gov/justice/services/eventstore/management/shuttering/process/PublishQueueInterrogator.java b/event-store-management/src/main/java/uk/gov/justice/services/eventstore/management/shuttering/process/PublishQueueInterrogator.java index 33d199a26..91cf6692a 100644 --- a/event-store-management/src/main/java/uk/gov/justice/services/eventstore/management/shuttering/process/PublishQueueInterrogator.java +++ b/event-store-management/src/main/java/uk/gov/justice/services/eventstore/management/shuttering/process/PublishQueueInterrogator.java @@ -27,6 +27,6 @@ public boolean pollUntilPublishQueueEmpty() { NUMBER_OF_POLLING_ITERATIONS, WAIT_TIME_BETWEEN_ITERATIONS_MILLIS); - return multiIteratingPoller.pollUntilTrue(() -> eventDeQueuer.getSizeOfQueue("published_event") == 0); + return multiIteratingPoller.pollUntilTrue(() -> eventDeQueuer.getSizeOfQueue("publish_queue") == 0); } } diff --git a/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/indexer/commands/IndexerCatchupCommandHandlerTest.java b/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/indexer/commands/IndexerCatchupCommandHandlerTest.java index 01dd48531..df6b5fe1d 100644 --- a/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/indexer/commands/IndexerCatchupCommandHandlerTest.java +++ b/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/indexer/commands/IndexerCatchupCommandHandlerTest.java @@ -2,12 +2,10 @@ import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; import uk.gov.justice.services.common.util.UtcClock; -import uk.gov.justice.services.eventstore.management.catchup.commands.CatchupCommand; import uk.gov.justice.services.eventstore.management.indexer.events.IndexerCatchupCompletedEvent; import uk.gov.justice.services.eventstore.management.indexer.events.IndexerCatchupRequestedEvent; import uk.gov.justice.services.jmx.command.SystemCommand; diff --git a/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/indexer/process/EventIndexerCatchupBySubscriptionRunnerTest.java b/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/indexer/process/EventIndexerCatchupBySubscriptionRunnerTest.java index 8a97a02b8..217cc4fd3 100644 --- a/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/indexer/process/EventIndexerCatchupBySubscriptionRunnerTest.java +++ b/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/indexer/process/EventIndexerCatchupBySubscriptionRunnerTest.java @@ -3,10 +3,6 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; -import uk.gov.justice.services.eventstore.management.catchup.process.CatchupContext; -import uk.gov.justice.services.eventstore.management.catchup.process.EventCatchupTask; -import uk.gov.justice.subscription.domain.subscriptiondescriptor.Subscription; - import javax.enterprise.concurrent.ManagedExecutorService; import org.junit.Test; diff --git a/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/indexer/process/EventIndexerCatchupProcessorBeanTest.java b/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/indexer/process/EventIndexerCatchupProcessorBeanTest.java index 94e890661..75b3bb005 100644 --- a/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/indexer/process/EventIndexerCatchupProcessorBeanTest.java +++ b/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/indexer/process/EventIndexerCatchupProcessorBeanTest.java @@ -4,8 +4,6 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import uk.gov.justice.services.eventstore.management.catchup.process.CatchupContext; -import uk.gov.justice.services.eventstore.management.indexer.process.EventIndexerCatchupProcessor; import uk.gov.justice.subscription.domain.subscriptiondescriptor.Subscription; import org.junit.Test; diff --git a/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/indexer/process/EventIndexerCatchupProcessorTest.java b/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/indexer/process/EventIndexerCatchupProcessorTest.java index a91c83733..159385a9e 100644 --- a/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/indexer/process/EventIndexerCatchupProcessorTest.java +++ b/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/indexer/process/EventIndexerCatchupProcessorTest.java @@ -9,8 +9,6 @@ import uk.gov.justice.services.event.sourcing.subscription.catchup.consumer.manager.EventStreamConsumerManager; import uk.gov.justice.services.event.sourcing.subscription.manager.PublishedEventSourceProvider; import uk.gov.justice.services.eventsourcing.source.core.PublishedEventSource; -import uk.gov.justice.services.eventstore.management.catchup.events.CatchupCompletedForSubscriptionEvent; -import uk.gov.justice.services.eventstore.management.catchup.events.CatchupStartedForSubscriptionEvent; import uk.gov.justice.services.eventstore.management.indexer.events.IndexerCatchupCompletedForSubscriptionEvent; import uk.gov.justice.services.eventstore.management.indexer.events.IndexerCatchupRequestedEvent; import uk.gov.justice.services.eventstore.management.indexer.events.IndexerCatchupStartedForSubscriptionEvent; diff --git a/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/indexer/process/IndexerCatchupDurationCalculatorTest.java b/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/indexer/process/IndexerCatchupDurationCalculatorTest.java index 7966d5703..a5c3d5707 100644 --- a/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/indexer/process/IndexerCatchupDurationCalculatorTest.java +++ b/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/indexer/process/IndexerCatchupDurationCalculatorTest.java @@ -6,8 +6,6 @@ import static org.mockito.Mockito.when; import uk.gov.justice.services.common.util.UtcClock; -import uk.gov.justice.services.eventstore.management.catchup.events.CatchupCompletedForSubscriptionEvent; -import uk.gov.justice.services.eventstore.management.catchup.process.CatchupInProgress; import uk.gov.justice.services.eventstore.management.indexer.events.IndexerCatchupCompletedForSubscriptionEvent; import java.time.Duration; diff --git a/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/rebuild/observers/RebuildObserverTest.java b/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/rebuild/observers/RebuildObserverTest.java index 9352e2e9f..4cc71849f 100644 --- a/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/rebuild/observers/RebuildObserverTest.java +++ b/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/rebuild/observers/RebuildObserverTest.java @@ -3,15 +3,13 @@ import static java.time.ZoneOffset.UTC; import static java.time.ZonedDateTime.of; import static org.mockito.Mockito.inOrder; -import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import uk.gov.justice.services.common.util.UtcClock; import uk.gov.justice.services.eventsourcing.publishedevent.rebuild.PublishedEventRebuilder; import uk.gov.justice.services.eventstore.management.rebuild.commands.RebuildCommand; -import uk.gov.justice.services.eventstore.management.rebuild.events.RebuildRequestedEvent; import uk.gov.justice.services.eventstore.management.rebuild.events.RebuildCompleteEvent; -import uk.gov.justice.services.jmx.command.SystemCommand; +import uk.gov.justice.services.eventstore.management.rebuild.events.RebuildRequestedEvent; import java.time.ZonedDateTime; diff --git a/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/shuttering/observers/PublishQueueDrainedShutteringObserverTest.java b/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/shuttering/observers/PublishQueueDrainedShutteringObserverTest.java index 5cc8e086a..9458692c7 100644 --- a/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/shuttering/observers/PublishQueueDrainedShutteringObserverTest.java +++ b/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/shuttering/observers/PublishQueueDrainedShutteringObserverTest.java @@ -1,30 +1,28 @@ package uk.gov.justice.services.eventstore.management.shuttering.observers; -import static java.lang.String.format; - -import org.apache.commons.lang3.time.StopWatch; -import org.junit.runner.RunWith; -import org.mockito.InOrder; -import org.mockito.runners.MockitoJUnitRunner; - +import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; +import static org.mockito.Mockito.inOrder; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import org.junit.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.slf4j.Logger; - -import static org.hamcrest.CoreMatchers.is; -import static org.mockito.Mockito.*; - import uk.gov.justice.services.eventsourcing.util.jee.timer.StopWatchFactory; import uk.gov.justice.services.eventstore.management.shuttering.process.PublishQueueInterrogator; import uk.gov.justice.services.jmx.command.SystemCommand; import uk.gov.justice.services.management.shuttering.events.ShutteringProcessStartedEvent; import uk.gov.justice.services.management.shuttering.observers.shuttering.ShutteringRegistry; +import org.apache.commons.lang3.time.StopWatch; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InOrder; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; +import org.slf4j.Logger; + @RunWith(MockitoJUnitRunner.class) public class PublishQueueDrainedShutteringObserverTest { diff --git a/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/shuttering/process/PublishQueueInterrogatorTest.java b/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/shuttering/process/PublishQueueInterrogatorTest.java index 338241bfa..2c3b7e058 100644 --- a/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/shuttering/process/PublishQueueInterrogatorTest.java +++ b/event-store-management/src/test/java/uk/gov/justice/services/eventstore/management/shuttering/process/PublishQueueInterrogatorTest.java @@ -17,12 +17,14 @@ @RunWith(MockitoJUnitRunner.class) public class PublishQueueInterrogatorTest { + private static final String PUBLISH_QUEUE_TABLE_NAME = "publish_queue"; + @Mock private EventDeQueuer eventDeQueuer; @Mock private MultiIteratingPollerFactory multiIteratingPollerFactory; - + @InjectMocks private PublishQueueInterrogator publishQueueInterrogator; @@ -30,7 +32,7 @@ public class PublishQueueInterrogatorTest { public void shouldPollPublishQueueUntilItIsEmpty() throws Exception { when(multiIteratingPollerFactory.create(3, 500L, 3, 500L)).thenReturn(new DummyMultiIteratingPoller()); - when(eventDeQueuer.getSizeOfQueue("published_event")).thenReturn(0); + when(eventDeQueuer.getSizeOfQueue(PUBLISH_QUEUE_TABLE_NAME)).thenReturn(0); assertThat(publishQueueInterrogator.pollUntilPublishQueueEmpty(), is(true)); } diff --git a/test-utils-event-store/test-utils-persistence/src/main/java/uk/gov/justice/services/test/utils/persistence/DatabaseCleaner.java b/test-utils-event-store/test-utils-persistence/src/main/java/uk/gov/justice/services/test/utils/persistence/DatabaseCleaner.java index 2657e067f..816b8b5fd 100644 --- a/test-utils-event-store/test-utils-persistence/src/main/java/uk/gov/justice/services/test/utils/persistence/DatabaseCleaner.java +++ b/test-utils-event-store/test-utils-persistence/src/main/java/uk/gov/justice/services/test/utils/persistence/DatabaseCleaner.java @@ -121,7 +121,7 @@ public void cleanViewStoreTables(final String contextName, final String tableNam public void cleanSystemTables(final String contextName) { try (final Connection connection = testJdbcConnectionProvider.getSystemConnection(contextName)) { - cleanTable("shuttered_command_store", connection); + cleanTable("stored_command", connection); } catch (SQLException e) { throw new DataAccessException("Failed to commit or close database connection", e); } diff --git a/test-utils-event-store/test-utils-persistence/src/test/java/uk/gov/justice/services/test/utils/persistence/DatabaseCleanerTest.java b/test-utils-event-store/test-utils-persistence/src/test/java/uk/gov/justice/services/test/utils/persistence/DatabaseCleanerTest.java index ea2109cf6..2ce20d868 100644 --- a/test-utils-event-store/test-utils-persistence/src/test/java/uk/gov/justice/services/test/utils/persistence/DatabaseCleanerTest.java +++ b/test-utils-event-store/test-utils-persistence/src/test/java/uk/gov/justice/services/test/utils/persistence/DatabaseCleanerTest.java @@ -80,7 +80,7 @@ public void shouldCleanTheSystemTables() throws Exception { final PreparedStatement preparedStatement = mock(PreparedStatement.class); when(testJdbcConnectionProvider.getSystemConnection(contextName)).thenReturn(connection); - when(connection.prepareStatement("DELETE FROM " + "shuttered_command_store")).thenReturn(preparedStatement); + when(connection.prepareStatement("DELETE FROM " + "stored_command")).thenReturn(preparedStatement); databaseCleaner.cleanSystemTables(contextName); @@ -203,7 +203,7 @@ public void shouldThrowADatAccessExceptionIfClosingTheViewStoreConnectionFails() @Test public void shouldThrowADatAccessExceptionIfClosingTheSystemConnectionFails() throws Exception { - final String tableName = "shuttered_command_store"; + final String tableName = "stored_command"; final String contextName = "my-context"; final SQLException sqlException = new SQLException("Oops"); @@ -218,7 +218,7 @@ public void shouldThrowADatAccessExceptionIfClosingTheSystemConnectionFails() th try { databaseCleaner.cleanSystemTables(contextName); fail(); - } catch (Exception expected) { + } catch (final DataAccessException expected) { assertThat(expected.getCause(), is(sqlException)); }