diff --git a/.github/project.yml b/.github/project.yml index a2be214fe..bfcae95e1 100644 --- a/.github/project.yml +++ b/.github/project.yml @@ -1,3 +1,3 @@ release: - current-version: 7.13.4.Final + current-version: 7.13.5.Final next-version: 8.0.0-SNAPSHOT diff --git a/impl/persistence/api/src/main/java/io/serverlessworkflow/impl/persistence/DefaultPersistenceInstanceHandlers.java b/impl/persistence/api/src/main/java/io/serverlessworkflow/impl/persistence/DefaultPersistenceInstanceHandlers.java index dc354b63b..4e426beee 100644 --- a/impl/persistence/api/src/main/java/io/serverlessworkflow/impl/persistence/DefaultPersistenceInstanceHandlers.java +++ b/impl/persistence/api/src/main/java/io/serverlessworkflow/impl/persistence/DefaultPersistenceInstanceHandlers.java @@ -17,7 +17,6 @@ import static io.serverlessworkflow.impl.WorkflowUtils.safeClose; -import java.time.Duration; import java.util.Optional; import java.util.concurrent.ExecutorService; @@ -27,7 +26,6 @@ public static class Builder { private final PersistenceInstanceStore store; private ExecutorService executorService; - private Duration closeTimeout; private Builder(PersistenceInstanceStore store) { this.store = store; @@ -38,17 +36,9 @@ public Builder withExecutorService(ExecutorService executorService) { return this; } - public Builder withCloseTimeout(Duration closeTimeout) { - this.closeTimeout = closeTimeout; - return this; - } - public PersistenceInstanceHandlers build() { return new DefaultPersistenceInstanceHandlers( - new DefaultPersistenceInstanceWriter( - store, - Optional.ofNullable(executorService), - closeTimeout == null ? Duration.ofSeconds(1) : closeTimeout), + new DefaultPersistenceInstanceWriter(store, Optional.ofNullable(executorService)), new DefaultPersistenceInstanceReader(store), store); } diff --git a/impl/persistence/api/src/main/java/io/serverlessworkflow/impl/persistence/DefaultPersistenceInstanceWriter.java b/impl/persistence/api/src/main/java/io/serverlessworkflow/impl/persistence/DefaultPersistenceInstanceWriter.java index 1dd946fde..72efcdac2 100644 --- a/impl/persistence/api/src/main/java/io/serverlessworkflow/impl/persistence/DefaultPersistenceInstanceWriter.java +++ b/impl/persistence/api/src/main/java/io/serverlessworkflow/impl/persistence/DefaultPersistenceInstanceWriter.java @@ -17,7 +17,6 @@ import io.serverlessworkflow.impl.WorkflowContextData; import io.serverlessworkflow.impl.WorkflowDefinitionData; -import java.time.Duration; import java.util.Map; import java.util.Optional; import java.util.concurrent.CompletableFuture; @@ -32,18 +31,14 @@ public class DefaultPersistenceInstanceWriter extends AbstractPersistenceInstanc private final PersistenceInstanceStore store; private final Map> futuresMap = new ConcurrentHashMap<>(); private final Optional executorService; - private final Duration closeTimeout; private static final Logger logger = LoggerFactory.getLogger(DefaultPersistenceInstanceWriter.class); protected DefaultPersistenceInstanceWriter( - PersistenceInstanceStore store, - Optional executorService, - Duration closeTimeout) { + PersistenceInstanceStore store, Optional executorService) { this.store = store; this.executorService = executorService; - this.closeTimeout = closeTimeout; } @Override @@ -76,7 +71,7 @@ private void executeTransaction( try { transaction.rollback(definition); } catch (Exception rollEx) { - logger.warn("Exception during rollback. Ignoring it", ex); + logger.warn("Exception during rollback. Ignoring it", rollEx); } throw ex; } diff --git a/impl/test/src/test/java/io/serverlessworkflow/impl/test/MvStorePersistenceTest.java b/impl/test/src/test/java/io/serverlessworkflow/impl/test/MvStorePersistenceTest.java index 7dcd71211..a05149de4 100644 --- a/impl/test/src/test/java/io/serverlessworkflow/impl/test/MvStorePersistenceTest.java +++ b/impl/test/src/test/java/io/serverlessworkflow/impl/test/MvStorePersistenceTest.java @@ -32,8 +32,10 @@ import java.time.Duration; import java.util.Collection; import java.util.Map; +import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.stream.Stream; +import org.awaitility.Awaitility; import org.junit.jupiter.api.Test; public class MvStorePersistenceTest { @@ -41,10 +43,10 @@ public class MvStorePersistenceTest { @Test void testSimpleRun() throws Exception { final String dbName = "db-samples/simple.db"; + ExecutorService service = Executors.newSingleThreadExecutor(); try (PersistenceInstanceHandlers handlers = DefaultPersistenceInstanceHandlers.builder(new MVStorePersistenceStore(dbName)) - .withExecutorService(Executors.newSingleThreadExecutor()) - .withCloseTimeout(Duration.ofMillis(100)) + .withExecutorService(service) .build(); WorkflowApplication application = PersistenceApplicationBuilder.builder(WorkflowApplication.builder(), handlers.writer()) @@ -52,19 +54,20 @@ void testSimpleRun() throws Exception { WorkflowDefinition definition = application.workflowDefinition( readWorkflowFromClasspath("workflows-samples/simple-expression.yaml")); - assertNoInstance(handlers, definition); + assertThat(assertNoInstance(handlers, definition)).isTrue(); definition.instance(Map.of()).start().join(); - handlers.writer().close(); - assertNoInstance(handlers, definition); + Awaitility.await() + .atMost(Duration.ofSeconds(1)) + .until(() -> assertNoInstance(handlers, definition)); } finally { Files.delete(Path.of(dbName)); } } - private void assertNoInstance( + private boolean assertNoInstance( PersistenceInstanceHandlers handlers, WorkflowDefinition definition) { try (Stream stream = handlers.reader().scanAll(definition)) { - assertThat(stream.count()).isEqualTo(0); + return stream.count() == 0; } }