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

Commit c0f15ef

Browse files
committed
#121 DefaultSchemasLoader defaults to one thread
1 parent 7b7cbf6 commit c0f15ef

File tree

4 files changed

+19
-4
lines changed

4 files changed

+19
-4
lines changed

src/main/java/com/marklogic/client/ext/batch/BatchWriterSupport.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,4 +114,8 @@ protected WriteListener getWriteListener() {
114114
public void setWriteListener(WriteListener writeListener) {
115115
this.writeListener = writeListener;
116116
}
117+
118+
public int getThreadCount() {
119+
return threadCount;
120+
}
117121
}

src/main/java/com/marklogic/client/ext/schemasloader/impl/DefaultSchemasLoader.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22

33
import com.marklogic.client.DatabaseClient;
44
import com.marklogic.client.ext.batch.BatchWriter;
5+
import com.marklogic.client.ext.batch.RestBatchWriter;
56
import com.marklogic.client.ext.file.DocumentFile;
67
import com.marklogic.client.ext.file.GenericFileLoader;
78
import com.marklogic.client.ext.modulesloader.impl.DefaultFileFilter;
89
import com.marklogic.client.ext.schemasloader.SchemasLoader;
910

1011
import java.util.List;
12+
import java.util.function.Supplier;
1113

1214
public class DefaultSchemasLoader extends GenericFileLoader implements SchemasLoader {
1315

@@ -34,7 +36,15 @@ public DefaultSchemasLoader(DatabaseClient schemasDatabaseClient) {
3436
* @param tdeValidationDatabase
3537
*/
3638
public DefaultSchemasLoader(DatabaseClient schemasDatabaseClient, String tdeValidationDatabase) {
37-
super(schemasDatabaseClient);
39+
super(((Supplier<BatchWriter>) () -> {
40+
RestBatchWriter writer = new RestBatchWriter(schemasDatabaseClient);
41+
// Default this to 1, as it's not typical to have such a large number of schemas to load that multiple threads
42+
// are needed. This also ensures that if an error occurs when loading a schema, it's thrown to the client.
43+
writer.setThreadCount(1);
44+
writer.setReleaseDatabaseClients(false);
45+
return writer;
46+
}).get());
47+
3848
this.schemasDatabaseClient = schemasDatabaseClient;
3949
this.tdeValidationDatabase = tdeValidationDatabase;
4050
initializeDefaultSchemasLoader();

src/test/java/com/marklogic/client/ext/schemasloader/impl/LoadRulesetsTest.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,6 @@ public void test() {
2828
assertTrue(collections.contains("ruleset-xyz"));
2929

3030
DocumentMetadataHandle.DocumentPermissions perms = helper.getMetadata("/ruleset1.xml").getPermissions();
31-
assertEquals("Should have the two default perms plus the two custom ones", 4, perms.size());
32-
assertEquals(DocumentMetadataHandle.Capability.READ, perms.get("rest-reader").iterator().next());
33-
assertEquals(DocumentMetadataHandle.Capability.UPDATE, perms.get("rest-writer").iterator().next());
3431
assertEquals(DocumentMetadataHandle.Capability.READ, perms.get("rest-admin").iterator().next());
3532
assertEquals(DocumentMetadataHandle.Capability.UPDATE, perms.get("manage-admin").iterator().next());
3633
}

src/test/java/com/marklogic/client/ext/schemasloader/impl/LoadSchemasTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.marklogic.client.ext.schemasloader.impl;
22

3+
import com.marklogic.client.ext.batch.RestBatchWriter;
34
import com.marklogic.client.ext.file.DocumentFile;
45
import com.marklogic.client.ext.helper.ClientHelper;
56
import org.junit.Test;
@@ -12,6 +13,9 @@ public class LoadSchemasTest extends AbstractSchemasTest {
1213
@Test
1314
public void test() {
1415
DefaultSchemasLoader loader = new DefaultSchemasLoader(client);
16+
RestBatchWriter writer = (RestBatchWriter)loader.getBatchWriter();
17+
assertEquals("Should default to 1 so that any error from loading a document " +
18+
"into a schemas database is immediately thrown to the client", 1, writer.getThreadCount());
1519

1620
List<DocumentFile> files = loader.loadSchemas(Paths.get("src", "test", "resources", "schemas").toString());
1721
assertEquals(5, files.size());

0 commit comments

Comments
 (0)