Skip to content

Commit 1213bcf

Browse files
committed
Remove MongoDB 3.2 support
* Remove wire version check for invalid use of collation * Remove wire version check for invalid use of hint * Remove wire version check for missing user name for X509 authentication JAVA-4298
1 parent aca8ad4 commit 1213bcf

35 files changed

+86
-708
lines changed

.evergreen/.evg.yml

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1507,10 +1507,6 @@ axes:
15071507
display_name: "3.4"
15081508
variables:
15091509
VERSION: "3.4"
1510-
- id: "3.2"
1511-
display_name: "3.2"
1512-
variables:
1513-
VERSION: "3.2"
15141510
- id: os
15151511
display_name: OS
15161512
values:
@@ -1720,7 +1716,7 @@ buildvariants:
17201716
- name: "test"
17211717

17221718
- matrix_name: "tests-jdk8-unsecure"
1723-
matrix_spec: { auth: "noauth", ssl: "nossl", jdk: "jdk8", version: ["3.2", "3.4"], topology: "*", os: "linux" }
1719+
matrix_spec: { auth: "noauth", ssl: "nossl", jdk: "jdk8", version: ["3.4"], topology: "*", os: "linux" }
17241720
display_name: "${version} ${topology} ${auth} ${ssl} ${jdk} ${os} "
17251721
tags: ["tests-variant"]
17261722
tasks:

