From a35746ec5fecadbfc0f5d5f4475f79bc4307461c Mon Sep 17 00:00:00 2001 From: Gunnar Velle Date: Tue, 17 Dec 2024 13:09:16 +0100 Subject: [PATCH 1/5] Add routine to disconnect all invisible children of subjects. --- .../taxonomy/repositories/NodeRepository.java | 12 ++++++ .../rest/v1/commands/VersionPostPut.java | 4 +- .../no/ndla/taxonomy/service/NodeService.java | 20 +++++++++ .../ndla/taxonomy/service/VersionService.java | 41 +++++++++++++++++-- .../ndla/taxonomy/service/task/Deleter.java | 25 +++++++++++ .../no/ndla/taxonomy/rest/v1/RestTest.java | 2 +- .../ndla/taxonomy/rest/v1/VersionsTest.java | 13 ++++-- .../service/AbstractIntegrationTest.java | 9 ++-- 8 files changed, 111 insertions(+), 15 deletions(-) create mode 100644 src/main/java/no/ndla/taxonomy/service/task/Deleter.java diff --git a/src/main/java/no/ndla/taxonomy/repositories/NodeRepository.java b/src/main/java/no/ndla/taxonomy/repositories/NodeRepository.java index 2419929a..609b7fbb 100644 --- a/src/main/java/no/ndla/taxonomy/repositories/NodeRepository.java +++ b/src/main/java/no/ndla/taxonomy/repositories/NodeRepository.java @@ -105,6 +105,18 @@ List findIdsFiltered( """) List findProgrammes(); + @Query( + """ + SELECT DISTINCT n FROM Node n + LEFT JOIN FETCH n.resourceResourceTypes rrt + LEFT JOIN FETCH rrt.resourceType + LEFT JOIN FETCH n.parentConnections pc + LEFT JOIN FETCH n.childConnections cc + WHERE n.nodeType = "SUBJECT" + AND n.context = true + """) + List findRootSubjects(); + @Query( """ SELECT DISTINCT n FROM Node n diff --git a/src/main/java/no/ndla/taxonomy/rest/v1/commands/VersionPostPut.java b/src/main/java/no/ndla/taxonomy/rest/v1/commands/VersionPostPut.java index 9043a3af..582d62fd 100644 --- a/src/main/java/no/ndla/taxonomy/rest/v1/commands/VersionPostPut.java +++ b/src/main/java/no/ndla/taxonomy/rest/v1/commands/VersionPostPut.java @@ -18,8 +18,8 @@ public class VersionPostPut implements UpdatableDto { @JsonProperty @Schema( description = - "If specified, set the id to this value. Must start with urn:subject: and be a valid URI. If omitted, an id will be assigned automatically.", - example = "urn:subject:1") + "If specified, set the id to this value. Must start with urn:version: and be a valid URI. If ommitted, an id will be assigned automatically.", + example = "urn:version:1") public Optional id = Optional.empty(); @JsonProperty diff --git a/src/main/java/no/ndla/taxonomy/service/NodeService.java b/src/main/java/no/ndla/taxonomy/service/NodeService.java index ffbdae05..adf5f761 100644 --- a/src/main/java/no/ndla/taxonomy/service/NodeService.java +++ b/src/main/java/no/ndla/taxonomy/service/NodeService.java @@ -436,4 +436,24 @@ public List getContextByContextId(Optional contextId .filter(c -> c.contextId().equals(contextId.get())) .toList(); } + + @Transactional + public Optional disconnectAllInvisibleNodes() { + nodeRepository.findRootSubjects().forEach(subject -> { + disconnectInvisibleConnections(subject); + nodeRepository.save(subject); + }); + return Optional.empty(); + } + + private Node disconnectInvisibleConnections(Node node) { + if (!node.isVisible()) { + node.getParentConnections().forEach(nodeConnectionRepository::delete); + } else { + node.getChildConnections() + .forEach(nodeConnection -> + nodeConnection.getChild().ifPresent(this::disconnectInvisibleConnections)); + } + return node; + } } diff --git a/src/main/java/no/ndla/taxonomy/service/VersionService.java b/src/main/java/no/ndla/taxonomy/service/VersionService.java index f36616cc..0fa3adc9 100644 --- a/src/main/java/no/ndla/taxonomy/service/VersionService.java +++ b/src/main/java/no/ndla/taxonomy/service/VersionService.java @@ -13,13 +13,20 @@ import java.time.Instant; import java.util.List; import java.util.Optional; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; import java.util.stream.Collectors; +import no.ndla.taxonomy.domain.DomainEntity; import no.ndla.taxonomy.domain.Version; import no.ndla.taxonomy.domain.VersionType; +import no.ndla.taxonomy.repositories.NodeConnectionRepository; +import no.ndla.taxonomy.repositories.NodeRepository; import no.ndla.taxonomy.repositories.VersionRepository; import no.ndla.taxonomy.rest.v1.commands.VersionPostPut; import no.ndla.taxonomy.service.dtos.VersionDTO; import no.ndla.taxonomy.service.exceptions.NotFoundServiceException; +import no.ndla.taxonomy.service.task.Deleter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; @@ -30,16 +37,28 @@ @Service public class VersionService { final Logger logger = LoggerFactory.getLogger(this.getClass()); - private final VersionRepository versionRepository; private final EntityManager entityManager; + private final VersionRepository versionRepository; + private final NodeRepository nodeRepository; + private final NodeConnectionRepository nodeConnectionRepository; + private final NodeService nodeService; private final URNValidator validator = new URNValidator(); + private final ExecutorService executor = Executors.newSingleThreadExecutor(); @Value("${spring.datasource.hikari.schema:taxonomy_api}") private String defaultSchema; - public VersionService(VersionRepository versionRepository, EntityManager entityManager) { - this.versionRepository = versionRepository; + public VersionService( + EntityManager entityManager, + VersionRepository versionRepository, + NodeRepository nodeRepository, + NodeConnectionRepository nodeConnectionRepository, + NodeService nodeService) { this.entityManager = entityManager; + this.versionRepository = versionRepository; + this.nodeRepository = nodeRepository; + this.nodeConnectionRepository = nodeConnectionRepository; + this.nodeService = nodeService; } @Transactional @@ -83,6 +102,22 @@ public void publishBetaAndArchiveCurrent(URI id) { beta.setLocked(true); beta.setPublished(Instant.now()); versionRepository.save(beta); + + disconnectAllInvisibleNodes(beta.getHash()); + } + + private void disconnectAllInvisibleNodes(String hash) { + // Use a task to run in a separate thread against a specified schema + try { + Deleter deleter = new Deleter(); + deleter.setNodeService(nodeService); + deleter.setVersion(schemaFromHash(hash)); + Future future = executor.submit(deleter); + future.get(); + } catch (Exception e) { + logger.info(e.getMessage(), e); + // throw new NotFoundServiceException("Failed to disconnect invisible children in schema", e); + } } @Transactional diff --git a/src/main/java/no/ndla/taxonomy/service/task/Deleter.java b/src/main/java/no/ndla/taxonomy/service/task/Deleter.java new file mode 100644 index 00000000..9c22c8a9 --- /dev/null +++ b/src/main/java/no/ndla/taxonomy/service/task/Deleter.java @@ -0,0 +1,25 @@ +/* + * Part of NDLA taxonomy-api + * Copyright (C) 2022 NDLA + * + * See LICENSE + */ + +package no.ndla.taxonomy.service.task; + +import java.util.Optional; +import no.ndla.taxonomy.domain.DomainEntity; +import no.ndla.taxonomy.service.NodeService; + +public class Deleter extends Task { + private NodeService nodeService; + + public void setNodeService(NodeService nodeService) { + this.nodeService = nodeService; + } + + @Override + protected Optional execute() { + return nodeService.disconnectAllInvisibleNodes(); + } +} diff --git a/src/test/java/no/ndla/taxonomy/rest/v1/RestTest.java b/src/test/java/no/ndla/taxonomy/rest/v1/RestTest.java index 6cdeb0e1..e8edf507 100644 --- a/src/test/java/no/ndla/taxonomy/rest/v1/RestTest.java +++ b/src/test/java/no/ndla/taxonomy/rest/v1/RestTest.java @@ -25,7 +25,7 @@ @SpringBootTest @ActiveProfiles("junit") @Transactional -public abstract class RestTest extends AbstractIntegrationTest { +public class RestTest extends AbstractIntegrationTest { @Autowired EntityManager entityManager; diff --git a/src/test/java/no/ndla/taxonomy/rest/v1/VersionsTest.java b/src/test/java/no/ndla/taxonomy/rest/v1/VersionsTest.java index ad4f520b..0f36c385 100644 --- a/src/test/java/no/ndla/taxonomy/rest/v1/VersionsTest.java +++ b/src/test/java/no/ndla/taxonomy/rest/v1/VersionsTest.java @@ -179,10 +179,17 @@ public void can_update_version() throws Exception { @Test public void can_publish_version() throws Exception { - Version version = builder.version(); // BETA - testUtils.updateResource("/v1/versions/" + version.getPublicId() + "/publish", null); + var versionUri = URI.create("urn:version:beta"); + final var createVersionCommand = new VersionPostPut() { + { + id = Optional.of(versionUri); + name = "Beta"; + } + }; + testUtils.createResource("/v1/versions", createVersionCommand); + testUtils.updateResource("/v1/versions/" + versionUri + "/publish", null); - Version updated = versionRepository.getByPublicId(version.getPublicId()); + Version updated = versionRepository.getByPublicId(versionUri); assertEquals(VersionType.PUBLISHED, updated.getVersionType()); assertTrue(updated.isLocked()); assertNotNull(updated.getPublished()); diff --git a/src/test/java/no/ndla/taxonomy/service/AbstractIntegrationTest.java b/src/test/java/no/ndla/taxonomy/service/AbstractIntegrationTest.java index f2d093fc..54ba902c 100644 --- a/src/test/java/no/ndla/taxonomy/service/AbstractIntegrationTest.java +++ b/src/test/java/no/ndla/taxonomy/service/AbstractIntegrationTest.java @@ -13,18 +13,15 @@ import org.springframework.test.context.DynamicPropertyRegistry; import org.springframework.test.context.DynamicPropertySource; import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; @Testcontainers @DirtiesContext public class AbstractIntegrationTest { - static final PostgreSQLContainer postgresDB; - - static { - postgresDB = new PostgreSQLContainer<>("postgres:13.12"); - postgresDB.start(); - } + @Container + private static final PostgreSQLContainer postgresDB = new PostgreSQLContainer<>("postgres:13.15"); @Autowired EntityManager entityManager; From 238b662d819560bec913cd0e5428dbf1c3a2c63c Mon Sep 17 00:00:00 2001 From: Gunnar Velle Date: Tue, 17 Dec 2024 15:20:23 +0100 Subject: [PATCH 2/5] Remove uneccessary imports --- .../no/ndla/taxonomy/service/VersionService.java | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/main/java/no/ndla/taxonomy/service/VersionService.java b/src/main/java/no/ndla/taxonomy/service/VersionService.java index 0fa3adc9..0cf3f983 100644 --- a/src/main/java/no/ndla/taxonomy/service/VersionService.java +++ b/src/main/java/no/ndla/taxonomy/service/VersionService.java @@ -20,8 +20,6 @@ import no.ndla.taxonomy.domain.DomainEntity; import no.ndla.taxonomy.domain.Version; import no.ndla.taxonomy.domain.VersionType; -import no.ndla.taxonomy.repositories.NodeConnectionRepository; -import no.ndla.taxonomy.repositories.NodeRepository; import no.ndla.taxonomy.repositories.VersionRepository; import no.ndla.taxonomy.rest.v1.commands.VersionPostPut; import no.ndla.taxonomy.service.dtos.VersionDTO; @@ -39,8 +37,6 @@ public class VersionService { final Logger logger = LoggerFactory.getLogger(this.getClass()); private final EntityManager entityManager; private final VersionRepository versionRepository; - private final NodeRepository nodeRepository; - private final NodeConnectionRepository nodeConnectionRepository; private final NodeService nodeService; private final URNValidator validator = new URNValidator(); private final ExecutorService executor = Executors.newSingleThreadExecutor(); @@ -48,16 +44,9 @@ public class VersionService { @Value("${spring.datasource.hikari.schema:taxonomy_api}") private String defaultSchema; - public VersionService( - EntityManager entityManager, - VersionRepository versionRepository, - NodeRepository nodeRepository, - NodeConnectionRepository nodeConnectionRepository, - NodeService nodeService) { + public VersionService(EntityManager entityManager, VersionRepository versionRepository, NodeService nodeService) { this.entityManager = entityManager; this.versionRepository = versionRepository; - this.nodeRepository = nodeRepository; - this.nodeConnectionRepository = nodeConnectionRepository; this.nodeService = nodeService; } From 3132fd8ecf635a69eae53964437f702bd60bc2e8 Mon Sep 17 00:00:00 2001 From: Gunnar Velle Date: Wed, 18 Dec 2024 13:38:28 +0100 Subject: [PATCH 3/5] Make disconnecting update contexts. Publish version async. --- .../service/NodeConnectionService.java | 3 ++ .../service/NodeConnectionServiceImpl.java | 30 ++++++++++++++++--- .../no/ndla/taxonomy/service/NodeService.java | 20 ------------- .../ndla/taxonomy/service/VersionService.java | 19 +++++++----- .../ndla/taxonomy/service/task/Deleter.java | 10 +++---- 5 files changed, 46 insertions(+), 36 deletions(-) diff --git a/src/main/java/no/ndla/taxonomy/service/NodeConnectionService.java b/src/main/java/no/ndla/taxonomy/service/NodeConnectionService.java index 5fb22df3..9bed2f1d 100644 --- a/src/main/java/no/ndla/taxonomy/service/NodeConnectionService.java +++ b/src/main/java/no/ndla/taxonomy/service/NodeConnectionService.java @@ -10,6 +10,7 @@ import java.net.URI; import java.util.Collection; import java.util.Optional; +import no.ndla.taxonomy.domain.DomainEntity; import no.ndla.taxonomy.domain.Node; import no.ndla.taxonomy.domain.NodeConnection; import no.ndla.taxonomy.domain.Relevance; @@ -34,4 +35,6 @@ void updateParentChild( Collection getChildConnections(Node entity); void disconnectAllChildren(Node entity); + + Optional disconnectAllInvisibleNodes(); } diff --git a/src/main/java/no/ndla/taxonomy/service/NodeConnectionServiceImpl.java b/src/main/java/no/ndla/taxonomy/service/NodeConnectionServiceImpl.java index 4f212806..93f2e057 100644 --- a/src/main/java/no/ndla/taxonomy/service/NodeConnectionServiceImpl.java +++ b/src/main/java/no/ndla/taxonomy/service/NodeConnectionServiceImpl.java @@ -10,15 +10,14 @@ import java.net.URI; import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; -import no.ndla.taxonomy.domain.Node; -import no.ndla.taxonomy.domain.NodeConnection; -import no.ndla.taxonomy.domain.NodeType; -import no.ndla.taxonomy.domain.Relevance; +import no.ndla.taxonomy.domain.*; import no.ndla.taxonomy.repositories.NodeConnectionRepository; import no.ndla.taxonomy.repositories.NodeRepository; import no.ndla.taxonomy.rest.NotFoundHttpResponseException; import no.ndla.taxonomy.service.exceptions.DuplicateConnectionException; import no.ndla.taxonomy.service.exceptions.InvalidArgumentServiceException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -26,6 +25,8 @@ @Transactional(propagation = Propagation.MANDATORY) @Service public class NodeConnectionServiceImpl implements NodeConnectionService { + Logger logger = LoggerFactory.getLogger(getClass().getName()); + private final NodeConnectionRepository nodeConnectionRepository; private final ContextUpdaterService contextUpdaterService; private final NodeRepository nodeRepository; @@ -295,4 +296,25 @@ public void disconnectAllParents(URI nodeId) { public void disconnectAllChildren(Node entity) { Set.copyOf(entity.getChildConnections()).forEach(this::disconnectParentChildConnection); } + + @Transactional + @Override + public Optional disconnectAllInvisibleNodes() { + nodeRepository.findRootSubjects().forEach(subject -> { + disconnectInvisibleConnections(subject); + nodeRepository.save(subject); + }); + return Optional.empty(); + } + + private void disconnectInvisibleConnections(Node node) { + if (!node.isVisible()) { + logger.info("Disconnecting invisible node {}", node.getPublicId()); + node.getParentConnections().forEach(this::disconnectParentChildConnection); + } else { + node.getChildConnections() + .forEach(nodeConnection -> + nodeConnection.getChild().ifPresent(this::disconnectInvisibleConnections)); + } + } } diff --git a/src/main/java/no/ndla/taxonomy/service/NodeService.java b/src/main/java/no/ndla/taxonomy/service/NodeService.java index adf5f761..ffbdae05 100644 --- a/src/main/java/no/ndla/taxonomy/service/NodeService.java +++ b/src/main/java/no/ndla/taxonomy/service/NodeService.java @@ -436,24 +436,4 @@ public List getContextByContextId(Optional contextId .filter(c -> c.contextId().equals(contextId.get())) .toList(); } - - @Transactional - public Optional disconnectAllInvisibleNodes() { - nodeRepository.findRootSubjects().forEach(subject -> { - disconnectInvisibleConnections(subject); - nodeRepository.save(subject); - }); - return Optional.empty(); - } - - private Node disconnectInvisibleConnections(Node node) { - if (!node.isVisible()) { - node.getParentConnections().forEach(nodeConnectionRepository::delete); - } else { - node.getChildConnections() - .forEach(nodeConnection -> - nodeConnection.getChild().ifPresent(this::disconnectInvisibleConnections)); - } - return node; - } } diff --git a/src/main/java/no/ndla/taxonomy/service/VersionService.java b/src/main/java/no/ndla/taxonomy/service/VersionService.java index 0cf3f983..da234424 100644 --- a/src/main/java/no/ndla/taxonomy/service/VersionService.java +++ b/src/main/java/no/ndla/taxonomy/service/VersionService.java @@ -28,6 +28,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -37,17 +38,20 @@ public class VersionService { final Logger logger = LoggerFactory.getLogger(this.getClass()); private final EntityManager entityManager; private final VersionRepository versionRepository; - private final NodeService nodeService; + private final NodeConnectionService nodeConnectionService; private final URNValidator validator = new URNValidator(); private final ExecutorService executor = Executors.newSingleThreadExecutor(); @Value("${spring.datasource.hikari.schema:taxonomy_api}") private String defaultSchema; - public VersionService(EntityManager entityManager, VersionRepository versionRepository, NodeService nodeService) { + public VersionService( + EntityManager entityManager, + VersionRepository versionRepository, + NodeConnectionService nodeConnectionService) { this.entityManager = entityManager; this.versionRepository = versionRepository; - this.nodeService = nodeService; + this.nodeConnectionService = nodeConnectionService; } @Transactional @@ -78,19 +82,20 @@ public List getVersionsOfType(VersionType versionType) { } @Transactional + @Async public void publishBetaAndArchiveCurrent(URI id) { Optional published = versionRepository.findFirstByVersionType(VersionType.PUBLISHED); if (published.isPresent()) { Version version = published.get(); version.setVersionType(VersionType.ARCHIVED); version.setArchived(Instant.now()); - versionRepository.save(version); + versionRepository.saveAndFlush(version); } Version beta = versionRepository.getByPublicId(id); beta.setVersionType(VersionType.PUBLISHED); beta.setLocked(true); beta.setPublished(Instant.now()); - versionRepository.save(beta); + versionRepository.saveAndFlush(beta); disconnectAllInvisibleNodes(beta.getHash()); } @@ -99,10 +104,10 @@ private void disconnectAllInvisibleNodes(String hash) { // Use a task to run in a separate thread against a specified schema try { Deleter deleter = new Deleter(); - deleter.setNodeService(nodeService); + deleter.setNodeConnectionService(nodeConnectionService); deleter.setVersion(schemaFromHash(hash)); Future future = executor.submit(deleter); - future.get(); + // future.get(); } catch (Exception e) { logger.info(e.getMessage(), e); // throw new NotFoundServiceException("Failed to disconnect invisible children in schema", e); diff --git a/src/main/java/no/ndla/taxonomy/service/task/Deleter.java b/src/main/java/no/ndla/taxonomy/service/task/Deleter.java index 9c22c8a9..a56116dc 100644 --- a/src/main/java/no/ndla/taxonomy/service/task/Deleter.java +++ b/src/main/java/no/ndla/taxonomy/service/task/Deleter.java @@ -9,17 +9,17 @@ import java.util.Optional; import no.ndla.taxonomy.domain.DomainEntity; -import no.ndla.taxonomy.service.NodeService; +import no.ndla.taxonomy.service.NodeConnectionService; public class Deleter extends Task { - private NodeService nodeService; + private NodeConnectionService nodeConnectionService; - public void setNodeService(NodeService nodeService) { - this.nodeService = nodeService; + public void setNodeConnectionService(NodeConnectionService nodeService) { + this.nodeConnectionService = nodeService; } @Override protected Optional execute() { - return nodeService.disconnectAllInvisibleNodes(); + return nodeConnectionService.disconnectAllInvisibleNodes(); } } From 2247498f2acd888ba73fd6afe2a61a1605a7874d Mon Sep 17 00:00:00 2001 From: Gunnar Velle Date: Wed, 18 Dec 2024 13:57:12 +0100 Subject: [PATCH 4/5] Disable async in tests --- src/main/java/no/ndla/taxonomy/config/AsyncConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/no/ndla/taxonomy/config/AsyncConfig.java b/src/main/java/no/ndla/taxonomy/config/AsyncConfig.java index 3465909b..8363c32c 100644 --- a/src/main/java/no/ndla/taxonomy/config/AsyncConfig.java +++ b/src/main/java/no/ndla/taxonomy/config/AsyncConfig.java @@ -11,7 +11,7 @@ import org.springframework.context.annotation.Profile; import org.springframework.scheduling.annotation.EnableAsync; -@Profile("!default") +@Profile("!(default|junit)") @EnableAsync @Configuration public class AsyncConfig {} From bfd8c218f0f421a408e413b43327dc4fef19be76 Mon Sep 17 00:00:00 2001 From: Gunnar Velle Date: Wed, 18 Dec 2024 14:24:22 +0100 Subject: [PATCH 5/5] Fire and forget Not 22 --- .../ndla/taxonomy/service/NodeConnectionServiceImpl.java | 4 ---- src/main/java/no/ndla/taxonomy/service/VersionService.java | 7 ++----- src/main/java/no/ndla/taxonomy/service/task/Deleter.java | 2 +- 3 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/main/java/no/ndla/taxonomy/service/NodeConnectionServiceImpl.java b/src/main/java/no/ndla/taxonomy/service/NodeConnectionServiceImpl.java index 93f2e057..9473b825 100644 --- a/src/main/java/no/ndla/taxonomy/service/NodeConnectionServiceImpl.java +++ b/src/main/java/no/ndla/taxonomy/service/NodeConnectionServiceImpl.java @@ -16,8 +16,6 @@ import no.ndla.taxonomy.rest.NotFoundHttpResponseException; import no.ndla.taxonomy.service.exceptions.DuplicateConnectionException; import no.ndla.taxonomy.service.exceptions.InvalidArgumentServiceException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -25,7 +23,6 @@ @Transactional(propagation = Propagation.MANDATORY) @Service public class NodeConnectionServiceImpl implements NodeConnectionService { - Logger logger = LoggerFactory.getLogger(getClass().getName()); private final NodeConnectionRepository nodeConnectionRepository; private final ContextUpdaterService contextUpdaterService; @@ -309,7 +306,6 @@ public Optional disconnectAllInvisibleNodes() { private void disconnectInvisibleConnections(Node node) { if (!node.isVisible()) { - logger.info("Disconnecting invisible node {}", node.getPublicId()); node.getParentConnections().forEach(this::disconnectParentChildConnection); } else { node.getChildConnections() diff --git a/src/main/java/no/ndla/taxonomy/service/VersionService.java b/src/main/java/no/ndla/taxonomy/service/VersionService.java index da234424..666a56f5 100644 --- a/src/main/java/no/ndla/taxonomy/service/VersionService.java +++ b/src/main/java/no/ndla/taxonomy/service/VersionService.java @@ -15,9 +15,7 @@ import java.util.Optional; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import java.util.concurrent.Future; import java.util.stream.Collectors; -import no.ndla.taxonomy.domain.DomainEntity; import no.ndla.taxonomy.domain.Version; import no.ndla.taxonomy.domain.VersionType; import no.ndla.taxonomy.repositories.VersionRepository; @@ -102,15 +100,14 @@ public void publishBetaAndArchiveCurrent(URI id) { private void disconnectAllInvisibleNodes(String hash) { // Use a task to run in a separate thread against a specified schema + // Do not care about the result so no need to wait for it try { Deleter deleter = new Deleter(); deleter.setNodeConnectionService(nodeConnectionService); deleter.setVersion(schemaFromHash(hash)); - Future future = executor.submit(deleter); - // future.get(); + executor.submit(deleter); } catch (Exception e) { logger.info(e.getMessage(), e); - // throw new NotFoundServiceException("Failed to disconnect invisible children in schema", e); } } diff --git a/src/main/java/no/ndla/taxonomy/service/task/Deleter.java b/src/main/java/no/ndla/taxonomy/service/task/Deleter.java index a56116dc..73586124 100644 --- a/src/main/java/no/ndla/taxonomy/service/task/Deleter.java +++ b/src/main/java/no/ndla/taxonomy/service/task/Deleter.java @@ -1,6 +1,6 @@ /* * Part of NDLA taxonomy-api - * Copyright (C) 2022 NDLA + * Copyright (C) 2024 NDLA * * See LICENSE */