Skip to content

Commit 275dbc0

Browse files
authored
Remove write and read concern from Atlas Search Index commands. (#1241)
JAVA-5233
1 parent 616ab9d commit 275dbc0

File tree

9 files changed

+53
-47
lines changed

9 files changed

+53
-47
lines changed

driver-core/src/main/com/mongodb/internal/operation/AbstractWriteSearchIndexOperation.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import com.mongodb.MongoCommandException;
2121
import com.mongodb.MongoNamespace;
22-
import com.mongodb.WriteConcern;
2322
import com.mongodb.internal.async.SingleResultCallback;
2423
import com.mongodb.internal.binding.AsyncWriteBinding;
2524
import com.mongodb.internal.binding.WriteBinding;
@@ -40,12 +39,9 @@
4039
*/
4140
abstract class AbstractWriteSearchIndexOperation implements AsyncWriteOperation<Void>, WriteOperation<Void> {
4241
private final MongoNamespace namespace;
43-
private final WriteConcern writeConcern;
4442

45-
AbstractWriteSearchIndexOperation(final MongoNamespace mongoNamespace,
46-
final WriteConcern writeConcern) {
43+
AbstractWriteSearchIndexOperation(final MongoNamespace mongoNamespace) {
4744
this.namespace = mongoNamespace;
48-
this.writeConcern = writeConcern;
4945
}
5046

5147
@Override
@@ -101,8 +97,4 @@ <E extends Throwable> void swallowOrThrow(@Nullable final E mongoExecutionExcept
10197
MongoNamespace getNamespace() {
10298
return namespace;
10399
}
104-
105-
WriteConcern getWriteConcern() {
106-
return writeConcern;
107-
}
108100
}

driver-core/src/main/com/mongodb/internal/operation/CreateSearchIndexesOperation.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package com.mongodb.internal.operation;
1818

1919
import com.mongodb.MongoNamespace;
20-
import com.mongodb.WriteConcern;
2120
import org.bson.BsonArray;
2221
import org.bson.BsonDocument;
2322
import org.bson.BsonString;
@@ -26,7 +25,6 @@
2625
import java.util.stream.Collectors;
2726

2827
import static com.mongodb.assertions.Assertions.assertNotNull;
29-
import static com.mongodb.internal.operation.WriteConcernHelper.appendWriteConcernToCommand;
3028

3129
/**
3230
* An operation that creates one or more Atlas Search indexes.
@@ -37,9 +35,8 @@ final class CreateSearchIndexesOperation extends AbstractWriteSearchIndexOperati
3735
private static final String COMMAND_NAME = "createSearchIndexes";
3836
private final List<SearchIndexRequest> indexRequests;
3937

40-
CreateSearchIndexesOperation(final MongoNamespace namespace, final List<SearchIndexRequest> indexRequests,
41-
final WriteConcern writeConcern) {
42-
super(namespace, writeConcern);
38+
CreateSearchIndexesOperation(final MongoNamespace namespace, final List<SearchIndexRequest> indexRequests) {
39+
super(namespace);
4340
this.indexRequests = assertNotNull(indexRequests);
4441
}
4542

@@ -61,9 +58,7 @@ private static BsonDocument convert(final SearchIndexRequest request) {
6158

6259
@Override
6360
BsonDocument buildCommand() {
64-
BsonDocument command = new BsonDocument(COMMAND_NAME, new BsonString(getNamespace().getCollectionName()))
61+
return new BsonDocument(COMMAND_NAME, new BsonString(getNamespace().getCollectionName()))
6562
.append("indexes", convert(indexRequests));
66-
appendWriteConcernToCommand(getWriteConcern(), command);
67-
return command;
6863
}
6964
}

driver-core/src/main/com/mongodb/internal/operation/DropSearchIndexOperation.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,11 @@
1717
package com.mongodb.internal.operation;
1818

1919
import com.mongodb.MongoNamespace;
20-
import com.mongodb.WriteConcern;
2120
import com.mongodb.lang.Nullable;
2221
import org.bson.BsonDocument;
2322
import org.bson.BsonString;
2423

2524
import static com.mongodb.internal.operation.CommandOperationHelper.isNamespaceError;
26-
import static com.mongodb.internal.operation.WriteConcernHelper.appendWriteConcernToCommand;
2725

2826
/**
2927
* An operation that drops an Alas Search index.
@@ -34,9 +32,8 @@ final class DropSearchIndexOperation extends AbstractWriteSearchIndexOperation {
3432
private static final String COMMAND_NAME = "dropSearchIndex";
3533
private final String indexName;
3634

37-
DropSearchIndexOperation(final MongoNamespace namespace, final String indexName,
38-
final WriteConcern writeConcern) {
39-
super(namespace, writeConcern);
35+
DropSearchIndexOperation(final MongoNamespace namespace, final String indexName) {
36+
super(namespace);
4037
this.indexName = indexName;
4138
}
4239

@@ -49,9 +46,7 @@ <E extends Throwable> void swallowOrThrow(@Nullable final E mongoExecutionExcept
4946

5047
@Override
5148
BsonDocument buildCommand() {
52-
BsonDocument command = new BsonDocument(COMMAND_NAME, new BsonString(getNamespace().getCollectionName()))
49+
return new BsonDocument(COMMAND_NAME, new BsonString(getNamespace().getCollectionName()))
5350
.append("name", new BsonString(indexName));
54-
appendWriteConcernToCommand(getWriteConcern(), command);
55-
return command;
5651
}
5752
}

driver-core/src/main/com/mongodb/internal/operation/Operations.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -651,20 +651,19 @@ CreateSearchIndexesOperation createSearchIndexes(final List<SearchIndexModel> in
651651
.map(this::createSearchIndexRequest)
652652
.collect(Collectors.toList());
653653

654-
return new CreateSearchIndexesOperation(assertNotNull(namespace), indexRequests, writeConcern);
654+
return new CreateSearchIndexesOperation(assertNotNull(namespace), indexRequests);
655655
}
656656

657657
UpdateSearchIndexesOperation updateSearchIndex(final String indexName, final Bson definition) {
658658
BsonDocument definitionDocument = assertNotNull(toBsonDocument(definition));
659659
SearchIndexRequest searchIndexRequest = new SearchIndexRequest(definitionDocument, indexName);
660660

661-
return new UpdateSearchIndexesOperation(assertNotNull(namespace), searchIndexRequest,
662-
writeConcern);
661+
return new UpdateSearchIndexesOperation(assertNotNull(namespace), searchIndexRequest);
663662
}
664663

665664

666665
DropSearchIndexOperation dropSearchIndex(final String indexName) {
667-
return new DropSearchIndexOperation(assertNotNull(namespace), indexName, writeConcern);
666+
return new DropSearchIndexOperation(assertNotNull(namespace), indexName);
668667
}
669668

670669

driver-core/src/main/com/mongodb/internal/operation/UpdateSearchIndexesOperation.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,9 @@
1717
package com.mongodb.internal.operation;
1818

1919
import com.mongodb.MongoNamespace;
20-
import com.mongodb.WriteConcern;
2120
import org.bson.BsonDocument;
2221
import org.bson.BsonString;
2322

24-
import static com.mongodb.internal.operation.WriteConcernHelper.appendWriteConcernToCommand;
25-
2623
/**
2724
* An operation that updates an Atlas Search index.
2825
*
@@ -32,19 +29,16 @@ final class UpdateSearchIndexesOperation extends AbstractWriteSearchIndexOperati
3229
private static final String COMMAND_NAME = "updateSearchIndex";
3330
private final SearchIndexRequest request;
3431

35-
UpdateSearchIndexesOperation(final MongoNamespace namespace, final SearchIndexRequest request,
36-
final WriteConcern writeConcern) {
37-
super(namespace, writeConcern);
32+
UpdateSearchIndexesOperation(final MongoNamespace namespace, final SearchIndexRequest request) {
33+
super(namespace);
3834
this.request = request;
3935
}
4036

4137
@Override
4238
BsonDocument buildCommand() {
43-
BsonDocument command = new BsonDocument(COMMAND_NAME, new BsonString(getNamespace().getCollectionName()))
39+
return new BsonDocument(COMMAND_NAME, new BsonString(getNamespace().getCollectionName()))
4440
.append("name", new BsonString(request.getIndexName()))
4541
.append("definition", request.getDefinition());
46-
appendWriteConcernToCommand(getWriteConcern(), command);
47-
return command;
4842
}
4943
}
5044

driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/MongoCollectionImpl.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -694,7 +694,10 @@ public ListSearchIndexesPublisher<Document> listSearchIndexes() {
694694
@Override
695695
public <TResult> ListSearchIndexesPublisher<TResult> listSearchIndexes(final Class<TResult> resultClass) {
696696
notNull("resultClass", resultClass);
697-
return new ListSearchIndexesPublisherImpl<>(mongoOperationPublisher.withDocumentClass(resultClass));
697+
698+
return new ListSearchIndexesPublisherImpl<>(mongoOperationPublisher
699+
.withReadConcern(ReadConcern.DEFAULT)
700+
.withDocumentClass(resultClass));
698701
}
699702

700703
@Override

driver-sync/src/main/com/mongodb/client/internal/ListSearchIndexesIterableImpl.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,9 @@ final class ListSearchIndexesIterableImpl<TResult> extends MongoIterableImpl<TRe
5353
private final CodecRegistry codecRegistry;
5454

5555
ListSearchIndexesIterableImpl(final MongoNamespace namespace, final OperationExecutor executor,
56-
final ReadConcern readConcern, final Class<TResult> resultClass,
57-
final CodecRegistry codecRegistry, final ReadPreference readPreference,
58-
final boolean retryReads) {
59-
super(null, executor, readConcern, readPreference, retryReads);
56+
final Class<TResult> resultClass, final CodecRegistry codecRegistry,
57+
final ReadPreference readPreference, final boolean retryReads) {
58+
super(null, executor, ReadConcern.DEFAULT, readPreference, retryReads);
6059

6160
this.resultClass = resultClass;
6261
this.operations = new SyncOperations<>(namespace, BsonDocument.class, readPreference, codecRegistry, retryReads);

driver-sync/src/main/com/mongodb/client/internal/MongoCollectionImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -947,7 +947,7 @@ private <TResult> ListIndexesIterable<TResult> createListIndexesIterable(@Nullab
947947
}
948948

949949
private <TResult> ListSearchIndexesIterable<TResult> createListSearchIndexesIterable(final Class<TResult> resultClass) {
950-
return new ListSearchIndexesIterableImpl<>(getNamespace(), executor, readConcern,
950+
return new ListSearchIndexesIterableImpl<>(getNamespace(), executor,
951951
resultClass, codecRegistry, readPreference, retryReads);
952952
}
953953

driver-sync/src/test/functional/com/mongodb/client/AbstractAtlasSearchIndexManagementProseTest.java

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,12 @@
1717
package com.mongodb.client;
1818

1919
import com.mongodb.MongoClientSettings;
20+
import com.mongodb.ReadConcern;
21+
import com.mongodb.WriteConcern;
2022
import com.mongodb.client.model.SearchIndexModel;
23+
import com.mongodb.event.CommandListener;
24+
import com.mongodb.event.CommandStartedEvent;
25+
import org.bson.BsonDocument;
2126
import org.bson.Document;
2227
import org.bson.conversions.Bson;
2328
import org.junit.jupiter.api.AfterEach;
@@ -38,7 +43,9 @@
3843
import java.util.stream.StreamSupport;
3944

4045
import static com.mongodb.ClusterFixture.serverVersionAtLeast;
46+
import static com.mongodb.assertions.Assertions.assertFalse;
4147
import static com.mongodb.client.Fixture.getMongoClientSettings;
48+
import static com.mongodb.client.Fixture.getMongoClientSettingsBuilder;
4249
import static org.hamcrest.MatcherAssert.assertThat;
4350
import static org.hamcrest.Matchers.contains;
4451

@@ -74,8 +81,8 @@ public abstract class AbstractAtlasSearchIndexManagementProseTest {
7481
protected abstract MongoClient createMongoClient(MongoClientSettings settings);
7582

7683
protected AbstractAtlasSearchIndexManagementProseTest() {
77-
Assumptions.assumeTrue(serverVersionAtLeast(6, 0));
78-
Assumptions.assumeTrue(hasAtlasSearchIndexHelperEnabled(), "Atlas Search Index tests are disabled"); //TODO enable by flag
84+
Assumptions.assumeTrue(serverVersionAtLeast(6, 0));
85+
Assumptions.assumeTrue(hasAtlasSearchIndexHelperEnabled(), "Atlas Search Index tests are disabled");
7986
}
8087

8188
private static boolean hasAtlasSearchIndexHelperEnabled() {
@@ -84,7 +91,29 @@ private static boolean hasAtlasSearchIndexHelperEnabled() {
8491

8592
@BeforeEach
8693
public void setUp() {
87-
client = createMongoClient(getMongoClientSettings());
94+
MongoClientSettings mongoClientSettings = getMongoClientSettingsBuilder()
95+
.writeConcern(WriteConcern.MAJORITY)
96+
.readConcern(ReadConcern.MAJORITY)
97+
.addCommandListener(new CommandListener() {
98+
@Override
99+
public void commandStarted(final CommandStartedEvent event) {
100+
/* This test case examines scenarios where the write or read concern is not forwarded to the server
101+
for any Atlas Index Search commands. If a write or read concern is included in the command,
102+
the server will return an error. */
103+
if (isSearchIndexCommand(event)) {
104+
BsonDocument command = event.getCommand();
105+
assertFalse(command.containsKey("writeConcern"));
106+
assertFalse(command.containsKey("readConcern"));
107+
}
108+
}
109+
110+
private boolean isSearchIndexCommand(final CommandStartedEvent event) {
111+
return event.getCommand().toJson().contains("SearchIndex");
112+
}
113+
})
114+
.build();
115+
116+
client = createMongoClient(mongoClientSettings);
88117
db = client.getDatabase("test");
89118

90119
String collectionName = UUID.randomUUID().toString();

0 commit comments

Comments
 (0)