diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java
index 5b6b3a80a..a82c6d5a3 100644
--- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java
+++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java
@@ -1191,7 +1191,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware,
/**
* Prepare the collection before any processing is done using it. This allows a convenient way to apply settings like
- * slaveOk() etc. Can be overridden in sub-classes.
+ * withCodecRegistry() etc. Can be overridden in sub-classes.
*
* @param collection
*/
diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java
index 6c7deeccd..5487beae2 100644
--- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java
+++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java
@@ -2458,7 +2458,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati
/**
* Prepare the collection before any processing is done using it. This allows a convenient way to apply settings like
- * slaveOk() etc. Can be overridden in sub-classes.
+ * withCodecRegistry() etc. Can be overridden in sub-classes.
*
* @param collection
*/
diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/PrefixingDelegatingAggregationOperationContext.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/PrefixingDelegatingAggregationOperationContext.java
index 86464e726..9d72ad414 100644
--- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/PrefixingDelegatingAggregationOperationContext.java
+++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/PrefixingDelegatingAggregationOperationContext.java
@@ -30,7 +30,7 @@ import org.springframework.data.mongodb.core.aggregation.ExposedFields.FieldRefe
* {@link AggregationOperationContext} implementation prefixing non-command keys on root level with the given prefix.
* Useful when mapping fields to domain specific types while having to prefix keys for query purpose.
*
- * Fields to be excluded from prefixing my be added to a {@literal blacklist}.
+ * Fields to be excluded from prefixing my be added to a {@literal denylist}.
*
* @author Christoph Strobl
* @author Mark Paluch
@@ -40,18 +40,18 @@ public class PrefixingDelegatingAggregationOperationContext implements Aggregati
private final AggregationOperationContext delegate;
private final String prefix;
- private final Set blacklist;
+ private final Set denylist;
public PrefixingDelegatingAggregationOperationContext(AggregationOperationContext delegate, String prefix) {
this(delegate, prefix, Collections.emptySet());
}
public PrefixingDelegatingAggregationOperationContext(AggregationOperationContext delegate, String prefix,
- Collection blacklist) {
+ Collection denylist) {
this.delegate = delegate;
this.prefix = prefix;
- this.blacklist = new HashSet<>(blacklist);
+ this.denylist = new HashSet<>(denylist);
}
/*
@@ -102,7 +102,7 @@ public class PrefixingDelegatingAggregationOperationContext implements Aggregati
}
private String prefixKey(String key) {
- return (key.startsWith("$") || isBlacklisted(key)) ? key : (prefix + "." + key);
+ return (key.startsWith("$") || isDenied(key)) ? key : (prefix + "." + key);
}
private Object prefixCollection(Collection sourceCollection) {
@@ -120,9 +120,9 @@ public class PrefixingDelegatingAggregationOperationContext implements Aggregati
return prefixed;
}
- private boolean isBlacklisted(String key) {
+ private boolean isDenied(String key) {
- if (blacklist.contains(key)) {
+ if (denylist.contains(key)) {
return true;
}
@@ -130,8 +130,8 @@ public class PrefixingDelegatingAggregationOperationContext implements Aggregati
return false;
}
- for (String blacklisted : blacklist) {
- if (key.startsWith(blacklisted + ".")) {
+ for (String denied : denylist) {
+ if (key.startsWith(denied + ".")) {
return true;
}
}
diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/ChangeStreamTask.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/ChangeStreamTask.java
index 7fa34a791..2fe8c484b 100644
--- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/ChangeStreamTask.java
+++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/ChangeStreamTask.java
@@ -63,7 +63,7 @@ import com.mongodb.client.model.changestream.FullDocument;
*/
class ChangeStreamTask extends CursorReadingTask, Object> {
- private final Set blacklist = new HashSet<>(
+ private final Set denylist = new HashSet<>(
Arrays.asList("operationType", "fullDocument", "documentKey", "updateDescription", "ns"));
private final QueryMapper queryMapper;
@@ -165,7 +165,7 @@ class ChangeStreamTask extends CursorReadingTask,
template.getConverter().getMappingContext(), queryMapper)
: Aggregation.DEFAULT_CONTEXT;
- return agg.toPipeline(new PrefixingDelegatingAggregationOperationContext(context, "fullDocument", blacklist));
+ return agg.toPipeline(new PrefixingDelegatingAggregationOperationContext(context, "fullDocument", denylist));
}
if (filter instanceof List) {
diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Meta.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Meta.java
index 26e56c4b0..b357fe524 100644
--- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Meta.java
+++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Meta.java
@@ -284,9 +284,21 @@ public class Meta {
*/
EXHAUST,
- /** Allows querying of a replica slave. */
+ /**
+ * Allows querying of a replica.
+ *
+ * @deprecated since 3.0.2, use {@link #SECONDARY_READS} instead.
+ */
+ @Deprecated
SLAVE_OK,
+ /**
+ * Allows querying of a replica.
+ *
+ * @since 3.0.2
+ */
+ SECONDARY_READS,
+
/**
* Sets the cursor to return partial data from a query against a sharded cluster in which some shards do not respond
* rather than throwing an error.
diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Query.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Query.java
index 18525b539..8e4facc15 100644
--- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Query.java
+++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Query.java
@@ -418,18 +418,33 @@ public class Query {
}
/**
- * Allows querying of a replica slave.
+ * Allows querying of a replica.
*
* @return this.
* @see org.springframework.data.mongodb.core.query.Meta.CursorOption#SLAVE_OK
* @since 1.10
+ * @deprecated since 3.0.2, use {@link #allowSecondaryReads()}.
*/
+ @Deprecated
public Query slaveOk() {
meta.addFlag(Meta.CursorOption.SLAVE_OK);
return this;
}
+ /**
+ * Allows querying of a replica.
+ *
+ * @return this.
+ * @see org.springframework.data.mongodb.core.query.Meta.CursorOption#SECONDARY_READS
+ * @since 3.0.2
+ */
+ public Query allowSecondaryReads() {
+
+ meta.addFlag(Meta.CursorOption.SECONDARY_READS);
+ return this;
+ }
+
/**
* @return this.
* @see org.springframework.data.mongodb.core.query.Meta.CursorOption#PARTIAL
diff --git a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.0.xsd b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.0.xsd
index 2b4fbee2b..a179fdb9f 100644
--- a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.0.xsd
+++ b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.0.xsd
@@ -434,7 +434,7 @@ This controls whether or not to fsync. The 'fsync' option to the getlasterror c
diff --git a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.1.xsd b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.1.xsd
index cd81bf328..5c959b812 100644
--- a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.1.xsd
+++ b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.1.xsd
@@ -432,7 +432,7 @@ This controls whether or not to fsync. The 'fsync' option to the getlasterror c
diff --git a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.10.2.xsd b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.10.2.xsd
index 1d4a09be1..6c0fcc67c 100644
--- a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.10.2.xsd
+++ b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.10.2.xsd
@@ -531,7 +531,7 @@ This controls whether or not to fsync. The 'fsync' option to the getlasterror c
diff --git a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.10.xsd b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.10.xsd
index 5d06b0a49..dde5cd0a9 100644
--- a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.10.xsd
+++ b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.10.xsd
@@ -531,7 +531,7 @@ This controls whether or not to fsync. The 'fsync' option to the getlasterror c
diff --git a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.2.xsd b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.2.xsd
index 71dbf8709..f73f940c7 100644
--- a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.2.xsd
+++ b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.2.xsd
@@ -447,7 +447,7 @@ This controls whether or not to fsync. The 'fsync' option to the getlasterror c
diff --git a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.3.xsd b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.3.xsd
index 2aa09c0cd..c9d1b0a25 100644
--- a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.3.xsd
+++ b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.3.xsd
@@ -462,7 +462,7 @@ This controls whether or not to fsync. The 'fsync' option to the getlasterror c
diff --git a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.4.xsd b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.4.xsd
index 33874b3f2..541661c8c 100644
--- a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.4.xsd
+++ b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.4.xsd
@@ -480,7 +480,7 @@ This controls whether or not to fsync. The 'fsync' option to the getlasterror c
diff --git a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.5.xsd b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.5.xsd
index 43ba06bae..1363480b5 100644
--- a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.5.xsd
+++ b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.5.xsd
@@ -498,7 +498,7 @@ This controls whether or not to fsync. The 'fsync' option to the getlasterror c
diff --git a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.7.xsd b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.7.xsd
index ecb082e81..51ff5b3a1 100644
--- a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.7.xsd
+++ b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.7.xsd
@@ -531,7 +531,7 @@ This controls whether or not to fsync. The 'fsync' option to the getlasterror c
diff --git a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.8.xsd b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.8.xsd
index cb02bb191..40d6de36d 100644
--- a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.8.xsd
+++ b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.8.xsd
@@ -537,7 +537,7 @@ This controls whether or not to fsync. The 'fsync' option to the getlasterror c
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java
index fd3f0487d..a4bc7c55f 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java
@@ -1219,7 +1219,7 @@ public class MongoTemplateTests {
assertThat(p5.getFirstName(), is("Mark"));
}
- @Test
+ @Test // DATAMONGO-2572
public void testUsingReadPreference() throws Exception {
this.template.execute("readPref", new CollectionCallback() {
public Object doInCollection(MongoCollection collection)
@@ -1230,9 +1230,9 @@ public class MongoTemplateTests {
return null;
}
});
- MongoTemplate slaveTemplate = new MongoTemplate(factory);
- slaveTemplate.setReadPreference(ReadPreference.secondary());
- slaveTemplate.execute("readPref", new CollectionCallback() {
+ MongoTemplate secondaryTemplate = new MongoTemplate(factory);
+ secondaryTemplate.setReadPreference(ReadPreference.secondary());
+ secondaryTemplate.execute("readPref", new CollectionCallback() {
public Object doInCollection(MongoCollection collection)
throws MongoException, DataAccessException {
assertThat(collection.getReadPreference(), is(ReadPreference.secondary()));
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/MongoQueryMethodUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/MongoQueryMethodUnitTests.java
index b5f13105d..f7a1bdf40 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/MongoQueryMethodUnitTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/MongoQueryMethodUnitTests.java
@@ -210,14 +210,14 @@ public class MongoQueryMethodUnitTests {
containsInAnyOrder(org.springframework.data.mongodb.core.query.Meta.CursorOption.NO_TIMEOUT));
}
- @Test // DATAMONGO-1480
+ @Test // DATAMONGO-1480, DATAMONGO-2572
public void createsMongoQueryMethodWithMultipleFlagsCorrectly() throws Exception {
MongoQueryMethod method = queryMethod(PersonRepository.class, "metaWithMultipleFlags");
assertThat(method.hasQueryMetaAttributes(), is(true));
assertThat(method.getQueryMetaAttributes().getFlags(),
- containsInAnyOrder(org.springframework.data.mongodb.core.query.Meta.CursorOption.NO_TIMEOUT, org.springframework.data.mongodb.core.query.Meta.CursorOption.SLAVE_OK));
+ containsInAnyOrder(org.springframework.data.mongodb.core.query.Meta.CursorOption.NO_TIMEOUT, org.springframework.data.mongodb.core.query.Meta.CursorOption.SECONDARY_READS));
}
@Test // DATAMONGO-1266
@@ -275,7 +275,8 @@ public class MongoQueryMethodUnitTests {
@Meta(flags = { org.springframework.data.mongodb.core.query.Meta.CursorOption.NO_TIMEOUT })
List metaWithNoCursorTimeout();
- @Meta(flags = { org.springframework.data.mongodb.core.query.Meta.CursorOption.NO_TIMEOUT, org.springframework.data.mongodb.core.query.Meta.CursorOption.SLAVE_OK })
+ @Meta(flags = { org.springframework.data.mongodb.core.query.Meta.CursorOption.NO_TIMEOUT,
+ org.springframework.data.mongodb.core.query.Meta.CursorOption.SECONDARY_READS })
List metaWithMultipleFlags();
// DATAMONGO-1266