From ba5188ff93d915dfeabe3a750cedc13c459ed7ac Mon Sep 17 00:00:00 2001 From: "Brian M. Long" Date: Tue, 1 Apr 2025 16:16:17 -0400 Subject: [PATCH] fix node shard unload --- .../rest/UnloadNodeShardWebScript.java | 16 ++++++++++++++-- .../rest/AbstractAsieNodeShardWebScript.java | 8 +++----- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/enterprise-module/src/main/java/com/inteligr8/alfresco/asie/enterprise/rest/UnloadNodeShardWebScript.java b/enterprise-module/src/main/java/com/inteligr8/alfresco/asie/enterprise/rest/UnloadNodeShardWebScript.java index 993f0ec..337b875 100755 --- a/enterprise-module/src/main/java/com/inteligr8/alfresco/asie/enterprise/rest/UnloadNodeShardWebScript.java +++ b/enterprise-module/src/main/java/com/inteligr8/alfresco/asie/enterprise/rest/UnloadNodeShardWebScript.java @@ -1,21 +1,33 @@ package com.inteligr8.alfresco.asie.enterprise.rest; import org.alfresco.repo.index.shard.ShardState; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.extensions.webscripts.WebScriptException; import org.springframework.extensions.webscripts.WebScriptRequest; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Component; import com.inteligr8.alfresco.asie.model.ShardSet; import com.inteligr8.alfresco.asie.rest.model.NodeShardParameterSet; +import com.inteligr8.alfresco.asie.spi.ShardDiscoveryService; @Component(value = "webscript.com.inteligr8.alfresco.asie.nodeShard.delete") public class UnloadNodeShardWebScript extends AbstractUnregisterNodeWebScript { + + @Autowired + private ShardDiscoveryService sds; @Override protected NodeShardParameterSet createParameters(WebScriptRequest req, String nodeHostname, int nodePort) { - ShardSet shardSet = this.getRequiredPathParameter(req, "shardSet", ShardSet.class); + String coreName = this.getRequiredPathParameter(req, "shardCore"); int shardId = this.getRequiredPathParameter(req, "shardId", Integer.class); - return new NodeShardParameterSet(nodeHostname, nodePort, shardSet, shardId); + try { + ShardSet shardSet = this.sds.findSetByCore(coreName); + return new NodeShardParameterSet(nodeHostname, nodePort, shardSet, shardId); + } catch (IllegalArgumentException iae) { + throw new WebScriptException(HttpStatus.BAD_REQUEST.value(), iae.getMessage()); + } } @Override diff --git a/shared/src/main/java/com/inteligr8/alfresco/asie/rest/AbstractAsieNodeShardWebScript.java b/shared/src/main/java/com/inteligr8/alfresco/asie/rest/AbstractAsieNodeShardWebScript.java index 72a6a6d..f1634ba 100644 --- a/shared/src/main/java/com/inteligr8/alfresco/asie/rest/AbstractAsieNodeShardWebScript.java +++ b/shared/src/main/java/com/inteligr8/alfresco/asie/rest/AbstractAsieNodeShardWebScript.java @@ -7,8 +7,6 @@ import org.slf4j.LoggerFactory; import org.springframework.extensions.webscripts.WebScriptRequest; import org.springframework.extensions.webscripts.WebScriptResponse; -import com.inteligr8.alfresco.asie.model.ShardSet; - public abstract class AbstractAsieNodeShardWebScript extends AbstractAsieShardableWebScript { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -22,14 +20,14 @@ public abstract class AbstractAsieNodeShardWebScript extends AbstractAsieShardab String nodeHostname = colon < 0 ? nodeEndpoint : nodeEndpoint.substring(0, colon); int nodePort = colon < 0 ? this.getApiService().getDefaultSolrPort() : Integer.parseInt(nodeEndpoint.substring(colon+1)); - ShardSet shardSet = this.getRequiredPathParameter(req, "shardSet", ShardSet.class); + String shardCore = this.getRequiredPathParameter(req, "shardCore", String.class); int shardId = this.getRequiredPathParameter(req, "shardId", Integer.class); - this.execute(req, res, nodeHostname, nodePort, shardSet, shardId); + this.execute(req, res, nodeHostname, nodePort, shardCore, shardId); } protected abstract void execute(WebScriptRequest req, WebScriptResponse res, - String nodeHostname, int nodePort, ShardSet shardSet, int shardId) + String nodeHostname, int nodePort, String shardCore, int shardId) throws IOException; }