Skip to content

Commit 1e28465

Browse files
committed
MLE-25782 Refactor: Explicit naming of writeSet objects
Was going crazy trying to figure out if a "writeSet" was a BatchWriteSet or DocumentWriteSet. Now using more explicit names.
1 parent a035b8e commit 1e28465

File tree

3 files changed

+36
-32
lines changed

3 files changed

+36
-32
lines changed

marklogic-client-api/src/main/java/com/marklogic/client/datamovement/impl/BatchWriteSet.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,14 @@
1212

1313
import java.util.function.Consumer;
1414

15+
/**
16+
* Mutable class that captures the documents to be written. Documents are added via calls to "getDocumentWriteSet()", where the
17+
* DocumentWriteSet is empty when this class is constructed.
18+
*/
1519
class BatchWriteSet {
1620

1721
private final WriteBatcher batcher;
18-
private final DocumentWriteSet writeSet;
22+
private final DocumentWriteSet documentWriteSet;
1923
private final long batchNumber;
2024
private final DatabaseClient client;
2125
private final ServerTransform transform;
@@ -27,15 +31,15 @@ class BatchWriteSet {
2731

2832
BatchWriteSet(WriteBatcher batcher, DatabaseClient hostClient, ServerTransform transform, String temporalCollection, long batchNumber) {
2933
this.batcher = batcher;
30-
this.writeSet = hostClient.newDocumentManager().newWriteSet();
34+
this.documentWriteSet = hostClient.newDocumentManager().newWriteSet();
3135
this.client = hostClient;
3236
this.transform = transform;
3337
this.temporalCollection = temporalCollection;
3438
this.batchNumber = batchNumber;
3539
}
3640

37-
public DocumentWriteSet getWriteSet() {
38-
return writeSet;
41+
public DocumentWriteSet getDocumentWriteSet() {
42+
return documentWriteSet;
3943
}
4044

4145
public long getBatchNumber() {
@@ -82,7 +86,7 @@ public WriteBatch getBatchOfWriteEvents() {
8286
.withJobWritesSoFar(itemsSoFar)
8387
.withJobTicket(batcher.getJobTicket());
8488

85-
WriteEvent[] writeEvents = getWriteSet().stream()
89+
WriteEvent[] writeEvents = getDocumentWriteSet().stream()
8690
.map(writeOperation ->
8791
new WriteEventImpl()
8892
.withTargetUri(writeOperation.getUri())

marklogic-client-api/src/main/java/com/marklogic/client/datamovement/impl/BatchWriter.java

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,41 +16,41 @@ class BatchWriter implements Runnable {
1616

1717
private static Logger logger = LoggerFactory.getLogger(WriteBatcherImpl.class);
1818

19-
private final BatchWriteSet writeSet;
19+
private final BatchWriteSet batchWriteSet;
2020

21-
BatchWriter(BatchWriteSet writeSet) {
22-
if (writeSet.getWriteSet().size() == 0) {
21+
BatchWriter(BatchWriteSet batchWriteSet) {
22+
if (batchWriteSet.getDocumentWriteSet().size() == 0) {
2323
throw new IllegalStateException("Attempt to write an empty batch");
2424
}
25-
this.writeSet = writeSet;
25+
this.batchWriteSet = batchWriteSet;
2626
}
2727

2828
@Override
2929
public void run() {
3030
try {
31-
logger.trace("begin write batch {} to forest on host \"{}\"", writeSet.getBatchNumber(), writeSet.getClient().getHost());
32-
if (writeSet.getTemporalCollection() == null) {
33-
writeSet.getClient().newDocumentManager().write(
34-
writeSet.getWriteSet(), writeSet.getTransform(), null
31+
logger.trace("begin write batch {} to forest on host \"{}\"", batchWriteSet.getBatchNumber(), batchWriteSet.getClient().getHost());
32+
if (batchWriteSet.getTemporalCollection() == null) {
33+
batchWriteSet.getClient().newDocumentManager().write(
34+
batchWriteSet.getDocumentWriteSet(), batchWriteSet.getTransform(), null
3535
);
3636
} else {
3737
// to get access to the TemporalDocumentManager write overload we need to instantiate
3838
// a JSONDocumentManager or XMLDocumentManager, but we don't want to make assumptions about content
3939
// format, so we'll set the default content format to unknown
40-
XMLDocumentManager docMgr = writeSet.getClient().newXMLDocumentManager();
40+
XMLDocumentManager docMgr = batchWriteSet.getClient().newXMLDocumentManager();
4141
docMgr.setContentFormat(Format.UNKNOWN);
4242
docMgr.write(
43-
writeSet.getWriteSet(), writeSet.getTransform(), null, writeSet.getTemporalCollection()
43+
batchWriteSet.getDocumentWriteSet(), batchWriteSet.getTransform(), null, batchWriteSet.getTemporalCollection()
4444
);
4545
}
4646
closeAllHandles();
47-
Runnable onSuccess = writeSet.getOnSuccess();
47+
Runnable onSuccess = batchWriteSet.getOnSuccess();
4848
if (onSuccess != null) {
4949
onSuccess.run();
5050
}
5151
} catch (Throwable t) {
52-
logger.trace("failed batch sent to forest on host \"{}\"", writeSet.getClient().getHost());
53-
Consumer<Throwable> onFailure = writeSet.getOnFailure();
52+
logger.trace("failed batch sent to forest on host \"{}\"", batchWriteSet.getClient().getHost());
53+
Consumer<Throwable> onFailure = batchWriteSet.getOnFailure();
5454
if (onFailure != null) {
5555
onFailure.accept(t);
5656
}
@@ -59,7 +59,7 @@ public void run() {
5959

6060
private void closeAllHandles() throws Throwable {
6161
Throwable lastThrowable = null;
62-
for (DocumentWriteOperation doc : writeSet.getWriteSet()) {
62+
for (DocumentWriteOperation doc : batchWriteSet.getDocumentWriteSet()) {
6363
try {
6464
if (doc.getContent() instanceof Closeable) {
6565
((Closeable) doc.getContent()).close();
@@ -75,7 +75,7 @@ private void closeAllHandles() throws Throwable {
7575
if (lastThrowable != null) throw lastThrowable;
7676
}
7777

78-
public BatchWriteSet getWriteSet() {
79-
return writeSet;
78+
public BatchWriteSet getBatchWriteSet() {
79+
return batchWriteSet;
8080
}
8181
}

marklogic-client-api/src/main/java/com/marklogic/client/datamovement/impl/WriteBatcherImpl.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ public WriteBatcher add(DocumentWriteOperation writeOperation) {
204204
BatchWriteSet writeSet = newBatchWriteSet();
205205
int minBatchSize = 0;
206206
if(defaultMetadata != null) {
207-
writeSet.getWriteSet().add(new DocumentWriteOperationImpl(OperationType.METADATA_DEFAULT, null, defaultMetadata, null));
207+
writeSet.getDocumentWriteSet().add(new DocumentWriteOperationImpl(OperationType.METADATA_DEFAULT, null, defaultMetadata, null));
208208
minBatchSize = 1;
209209
}
210210
for (int i=0; i < getBatchSize(); i++ ) {
@@ -213,9 +213,9 @@ public WriteBatcher add(DocumentWriteOperation writeOperation) {
213213
// strange, there should have been a full batch of docs in the queue...
214214
break;
215215
}
216-
writeSet.getWriteSet().add(doc);
216+
writeSet.getDocumentWriteSet().add(doc);
217217
}
218-
if ( writeSet.getWriteSet().size() > minBatchSize ) {
218+
if ( writeSet.getDocumentWriteSet().size() > minBatchSize ) {
219219
threadPool.submit( new BatchWriter(writeSet) );
220220
}
221221
}
@@ -326,7 +326,7 @@ private void retry(WriteBatch batch, boolean callFailListeners) {
326326
});
327327
}
328328
for (WriteEvent doc : batch.getItems()) {
329-
writeSet.getWriteSet().add(doc.getTargetUri(), doc.getMetadata(), doc.getContent());
329+
writeSet.getDocumentWriteSet().add(doc.getTargetUri(), doc.getMetadata(), doc.getContent());
330330
}
331331
BatchWriter runnable = new BatchWriter(writeSet);
332332
runnable.run();
@@ -392,12 +392,12 @@ private void flush(boolean waitForCompletion) {
392392
}
393393
BatchWriteSet writeSet = newBatchWriteSet();
394394
if(defaultMetadata != null) {
395-
writeSet.getWriteSet().add(new DocumentWriteOperationImpl(OperationType.METADATA_DEFAULT, null, defaultMetadata, null));
395+
writeSet.getDocumentWriteSet().add(new DocumentWriteOperationImpl(OperationType.METADATA_DEFAULT, null, defaultMetadata, null));
396396
}
397397
int j=0;
398398
for ( ; j < getBatchSize() && iter.hasNext(); j++ ) {
399399
DocumentWriteOperation doc = iter.next();
400-
writeSet.getWriteSet().add(doc);
400+
writeSet.getDocumentWriteSet().add(doc);
401401
}
402402
threadPool.submit( new BatchWriter(writeSet) );
403403
}
@@ -406,7 +406,7 @@ private void flush(boolean waitForCompletion) {
406406
}
407407

408408
private void sendSuccessToListeners(BatchWriteSet batchWriteSet) {
409-
batchWriteSet.setItemsSoFar(itemsSoFar.addAndGet(batchWriteSet.getWriteSet().size()));
409+
batchWriteSet.setItemsSoFar(itemsSoFar.addAndGet(batchWriteSet.getDocumentWriteSet().size()));
410410
WriteBatch batch = batchWriteSet.getBatchOfWriteEvents();
411411
for ( WriteBatchListener successListener : successListeners ) {
412412
try {
@@ -606,16 +606,16 @@ public synchronized WriteBatcher withForestConfig(ForestConfiguration forestConf
606606
for ( Runnable task : tasks ) {
607607
if ( task instanceof BatchWriter ) {
608608
BatchWriter writerTask = (BatchWriter) task;
609-
if ( removedHostInfos.containsKey(writerTask.getWriteSet().getClient().getHost()) ) {
609+
if ( removedHostInfos.containsKey(writerTask.getBatchWriteSet().getClient().getHost()) ) {
610610
// this batch was targeting a host that's no longer on the list
611611
// if we re-add these docs they'll now be in batches that target acceptable hosts
612-
BatchWriteSet writeSet = newBatchWriteSet(writerTask.getWriteSet().getBatchNumber());
612+
BatchWriteSet writeSet = newBatchWriteSet(writerTask.getBatchWriteSet().getBatchNumber());
613613
writeSet.onFailure(throwable -> {
614614
if ( throwable instanceof RuntimeException ) throw (RuntimeException) throwable;
615615
else throw new DataMovementException("Failed to retry batch after failover", throwable);
616616
});
617-
for ( WriteEvent doc : writerTask.getWriteSet().getBatchOfWriteEvents().getItems() ) {
618-
writeSet.getWriteSet().add(doc.getTargetUri(), doc.getMetadata(), doc.getContent());
617+
for ( WriteEvent doc : writerTask.getBatchWriteSet().getBatchOfWriteEvents().getItems() ) {
618+
writeSet.getDocumentWriteSet().add(doc.getTargetUri(), doc.getMetadata(), doc.getContent());
619619
}
620620
BatchWriter retryWriterTask = new BatchWriter(writeSet);
621621
Runnable fretryWriterTask = (Runnable) threadPool.submit(retryWriterTask);

0 commit comments

Comments
 (0)