Skip to content
This repository was archived by the owner on Sep 16, 2024. It is now read-only.

Commit fec0983

Browse files
committed
#362 Updating a task server now waits for a restart if necessary
1 parent 9522405 commit fec0983

File tree

4 files changed

+28
-10
lines changed

4 files changed

+28
-10
lines changed

src/main/java/com/marklogic/appdeployer/command/taskservers/UpdateTaskServerCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public void execute(CommandContext context) {
3737
logger.info("Processing file: " + f.getAbsolutePath());
3838
}
3939
String payload = copyFileToString(f, context);
40-
mgr.updateTaskServer(taskServerName, payload);
40+
mgr.updateTaskServer(taskServerName, payload, context.getAdminManager());
4141
}
4242
} else {
4343
logResourceDirectoryNotFound(dir);

src/main/java/com/marklogic/mgmt/resource/taskservers/TaskServerManager.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import com.marklogic.mgmt.AbstractManager;
44
import com.marklogic.mgmt.ManageClient;
5+
import com.marklogic.mgmt.admin.AdminManager;
56
import com.marklogic.rest.util.Fragment;
7+
import org.springframework.http.ResponseEntity;
68

79
public class TaskServerManager extends AbstractManager {
810

@@ -12,12 +14,24 @@ public TaskServerManager(ManageClient manageClient) {
1214
this.manageClient = manageClient;
1315
}
1416

15-
public void updateTaskServer(String taskServerName, String payload) {
17+
/**
18+
*
19+
* @param taskServerName
20+
* @param payload
21+
* @param adminManager required in the event that the update to the task server causes a restart
22+
*/
23+
public void updateTaskServer(String taskServerName, String payload, AdminManager adminManager) {
1624
String path = format("/manage/v2/task-servers/%s/properties", taskServerName);
25+
26+
ResponseEntity<String> response;
1727
if (payloadParser.isJsonPayload(payload)) {
18-
manageClient.putJson(path, payload);
28+
response = manageClient.putJson(path, payload);
1929
} else {
20-
manageClient.putXml(path, payload);
30+
response = manageClient.putXml(path, payload);
31+
}
32+
33+
if (response != null && response.getHeaders().getLocation() != null && adminManager != null) {
34+
adminManager.waitForRestart();
2135
}
2236
}
2337

src/test/java/com/marklogic/appdeployer/command/taskservers/UpdateTaskServerTest.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.marklogic.appdeployer.command.taskservers;
22

3+
import com.fasterxml.jackson.databind.node.ObjectNode;
34
import com.marklogic.appdeployer.AbstractAppDeployerTest;
45
import com.marklogic.mgmt.resource.taskservers.TaskServerManager;
6+
import com.marklogic.mgmt.util.ObjectMapperFactory;
57
import com.marklogic.rest.util.Fragment;
68
import org.junit.Test;
79

@@ -10,6 +12,7 @@ public class UpdateTaskServerTest extends AbstractAppDeployerTest {
1012
@Test
1113
public void test() {
1214
TaskServerManager mgr = new TaskServerManager(manageClient);
15+
final int currentThreadCount = Integer.parseInt(mgr.getPropertiesAsXml().getElementValue("/node()/m:threads"));
1316

1417
initializeAppDeployer(new UpdateTaskServerCommand());
1518
deploySampleApp();
@@ -20,13 +23,13 @@ public void test() {
2023
assertEquals("false", xml.getElementValue("/m:task-server-properties/m:debug-allow"));
2124
assertEquals("false", xml.getElementValue("/m:task-server-properties/m:profile-allow"));
2225
} finally {
23-
String payload = "{\n" +
24-
"\t\"log-errors\": true,\n" +
25-
"\t\"debug-allow\": true,\n" +
26-
"\t\"profile-allow\": true\n" +
27-
"}";
26+
ObjectNode payload = ObjectMapperFactory.getObjectMapper().createObjectNode();
27+
payload.put("threads", currentThreadCount);
28+
payload.put("log-errors", true);
29+
payload.put("debug-allow", true);
30+
payload.put("profile-allow", true);
31+
mgr.updateTaskServer("TaskServer", payload.toString(), adminManager);
2832

29-
mgr.updateTaskServer("TaskServer", payload);
3033
Fragment xml = mgr.getPropertiesAsXml();
3134
assertEquals("true", xml.getElementValue("/m:task-server-properties/m:log-errors"));
3235
assertEquals("true", xml.getElementValue("/m:task-server-properties/m:debug-allow"));

src/test/resources/sample-app/src/main/ml-config/task-servers/task-server.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{
2+
"threads": 32,
23
"log-errors": false,
34
"debug-allow": false,
45
"profile-allow": false

0 commit comments

Comments
 (0)