Browse Source

Apply `AggregationOptions.maxTime` to `MongoTemplate.aggregateStream()`.

Closes #4644
pull/4655/head
Mark Paluch 2 years ago
parent
commit
26d38c8a06
No known key found for this signature in database
GPG Key ID: 55BC6374BAA9D973
  1. 4
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java
  2. 31
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateUnitTests.java

4
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java

@ -2266,6 +2266,10 @@ public class MongoTemplate @@ -2266,6 +2266,10 @@ public class MongoTemplate
cursor = hintFunction.apply(mongoDbFactory, cursor::hintString, cursor::hint);
}
if (options.hasExecutionTimeLimit()) {
cursor = cursor.maxTime(options.getMaxTime().toMillis(), TimeUnit.MILLISECONDS);
}
Class<?> domainType = aggregation instanceof TypedAggregation typedAggregation ? typedAggregation.getInputType()
: null;

31
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateUnitTests.java

@ -48,6 +48,7 @@ import org.mockito.Mock; @@ -48,6 +48,7 @@ import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoSettings;
import org.mockito.quality.Strictness;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationListener;
@ -118,7 +119,15 @@ import com.mongodb.client.MongoClient; @@ -118,7 +119,15 @@ import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.*;
import com.mongodb.client.model.CountOptions;
import com.mongodb.client.model.CreateCollectionOptions;
import com.mongodb.client.model.DeleteOptions;
import com.mongodb.client.model.FindOneAndDeleteOptions;
import com.mongodb.client.model.FindOneAndReplaceOptions;
import com.mongodb.client.model.FindOneAndUpdateOptions;
import com.mongodb.client.model.MapReduceAction;
import com.mongodb.client.model.TimeSeriesGranularity;
import com.mongodb.client.model.UpdateOptions;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
@ -498,6 +507,17 @@ public class MongoTemplateUnitTests extends MongoOperationsUnitTests { @@ -498,6 +507,17 @@ public class MongoTemplateUnitTests extends MongoOperationsUnitTests {
verify(collection).withReadPreference(ReadPreference.secondary());
}
@Test // GH-4644
void aggregateStreamShouldHonorMaxTimeIfSet() {
AggregationOptions options = AggregationOptions.builder().maxTime(Duration.ofSeconds(20)).build();
template.aggregateStream(newAggregation(Aggregation.unwind("foo")).withOptions(options), "collection-1",
Wrapper.class);
verify(aggregateIterable).maxTime(20000, TimeUnit.MILLISECONDS);
}
@Test // DATAMONGO-2153
void aggregateShouldHonorOptionsComment() {
@ -2489,7 +2509,8 @@ public class MongoTemplateUnitTests extends MongoOperationsUnitTests { @@ -2489,7 +2509,8 @@ public class MongoTemplateUnitTests extends MongoOperationsUnitTests {
@Test // GH-4462
void replaceShouldUseHintIfPresent() {
template.replace(new BasicQuery("{}").withHint("index-to-use"), new Sith(), ReplaceOptions.replaceOptions().upsert());
template.replace(new BasicQuery("{}").withHint("index-to-use"), new Sith(),
ReplaceOptions.replaceOptions().upsert());
ArgumentCaptor<com.mongodb.client.model.ReplaceOptions> options = ArgumentCaptor
.forClass(com.mongodb.client.model.ReplaceOptions.class);
@ -2509,7 +2530,8 @@ public class MongoTemplateUnitTests extends MongoOperationsUnitTests { @@ -2509,7 +2530,8 @@ public class MongoTemplateUnitTests extends MongoOperationsUnitTests {
}
});
template.replace(new BasicQuery("{}").withHint("index-to-use"), new Sith(), ReplaceOptions.replaceOptions().upsert());
template.replace(new BasicQuery("{}").withHint("index-to-use"), new Sith(),
ReplaceOptions.replaceOptions().upsert());
verify(collection).withWriteConcern(eq(WriteConcern.UNACKNOWLEDGED));
}
@ -2551,8 +2573,7 @@ public class MongoTemplateUnitTests extends MongoOperationsUnitTests { @@ -2551,8 +2573,7 @@ public class MongoTemplateUnitTests extends MongoOperationsUnitTests {
@Id String id;
String firstname;
public Person() {
}
public Person() {}
public Person(String id, String firstname) {
this.id = id;

Loading…
Cancel
Save