driver-core/src/main/com/mongodb/connection/ServerDescription.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,12 @@ public class ServerDescription {
5252
* The minimum supported driver server version
5353
* @since 3.8
5454
*/
55-
public static final String MIN_DRIVER_SERVER_VERSION = "3.2";
55+
public static final String MIN_DRIVER_SERVER_VERSION = "3.4";
5656
/**
5757
* The minimum supported driver wire version
5858
* @since 3.8
5959
*/
60-
public static final int MIN_DRIVER_WIRE_VERSION = 4;
60+
public static final int MIN_DRIVER_WIRE_VERSION = 5;
6161
/**
6262
* The maximum supported driver wire version
6363
* @since 3.8

driver-core/src/main/com/mongodb/internal/connection/X509Authenticator.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import static com.mongodb.internal.async.ErrorHandlingResultCallback.errorHandlingCallback;
3434
import static com.mongodb.internal.connection.CommandHelper.executeCommand;
3535
import static com.mongodb.internal.connection.CommandHelper.executeCommandAsync;
36-
import static com.mongodb.internal.operation.ServerVersionHelper.serverIsLessThanVersionThreeDotFour;
3736

3837
class X509Authenticator extends Authenticator implements SpeculativeAuthenticator {
3938
public static final Logger LOGGER = Loggers.getLogger("authenticator");
@@ -50,7 +49,6 @@ void authenticate(final InternalConnection connection, final ConnectionDescripti
5049
return;
5150
}
5251
try {
53-
validateUserName(connectionDescription);
5452
BsonDocument authCommand = getAuthCommand(getMongoCredential().getUserName());
5553
executeCommand(getMongoCredential().getSource(), authCommand, getClusterConnectionMode(), getServerApi(), connection);
5654
} catch (MongoCommandException e) {
@@ -66,7 +64,6 @@ void authenticateAsync(final InternalConnection connection, final ConnectionDesc
6664
} else {
6765
SingleResultCallback<Void> errHandlingCallback = errorHandlingCallback(callback, LOGGER);
6866
try {
69-
validateUserName(connectionDescription);
7067
executeCommandAsync(getMongoCredential().getSource(), getAuthCommand(getMongoCredential().getUserName()),
7168
getClusterConnectionMode(), getServerApi(), connection,
7269
new SingleResultCallback<BsonDocument>() {
@@ -119,11 +116,4 @@ private Throwable translateThrowable(final Throwable t) {
119116
return t;
120117
}
121118
}
122-
123-
private void validateUserName(final ConnectionDescription connectionDescription) {
124-
if (getMongoCredential().getUserName() == null && serverIsLessThanVersionThreeDotFour(connectionDescription)) {
125-
throw new MongoSecurityException(getMongoCredential(), "User name is required for the MONGODB-X509 authentication mechanism "
126-
+ "on server versions less than 3.4");
127-
}
128-
}
129119
}

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@
5454
import static com.mongodb.internal.operation.CommandOperationHelper.executeRetryableReadAsync;
5555
import static com.mongodb.internal.operation.OperationHelper.LOGGER;
5656
import static com.mongodb.internal.operation.OperationHelper.cursorDocumentToQueryResult;
57-
import static com.mongodb.internal.operation.OperationHelper.validateCollation;
5857
import static com.mongodb.internal.operation.OperationReadConcernHelper.appendReadConcernToCommand;
5958

6059
class AggregateOperationImpl<T> implements AsyncReadOperation<AsyncBatchCursor<T>>, ReadOperation<BatchCursor<T>> {
@@ -207,7 +206,6 @@ private CommandCreator getCommandCreator(final SessionContext sessionContext) {
207206
return new CommandCreator() {
208207
@Override
209208
public BsonDocument create(final ServerDescription serverDescription, final ConnectionDescription connectionDescription) {
210-
validateCollation(connectionDescription, collation);
211209
return getCommand(sessionContext, connectionDescription.getMaxWireVersion());
212210
}
213211
};

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

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,7 @@
4242
import static com.mongodb.assertions.Assertions.notNull;
4343
import static com.mongodb.internal.operation.CommandOperationHelper.executeRetryableRead;
4444
import static com.mongodb.internal.operation.CommandOperationHelper.executeRetryableReadAsync;
45-
import static com.mongodb.internal.operation.OperationHelper.validateCollation;
4645
import static com.mongodb.internal.operation.ServerVersionHelper.FIVE_DOT_ZERO_WIRE_VERSION;
47-
import static com.mongodb.internal.operation.ServerVersionHelper.serverIsAtLeastVersionThreeDotFour;
4846
import static com.mongodb.internal.operation.ServerVersionHelper.serverIsAtLeastVersionThreeDotSix;
4947
import static com.mongodb.internal.operation.WriteConcernHelper.appendWriteConcernToCommand;
5048
import static com.mongodb.internal.operation.WriteConcernHelper.throwOnWriteConcernError;
@@ -359,7 +357,6 @@ public void executeAsync(final AsyncReadBinding binding, final SingleResultCallb
359357
}
360358

361359
private BsonDocument getCommand(final ConnectionDescription description) {
362-
validateCollation(description, collation);
363360
BsonValue aggregationTarget = (aggregationLevel == AggregationLevel.DATABASE)
364361
? new BsonInt32(1) : new BsonString(namespace.getCollectionName());
365362

@@ -379,8 +376,8 @@ private BsonDocument getCommand(final ConnectionDescription description) {
379376
commandDocument.put("cursor", new BsonDocument());
380377
}
381378

382-
appendWriteConcernToCommand(writeConcern, commandDocument, description);
383-
if (readConcern != null && !readConcern.isServerDefault() && serverIsAtLeastVersionThreeDotFour(description)) {
379+
appendWriteConcernToCommand(writeConcern, commandDocument);
380+
if (readConcern != null && !readConcern.isServerDefault()) {
384381
commandDocument.put("readConcern", readConcern.asDocument());
385382
}
386383

@@ -398,7 +395,4 @@ private BsonDocument getCommand(final ConnectionDescription description) {
398395
}
399396
return commandDocument;
400397
}
401-
402-
403-
404398
}

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
import static com.mongodb.internal.operation.DocumentHelper.putIfNotNull;
4343
import static com.mongodb.internal.operation.DocumentHelper.putIfNotZero;
4444
import static com.mongodb.internal.operation.OperationHelper.isRetryableWrite;
45-
import static com.mongodb.internal.operation.OperationHelper.validateCollation;
4645
import static com.mongodb.internal.operation.OperationHelper.validateHintForFindAndModify;
4746
import static java.util.concurrent.TimeUnit.MILLISECONDS;
4847

@@ -357,7 +356,6 @@ public BaseFindAndModifyOperation<T> let(final BsonDocument variables) {
357356

358357
private CommandCreator getCommandCreator(final SessionContext sessionContext) {
359358
return (serverDescription, connectionDescription) -> {
360-
validateCollation(connectionDescription, getCollation());
361359
BsonDocument commandDocument = new BsonDocument("findAndModify", new BsonString(getNamespace().getCollectionName()));
362360
putIfNotNull(commandDocument, "query", getFilter());
363361
putIfNotNull(commandDocument, "fields", getProjection());

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

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
import static com.mongodb.internal.operation.CommandOperationHelper.executeRetryableReadAsync;
4040
import static com.mongodb.internal.operation.DocumentHelper.putIfNotNull;
4141
import static com.mongodb.internal.operation.DocumentHelper.putIfNotZero;
42-
import static com.mongodb.internal.operation.OperationHelper.validateCollation;
4342
import static com.mongodb.internal.operation.OperationReadConcernHelper.appendReadConcernToCommand;
4443

4544
public class CountOperation implements AsyncReadOperation<Long>, ReadOperation<Long> {
@@ -143,10 +142,7 @@ private CommandReadTransformerAsync<BsonDocument, Long> asyncTransformer() {
143142
}
144143

145144
private CommandCreator getCommandCreator(final SessionContext sessionContext) {
146-
return (serverDescription, connectionDescription) -> {
147-
validateCollation(connectionDescription, collation);
148-
return getCommand(sessionContext, connectionDescription);
149-
};
145+
return (serverDescription, connectionDescription) -> getCommand(sessionContext, connectionDescription);
150146
}
151147

152148
private BsonDocument getCommand(final SessionContext sessionContext, final ConnectionDescription connectionDescription) {

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

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import com.mongodb.client.model.TimeSeriesOptions;
2424
import com.mongodb.client.model.ValidationAction;
2525
import com.mongodb.client.model.ValidationLevel;
26-
import com.mongodb.connection.ConnectionDescription;
2726
import com.mongodb.internal.async.SingleResultCallback;
2827
import com.mongodb.internal.binding.AsyncWriteBinding;
2928
import com.mongodb.internal.binding.WriteBinding;
@@ -37,7 +36,7 @@
3736
import java.util.ArrayDeque;
3837
import java.util.Deque;
3938
import java.util.List;
40-
import java.util.function.Function;
39+
import java.util.function.Supplier;
4140

4241
import static com.mongodb.assertions.Assertions.notNull;
4342
import static com.mongodb.internal.async.ErrorHandlingResultCallback.errorHandlingCallback;
@@ -50,7 +49,6 @@
5049
import static com.mongodb.internal.operation.DocumentHelper.putIfNotZero;
5150
import static com.mongodb.internal.operation.OperationHelper.LOGGER;
5251
import static com.mongodb.internal.operation.OperationHelper.releasingCallback;
53-
import static com.mongodb.internal.operation.OperationHelper.validateCollation;
5452
import static com.mongodb.internal.operation.OperationHelper.withAsyncConnection;
5553
import static com.mongodb.internal.operation.OperationHelper.withConnection;
5654
import static com.mongodb.internal.operation.WriteConcernHelper.appendWriteConcernToCommand;
@@ -400,9 +398,8 @@ public CreateCollectionOperation encryptedFields(final BsonDocument encryptedFie
400398
@Override
401399
public Void execute(final WriteBinding binding) {
402400
return withConnection(binding, connection -> {
403-
validateCollation(connection, collation);
404401
getCommandFunctions().forEach(commandCreator ->
405-
executeCommand(binding, databaseName, commandCreator.apply(connection.getDescription()), connection,
402+
executeCommand(binding, databaseName, commandCreator.get(), connection,
406403
writeConcernErrorTransformer())
407404
);
408405
return null;
@@ -416,9 +413,8 @@ public void executeAsync(final AsyncWriteBinding binding, final SingleResultCall
416413
if (t != null) {
417414
errHandlingCallback.onResult(null, t);
418415
} else {
419-
validateCollation(connection, collation, (connection1, t1) ->
420-
new ProcessCommandsCallback(binding, connection1, releasingCallback(errHandlingCallback, connection))
421-
.onResult(null, t1));
416+
new ProcessCommandsCallback(binding, connection, releasingCallback(errHandlingCallback, connection))
417+
.onResult(null, null);
422418
}
423419
});
424420
}
@@ -458,16 +454,16 @@ private String getGranularityAsString(final TimeSeriesGranularity granularity) {
458454
* </p>
459455
* @return the list of commands to run to create the collection
460456
*/
461-
private List<Function<ConnectionDescription, BsonDocument>> getCommandFunctions() {
457+
private List<Supplier<BsonDocument>> getCommandFunctions() {
462458
if (encryptedFields == null) {
463459
return singletonList(this::getCreateCollectionCommand);
464460
}
465461
return asList(
466-
connectionDescription -> getCreateEncryptedFieldsCollectionCommand("esc"),
467-
connectionDescription -> getCreateEncryptedFieldsCollectionCommand("ecc"),
468-
connectionDescription -> getCreateEncryptedFieldsCollectionCommand("ecoc"),
462+
() -> getCreateEncryptedFieldsCollectionCommand("esc"),
463+
() -> getCreateEncryptedFieldsCollectionCommand("ecc"),
464+
() -> getCreateEncryptedFieldsCollectionCommand("ecoc"),
469465
this::getCreateCollectionCommand,
470-
connectionDescription -> new BsonDocument("createIndexes", new BsonString(collectionName))
466+
() -> new BsonDocument("createIndexes", new BsonString(collectionName))
471467
.append("indexes", SAFE_CONTENT_ARRAY)
472468
);
473469
}
@@ -480,7 +476,7 @@ private BsonDocument getCreateEncryptedFieldsCollectionCommand(final String coll
480476
.append("clusteredIndex", ENCRYPT_CLUSTERED_INDEX);
481477
}
482478

483-
private BsonDocument getCreateCollectionCommand(final ConnectionDescription description) {
479+
private BsonDocument getCreateCollectionCommand() {
484480
BsonDocument document = new BsonDocument("create", new BsonString(collectionName));
485481
putIfFalse(document, "autoIndexId", autoIndex);
486482
document.put("capped", BsonBoolean.valueOf(capped));
@@ -497,7 +493,7 @@ private BsonDocument getCreateCollectionCommand(final ConnectionDescription desc
497493
if (validationAction != null) {
498494
document.put("validationAction", new BsonString(validationAction.getValue()));
499495
}
500-
appendWriteConcernToCommand(writeConcern, document, description);
496+
appendWriteConcernToCommand(writeConcern, document);
501497
if (collation != null) {
502498
document.put("collation", collation.asDocument());
503499
}
@@ -538,7 +534,7 @@ class ProcessCommandsCallback implements SingleResultCallback<Void> {
538534
private final AsyncWriteBinding binding;
539535
private final AsyncConnection connection;
540536
private final SingleResultCallback<Void> finalCallback;
541-
private final Deque<Function<ConnectionDescription, BsonDocument>> commands;
537+
private final Deque<Supplier<BsonDocument>> commands;
542538

543539
ProcessCommandsCallback(
544540
final AsyncWriteBinding binding, final AsyncConnection connection, final SingleResultCallback<Void> finalCallback) {
@@ -554,11 +550,11 @@ public void onResult(final Void result, final Throwable t) {
554550
finalCallback.onResult(null, t);
555551
return;
556552
}
557-
Function<ConnectionDescription, BsonDocument> nextCommandFunction = commands.poll();
553+
Supplier<BsonDocument> nextCommandFunction = commands.poll();
558554
if (nextCommandFunction == null) {
559555
finalCallback.onResult(null, null);
560556
} else {
561-
executeCommandAsync(binding, databaseName, nextCommandFunction.apply(connection.getDescription()),
557+
executeCommandAsync(binding, databaseName, nextCommandFunction.get(),
562558
connection, writeConcernErrorWriteTransformer(), this);
563559
}
564560
}

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

Lines changed: 15 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
import com.mongodb.MongoNamespace;
2626
import com.mongodb.WriteConcern;
2727
import com.mongodb.WriteConcernResult;
28-
import com.mongodb.internal.async.SingleResultCallback;
2928
import com.mongodb.connection.ConnectionDescription;
29+
import com.mongodb.internal.async.SingleResultCallback;
3030
import com.mongodb.internal.binding.AsyncWriteBinding;
3131
import com.mongodb.internal.binding.WriteBinding;
3232
import com.mongodb.internal.bulk.IndexRequest;
@@ -57,7 +57,6 @@
5757
import static com.mongodb.internal.operation.OperationHelper.CallableWithConnection;
5858
import static com.mongodb.internal.operation.OperationHelper.LOGGER;
5959
import static com.mongodb.internal.operation.OperationHelper.releasingCallback;
60-
import static com.mongodb.internal.operation.OperationHelper.validateIndexRequestCollations;
6160
import static com.mongodb.internal.operation.OperationHelper.withAsyncConnection;
6261
import static com.mongodb.internal.operation.OperationHelper.withConnection;
6362
import static com.mongodb.internal.operation.ServerVersionHelper.serverIsAtLeastVersionFourDotFour;
@@ -193,7 +192,6 @@ public Void execute(final WriteBinding binding) {
193192
@Override
194193
public Void call(final Connection connection) {
195194
try {
196-
validateIndexRequestCollations(connection, requests);
197195
executeCommand(binding, namespace.getDatabaseName(), getCommand(connection.getDescription()),
198196
connection, writeConcernErrorTransformer());
199197
} catch (MongoCommandException e) {
@@ -213,28 +211,19 @@ public void call(final AsyncConnection connection, final Throwable t) {
213211
if (t != null) {
214212
errHandlingCallback.onResult(null, t);
215213
} else {
216-
final SingleResultCallback<Void> wrappedCallback = releasingCallback(errHandlingCallback, connection);
217-
validateIndexRequestCollations(connection, requests, new AsyncCallableWithConnection() {
218-
@Override
219-
public void call(final AsyncConnection connection, final Throwable t) {
220-
if (t != null) {
221-
wrappedCallback.onResult(null, t);
222-
} else {
223-
try {
224-
executeCommandAsync(binding, namespace.getDatabaseName(),
225-
getCommand(connection.getDescription()), connection, writeConcernErrorWriteTransformer(),
226-
new SingleResultCallback<Void>() {
227-
@Override
228-
public void onResult(final Void result, final Throwable t) {
229-
wrappedCallback.onResult(null, translateException(t));
230-
}
231-
});
232-
} catch (Throwable t1) {
233-
wrappedCallback.onResult(null, t1);
234-
}
235-
}
236-
}
237-
});
214+
SingleResultCallback<Void> wrappedCallback = releasingCallback(errHandlingCallback, connection);
215+
try {
216+
executeCommandAsync(binding, namespace.getDatabaseName(),
217+
getCommand(connection.getDescription()), connection, writeConcernErrorWriteTransformer(),
218+
new SingleResultCallback<Void>() {
219+
@Override
220+
public void onResult(final Void result, final Throwable t) {
221+
wrappedCallback.onResult(null, translateException(t));
222+
}
223+
});
224+
} catch (Throwable t1) {
225+
wrappedCallback.onResult(null, t1);
226+
}
238227
}
239228
}
240229
});
@@ -316,7 +305,7 @@ private BsonDocument getCommand(final ConnectionDescription description) {
316305
}
317306
command.put("indexes", new BsonArray(values));
318307
putIfNotZero(command, "maxTimeMS", maxTimeMS);
319-
appendWriteConcernToCommand(writeConcern, command, description);
308+
appendWriteConcernToCommand(writeConcern, command);
320309
if (commitQuorum != null) {
321310
if (serverIsAtLeastVersionFourDotFour(description)) {
322311
command.put("commitQuorum", commitQuorum.toBsonValue());

0 commit comments

Comments
 (0)