Skip to content

Commit 0a62943

Browse files
committed
fix #287 (backport #286)--ignore all cookies except 'HostId' which is intended to help session affinity for multi-statement transactions. With this change stress tests no longer get bugs 31963 or 32138 or 32366
1 parent 6981c05 commit 0a62943

File tree

10 files changed

+258
-204
lines changed

10 files changed

+258
-204
lines changed

src/main/java/com/marklogic/client/Transaction.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,15 @@ public interface Transaction {
3131
*/
3232
public String getTransactionId();
3333

34+
/**
35+
* Returns the host identifier for the transaction that binds this
36+
* transaction with the host e-node for the transaction. Ordinarily, you
37+
* will not need to do anything with the host id. Instead, you pass the
38+
* Transaction object to methods.
39+
* @return the host identifier
40+
*/
41+
public String getHostId();
42+
3443
/**
3544
* Reads the status for the transaction including whether the transaction
3645
* has timed out.

src/main/java/com/marklogic/client/impl/DatabaseClientImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,17 +61,17 @@ public void setHandleRegistry(HandleFactoryRegistry handleRegistry) {
6161

6262
@Override
6363
public Transaction openTransaction() throws ForbiddenUserException, FailedRequestException {
64-
return new TransactionImpl(services, services.openTransaction(null, TransactionImpl.DEFAULT_TIMELIMIT));
64+
return services.openTransaction(null, TransactionImpl.DEFAULT_TIMELIMIT);
6565
}
6666

6767
@Override
6868
public Transaction openTransaction(String name) throws ForbiddenUserException, FailedRequestException {
69-
return new TransactionImpl(services, services.openTransaction(name, TransactionImpl.DEFAULT_TIMELIMIT));
69+
return services.openTransaction(name, TransactionImpl.DEFAULT_TIMELIMIT);
7070
}
7171

7272
@Override
7373
public Transaction openTransaction(String name, int timeLimit) throws ForbiddenUserException, FailedRequestException{
74-
return new TransactionImpl(services, services.openTransaction(name, timeLimit));
74+
return services.openTransaction(name, timeLimit);
7575
}
7676

7777
@Override

src/main/java/com/marklogic/client/impl/DocumentManagerImpl.java

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,7 @@ public DocumentDescriptor exists(String uri) throws ForbiddenUserException,
153153
@Override
154154
public DocumentDescriptor exists(String uri, Transaction transaction)
155155
throws ForbiddenUserException, FailedRequestException {
156-
return services.head(requestLogger, uri, (transaction == null) ? null
157-
: transaction.getTransactionId());
156+
return services.head(requestLogger, uri, transaction);
158157
}
159158

160159
// shortcut readers
@@ -386,7 +385,7 @@ public <T extends R> T read(DocumentDescriptor desc,
386385
boolean wasModified = services.getDocument(
387386
requestLogger,
388387
desc,
389-
(transaction != null) ? transaction.getTransactionId() : null,
388+
transaction,
390389
(metadataHandle != null) ? processedMetadata : null,
391390
mergeTransformParameters((transform != null) ? transform
392391
: getReadTransform(), extraParams), metadataHandle, contentHandle);
@@ -439,7 +438,7 @@ public DocumentPage read(ServerTransform transform, Transaction transaction,
439438

440439
return services.getBulkDocuments(
441440
requestLogger,
442-
(transaction == null) ? null : transaction.getTransactionId(),
441+
transaction,
443442
// the default for bulk is no metadata, which differs from the normal
444443
// default of ALL
445444
isProcessedMetadataModified ? processedMetadata : null,
@@ -498,7 +497,7 @@ public DocumentPage search(QueryDefinition querydef, long start,
498497
Set<Metadata> metadata = isProcessedMetadataModified ? processedMetadata
499498
: null;
500499
return services.getBulkDocuments(requestLogger, querydef, start,
501-
getPageLength(), tid, searchHandle, searchView, metadata,
500+
getPageLength(), transaction, searchHandle, searchView, metadata,
502501
nonDocumentFormat, null);
503502
}
504503

@@ -552,7 +551,7 @@ public void write(DocumentWriteSet writeSet, ServerTransform transform,
552551
Format defaultFormat = contentFormat;
553552
services.postBulkDocuments(requestLogger, writeSet,
554553
(transform != null) ? transform : getWriteTransform(),
555-
(transaction == null) ? null : transaction.getTransactionId(),
554+
transaction,
556555
defaultFormat, null);
557556
}
558557

@@ -825,7 +824,7 @@ public void write(DocumentDescriptor desc,
825824
services.putDocument(
826825
requestLogger,
827826
desc,
828-
(transaction == null) ? null : transaction.getTransactionId(),
827+
transaction,
829828
(metadataHandle != null) ? processedMetadata : null,
830829
mergeTransformParameters((transform != null) ? transform
831830
: getWriteTransform(), extraParams), metadataHandle, contentHandle);
@@ -896,8 +895,7 @@ public void delete(DocumentDescriptor desc, Transaction transaction,
896895
RequestParameters extraParams = addTemporalParams(new RequestParameters(),
897896
temporalCollection, systemTime);
898897

899-
services.deleteDocument(requestLogger, desc, (transaction == null) ? null
900-
: transaction.getTransactionId(), null, extraParams);
898+
services.deleteDocument(requestLogger, desc, transaction, null, extraParams);
901899
}
902900

903901
// shortcut creators
@@ -1049,7 +1047,7 @@ public DocumentDescriptor create(DocumentUriTemplate template,
10491047
return services.postDocument(
10501048
requestLogger,
10511049
template,
1052-
(transaction == null) ? null : transaction.getTransactionId(),
1050+
transaction,
10531051
(metadataHandle != null) ? processedMetadata : null,
10541052
mergeTransformParameters((transform != null) ? transform
10551053
: getWriteTransform(), extraParams), metadataHandle, contentHandle);
@@ -1109,9 +1107,8 @@ public void patch(DocumentDescriptor desc, DocumentPatchHandle patch,
11091107

11101108
DocumentPatchHandleImpl builtPatch = (patch instanceof DocumentPatchHandleImpl) ? (DocumentPatchHandleImpl) patch
11111109
: null;
1112-
services.patchDocument(requestLogger, desc, (transaction == null) ? null
1113-
: transaction.getTransactionId(),
1114-
(builtPatch != null) ? builtPatch.getMetadata() : processedMetadata,
1110+
services.patchDocument(requestLogger, desc, transaction,
1111+
(builtPatch != null) ? builtPatch.getMetadata() : processedMetadata,
11151112
(builtPatch != null) ? builtPatch.isOnContent() : true, patch);
11161113
}
11171114

@@ -1167,8 +1164,7 @@ public void writeDefaultMetadata(String uri, Transaction transaction)
11671164
logger.info("Resetting metadata for {}", uri);
11681165

11691166
services.deleteDocument(requestLogger,
1170-
new DocumentDescriptorImpl(uri, true), (transaction == null) ? null
1171-
: transaction.getTransactionId(), processedMetadata,
1167+
new DocumentDescriptorImpl(uri, true), transaction, processedMetadata,
11721168
getWriteParams());
11731169
}
11741170

src/main/java/com/marklogic/client/impl/ExtensionLibrariesManagerImpl.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public ExtensionLibraryDescriptor[] list()
5050
public ExtensionLibraryDescriptor[] list(String directory)
5151
throws ResourceNotFoundException, ForbiddenUserException, FailedRequestException {
5252

53-
XMLEventReaderHandle handle = services.getResource(requestLogger, directory, null, new XMLEventReaderHandle());
53+
XMLEventReaderHandle handle = services.getResource(requestLogger, directory, null, null, new XMLEventReaderHandle());
5454

5555
XMLEventReader reader = handle.get();
5656
List<ExtensionLibraryDescriptor> modules = new ArrayList<ExtensionLibraryDescriptor>();
@@ -89,7 +89,7 @@ public <T> T read(ExtensionLibraryDescriptor modulesDescriptor, Class<T> as)
8989
@Override
9090
public <T extends AbstractReadHandle> T read(String modulePath, T readHandle)
9191
throws ResourceNotFoundException, ForbiddenUserException, FailedRequestException {
92-
return services.getResource(requestLogger, modulePath, null, readHandle);
92+
return services.getResource(requestLogger, modulePath, null, null, readHandle);
9393
}
9494
@Override
9595
public <T extends AbstractReadHandle> T read(ExtensionLibraryDescriptor modulesDescriptor, T readHandle)
@@ -129,7 +129,7 @@ private AbstractWriteHandle getContentHandle(Object content) {
129129
@Override
130130
public void write(String modulePath, AbstractWriteHandle contentHandle)
131131
throws ResourceNotFoundException, ResourceNotResendableException, ForbiddenUserException, FailedRequestException {
132-
services.putResource(requestLogger, modulePath, null, contentHandle, null);
132+
services.putResource(requestLogger, modulePath, null, null, contentHandle, null);
133133
}
134134
@Override
135135
public void write(ExtensionLibraryDescriptor modulesDescriptor, AbstractWriteHandle contentHandle)
@@ -138,13 +138,13 @@ public void write(ExtensionLibraryDescriptor modulesDescriptor, AbstractWriteHan
138138
for (Permission perm : modulesDescriptor.getPermissions()) {
139139
requestParams.add("perm:" + perm.getRoleName(), perm.getCapability());
140140
}
141-
services.putResource(requestLogger, modulesDescriptor.getPath(), requestParams, contentHandle, null);
141+
services.putResource(requestLogger, modulesDescriptor.getPath(), null, requestParams, contentHandle, null);
142142
}
143143

144144
@Override
145145
public void delete(String modulePath)
146146
throws ResourceNotFoundException, ForbiddenUserException, FailedRequestException {
147-
services.deleteResource(requestLogger, modulePath, null, null);
147+
services.deleteResource(requestLogger, modulePath, null, null, null);
148148
}
149149
@Override
150150
public void delete(ExtensionLibraryDescriptor modulesDescriptor)

0 commit comments

Comments
 (0)