From 764a34cd546f9a3d7b608810e78768766b75629f Mon Sep 17 00:00:00 2001 From: Alex Barkell Date: Tue, 14 Jun 2022 14:37:41 -0400 Subject: [PATCH 1/4] add cache controller endpoint --- .../java/org/kpmp/cache/CacheController.java | 34 +++++++++++++++++++ .../java/org/kpmp/cache/CacheResponse.java | 25 ++++++++++++++ src/main/resources/application.properties | 2 +- 3 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/kpmp/cache/CacheController.java create mode 100644 src/main/java/org/kpmp/cache/CacheResponse.java diff --git a/src/main/java/org/kpmp/cache/CacheController.java b/src/main/java/org/kpmp/cache/CacheController.java new file mode 100644 index 0000000..12c1650 --- /dev/null +++ b/src/main/java/org/kpmp/cache/CacheController.java @@ -0,0 +1,34 @@ +package org.kpmp.cache; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.CacheManager; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.Collection; + +@Controller +public class CacheController { + + @Autowired + private CacheManager cacheManager; + + @RequestMapping(value = "/v1/clearCache", method = RequestMethod.GET) + public @ResponseBody CacheResponse clearCache(){ + Collection cacheNames = cacheManager.getCacheNames(); + CacheResponse clearCacheResponse = new CacheResponse(); + clearCacheResponse.setMessage("Caches successfully cleared!"); + for(String name:cacheNames){ + if (cacheManager.getCache(name) != null) { + cacheManager.getCache(name).clear(); + } else { + clearCacheResponse.setMessage("There was a problem getting the " + name + " cache."); + break; + } + } + clearCacheResponse.setCacheNames(cacheNames); + return clearCacheResponse; + } +} diff --git a/src/main/java/org/kpmp/cache/CacheResponse.java b/src/main/java/org/kpmp/cache/CacheResponse.java new file mode 100644 index 0000000..77265dd --- /dev/null +++ b/src/main/java/org/kpmp/cache/CacheResponse.java @@ -0,0 +1,25 @@ +package org.kpmp.cache; + +import java.util.Collection; + +public class CacheResponse { + + private String message; + private Collection cacheNames; + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public Collection getCacheNames() { + return cacheNames; + } + + public void setCacheNames(Collection cacheNames) { + this.cacheNames = cacheNames; + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 336f7c2..b152937 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -4,7 +4,7 @@ file.base.path=/data/dataLake spring.main.banner-mode=off state.service.host=http://localhost:3060 -state.service.endpoint=/v1/state/host +state.service.endpoint=/v1/state/host,v1/clearCache notification.service.host=http://eridanus-spring:3040 notification.endpoint=/v2/notifications/package From 3711f3e1a1bda77fb322e5b8bd0fd1271455dba4 Mon Sep 17 00:00:00 2001 From: Zach Wright Date: Wed, 12 Oct 2022 08:42:43 -0400 Subject: [PATCH 2/4] KPMP-3820: Set error in dmd --- .../java/org/kpmp/FailedPackageChecker.java | 7 +++- .../DluPackageInventoryService.java | 40 +++++++++++++++++++ src/main/resources/application.properties | 5 ++- 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 src/main/java/org/kpmp/stateManager/DluPackageInventoryService.java diff --git a/src/main/java/org/kpmp/FailedPackageChecker.java b/src/main/java/org/kpmp/FailedPackageChecker.java index 3d93c8d..08967ff 100644 --- a/src/main/java/org/kpmp/FailedPackageChecker.java +++ b/src/main/java/org/kpmp/FailedPackageChecker.java @@ -7,6 +7,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.kpmp.stateManager.DluPackageInventoryService; import org.kpmp.stateManager.State; import org.kpmp.stateManager.StateService; import org.springframework.beans.factory.annotation.Value; @@ -21,6 +22,8 @@ public class FailedPackageChecker implements CommandLineRunner { private StateService stateService; + private DluPackageInventoryService dluPackageInventoryService; + private static final Log log = LogFactory.getLog(FailedPackageChecker.class); @Value("${state.service.host}") @@ -40,9 +43,10 @@ public class FailedPackageChecker implements CommandLineRunner { private RestTemplate restTemplate; - public FailedPackageChecker(StateService stateService, RestTemplate restTemplate) { + public FailedPackageChecker(StateService stateService, RestTemplate restTemplate, DluPackageInventoryService dluPackageInventoryService) { this.stateService = stateService; this.restTemplate = restTemplate; + this.dluPackageInventoryService = dluPackageInventoryService; } public static void main(String[] args) { @@ -103,6 +107,7 @@ public void run(String... args) throws Exception { failedState.setStateChangeDate(new Date()); failedState.setCodicil("Failed stale package check"); sendStateChange(failedState); + dluPackageInventoryService.setPackageInError(state.getPackageId()); } } diff --git a/src/main/java/org/kpmp/stateManager/DluPackageInventoryService.java b/src/main/java/org/kpmp/stateManager/DluPackageInventoryService.java new file mode 100644 index 0000000..300df2c --- /dev/null +++ b/src/main/java/org/kpmp/stateManager/DluPackageInventoryService.java @@ -0,0 +1,40 @@ +package org.kpmp.stateManager; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import java.util.HashMap; + +@Service +public class DluPackageInventoryService { + + @Value("${data-manager.service.host}") + private String dataManagerHost; + @Value("${data-manager.service.endpoint}") + private String dataManagerEndpoint; + private RestTemplate restTemplate; + + private static final Log log = LogFactory.getLog(DluPackageInventoryService.class); + + @Autowired + public DluPackageInventoryService(RestTemplate restTemplate) { + this.restTemplate = restTemplate; + } + + public String setPackageInError(String packageId) { + HashMap payload = new HashMap<>(); + payload.put("dlu_error", true); + String retPackageId = null; + String url = dataManagerHost + dataManagerEndpoint + "/package/" + packageId; + try { + retPackageId = restTemplate.postForObject(url, payload, String.class); + } catch (Exception e) { + log.error("URI: " + url + " | PKGID: " + packageId + " | MSG: Setting DMD package error"); + } + return retPackageId; + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index b152937..a186533 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -9,6 +9,9 @@ state.service.endpoint=/v1/state/host,v1/clearCache notification.service.host=http://eridanus-spring:3040 notification.endpoint=/v2/notifications/package +data-manager.service.host=http://data-manager-service:5000 +data-manager.service.endpoint=/v1/dlu + spring.data.mongodb.uri=mongodb://mongodb:27017/dataLake package.state.metadata.received=METADATA_RECEIVED @@ -19,4 +22,4 @@ package.state.upload.failed=UPLOAD_FAILED package.state.longpoll.timeout=60000 package.state.checker.timeout=1800000 -package.state.checker.checkaftermillis=86400000 \ No newline at end of file +package.state.checker.checkaftermillis=86400000 From c755ae25c7de02911623b65899e390aed78c1ac0 Mon Sep 17 00:00:00 2001 From: Zach Wright Date: Wed, 12 Oct 2022 08:53:29 -0400 Subject: [PATCH 3/4] KPMP-3820: Fix test --- src/test/java/FailedPackageCheckerTest.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/test/java/FailedPackageCheckerTest.java b/src/test/java/FailedPackageCheckerTest.java index bb661a4..02844b3 100644 --- a/src/test/java/FailedPackageCheckerTest.java +++ b/src/test/java/FailedPackageCheckerTest.java @@ -2,6 +2,7 @@ import org.junit.Before; import org.junit.Test; import org.kpmp.FailedPackageChecker; +import org.kpmp.stateManager.DluPackageInventoryService; import org.kpmp.stateManager.State; import org.kpmp.stateManager.StateService; import org.mockito.Mock; @@ -16,6 +17,8 @@ public class FailedPackageCheckerTest { + @Mock + DluPackageInventoryService dluPackageInventoryService; @Mock private StateService service; @Mock @@ -27,7 +30,7 @@ public class FailedPackageCheckerTest { @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); - packageChecker = new FailedPackageChecker(service, restTemplate); + packageChecker = new FailedPackageChecker(service, restTemplate, dluPackageInventoryService); } @After From d55e8c2650830514c9ab048fda20806bc8971a3e Mon Sep 17 00:00:00 2001 From: Zach Wright Date: Wed, 12 Oct 2022 11:21:26 -0400 Subject: [PATCH 4/4] KPMP-3820: take out clear cache thingy --- src/main/resources/application.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index a186533..c8ef140 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -4,7 +4,7 @@ file.base.path=/data/dataLake spring.main.banner-mode=off state.service.host=http://localhost:3060 -state.service.endpoint=/v1/state/host,v1/clearCache +state.service.endpoint=/v1/state/host notification.service.host=http://eridanus-spring:3040 notification.endpoint=/v2/notifications/package