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

Commit b1a7a8a

Browse files
committed
#371 Multiple paths can now be specified for replica data directories
1 parent 530ed42 commit b1a7a8a

File tree

5 files changed

+54
-10
lines changed

5 files changed

+54
-10
lines changed

src/main/java/com/marklogic/appdeployer/AppConfig.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ public class AppConfig {
185185
private Map<String, List<String>> databaseDataDirectories;
186186
private Map<String, String> databaseFastDataDirectories;
187187
private Map<String, String> databaseLargeDataDirectories;
188-
private Map<String, String> databaseReplicaDataDirectories;
188+
private Map<String, List<String>> databaseReplicaDataDirectories;
189189
private Map<String, String> databaseReplicaFastDataDirectories;
190190
private Map<String, String> databaseReplicaLargeDataDirectories;
191191

@@ -1074,11 +1074,11 @@ public void setForestLargeDataDirectory(String forestLargeDataDirectory) {
10741074
this.forestLargeDataDirectory = forestLargeDataDirectory;
10751075
}
10761076

1077-
public Map<String, String> getDatabaseReplicaDataDirectories() {
1077+
public Map<String, List<String>> getDatabaseReplicaDataDirectories() {
10781078
return databaseReplicaDataDirectories;
10791079
}
10801080

1081-
public void setDatabaseReplicaDataDirectories(Map<String, String> databaseReplicaDataDirectories) {
1081+
public void setDatabaseReplicaDataDirectories(Map<String, List<String>> databaseReplicaDataDirectories) {
10821082
this.databaseReplicaDataDirectories = databaseReplicaDataDirectories;
10831083
}
10841084

src/main/java/com/marklogic/appdeployer/DefaultAppConfigFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,7 @@ public void initialize() {
478478

479479
propertyConsumerMap.put("mlDatabaseReplicaDataDirectories", (config, prop) -> {
480480
logger.info("Databases and replica forest data directories: " + prop);
481-
config.setDatabaseReplicaDataDirectories(buildMapFromCommaDelimitedString(prop));
481+
config.setDatabaseReplicaDataDirectories(buildMapOfListsFromDelimitedString(prop));
482482
});
483483

484484
propertyConsumerMap.put("mlDatabaseReplicaFastDataDirectories", (config, prop) -> {

src/main/java/com/marklogic/appdeployer/command/forests/ForestBuilder.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -233,11 +233,11 @@ protected List<String> determineReplicaDataDirectories(ForestPlan forestPlan, Ap
233233
replicaDataDirectories.add(appConfig.getReplicaForestDataDirectory());
234234
}
235235

236-
Map<String, String> replicaDataDirectoryMap = appConfig.getDatabaseReplicaDataDirectories();
236+
Map<String, List<String>> replicaDataDirectoryMap = appConfig.getDatabaseReplicaDataDirectories();
237237
final String databaseName = forestPlan.getDatabaseName();
238238
if (replicaDataDirectoryMap != null && replicaDataDirectoryMap.containsKey(databaseName)) {
239239
replicaDataDirectories = new ArrayList<>();
240-
replicaDataDirectories.add(replicaDataDirectoryMap.get(databaseName));
240+
replicaDataDirectories.addAll(replicaDataDirectoryMap.get(databaseName));
241241
}
242242

243243
return replicaDataDirectories;

src/test/java/com/marklogic/appdeployer/DefaultAppConfigFactoryTest.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@ public void mostProperties() {
343343
p.setProperty("mlDatabaseFastDataDirectories", "Documents,/fast/documents,Security,/fast/security");
344344
p.setProperty("mlDatabaseLargeDataDirectories", "Documents,/large/documents,Security,/large/security");
345345

346-
p.setProperty("mlDatabaseReplicaDataDirectories", "Documents,/data/replicas,Security,/data/security/replicas");
346+
p.setProperty("mlDatabaseReplicaDataDirectories", "Documents,/data/replicas|/data/replicas2,Security,/data/security/replicas");
347347
p.setProperty("mlDatabaseReplicaFastDataDirectories", "Documents,/fast/replicas,Security,/fast/security/replicas");
348348
p.setProperty("mlDatabaseReplicaLargeDataDirectories", "Documents,/large/replicas,Security,/large/security/replicas");
349349

@@ -505,9 +505,11 @@ public void mostProperties() {
505505
assertEquals("/large/documents", map.get("Documents"));
506506
assertEquals("/large/security", map.get("Security"));
507507

508-
map = config.getDatabaseReplicaDataDirectories();
509-
assertEquals("/data/replicas", map.get("Documents"));
510-
assertEquals("/data/security/replicas", map.get("Security"));
508+
mapOfLists = config.getDatabaseReplicaDataDirectories();
509+
assertEquals("/data/replicas", mapOfLists.get("Documents").get(0));
510+
assertEquals("/data/replicas2", mapOfLists.get("Documents").get(1));
511+
assertEquals("/data/security/replicas", mapOfLists.get("Security").get(0));
512+
511513
map = config.getDatabaseReplicaFastDataDirectories();
512514
assertEquals("/fast/replicas", map.get("Documents"));
513515
assertEquals("/fast/security/replicas", map.get("Security"));

src/test/java/com/marklogic/appdeployer/command/forests/BuildForestReplicaTest.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,48 @@ public void databaseSpecificReplicaDirectories() {
180180
assertEquals("/my/replica/large", replica.getLargeDataDirectory());
181181
}
182182

183+
@Test
184+
public void multipleReplicaDataDirectories() {
185+
AppConfig config = newAppConfig("mlDatabaseReplicaDataDirectories", "my-database,/path1|/path2");
186+
187+
List<Forest> forests = builder.buildForests(
188+
new ForestPlan("my-database", "host1", "host2", "host3").withReplicaCount(2), config);
189+
190+
Forest f1 = forests.get(0);
191+
assertEquals("my-database-1", f1.getForestName());
192+
assertEquals("my-database-1-replica-1", f1.getForestReplica().get(0).getReplicaName());
193+
assertEquals("host2", f1.getForestReplica().get(0).getHost());
194+
assertEquals("/path1", f1.getForestReplica().get(0).getDataDirectory());
195+
assertEquals("my-database-1-replica-2", f1.getForestReplica().get(1).getReplicaName());
196+
assertEquals("host3", f1.getForestReplica().get(1).getHost());
197+
assertEquals("/path2", f1.getForestReplica().get(1).getDataDirectory());
198+
199+
Forest f2 = forests.get(1);
200+
assertEquals("my-database-2", f2.getForestName());
201+
assertEquals("my-database-2-replica-1", f2.getForestReplica().get(0).getReplicaName());
202+
assertEquals("host3", f2.getForestReplica().get(0).getHost());
203+
assertEquals("/path1", f2.getForestReplica().get(0).getDataDirectory());
204+
assertEquals("my-database-2-replica-2", f2.getForestReplica().get(1).getReplicaName());
205+
assertEquals("host1", f2.getForestReplica().get(1).getHost());
206+
assertEquals("/path2", f2.getForestReplica().get(1).getDataDirectory());
207+
208+
Forest f3 = forests.get(2);
209+
assertEquals("my-database-3", f3.getForestName());
210+
assertEquals("my-database-3-replica-1", f3.getForestReplica().get(0).getReplicaName());
211+
assertEquals("host1", f3.getForestReplica().get(0).getHost());
212+
assertEquals("/path1", f3.getForestReplica().get(0).getDataDirectory());
213+
assertEquals("my-database-3-replica-2", f3.getForestReplica().get(1).getReplicaName());
214+
assertEquals("host2", f3.getForestReplica().get(1).getHost());
215+
assertEquals("/path2", f3.getForestReplica().get(1).getDataDirectory());
216+
217+
// for (Forest forest : forests) {
218+
// System.out.println(forest.getForestName());
219+
// for (ForestReplica replica : forest.getForestReplica()) {
220+
// System.out.println(replica.getHost() + ":" + replica.getDataDirectory());
221+
// }
222+
// }
223+
}
224+
183225
private void addCustomNamingStrategy(AppConfig appConfig) {
184226
appConfig.getForestNamingStrategies().put("my-database", new ForestNamingStrategy() {
185227
@Override

0 commit comments

Comments
 (0)