我遇到了一个奇怪的情况。
我正在使用ReactiveMongoRepository来获取我的对象:
interface MyDocumentRepository : ReactiveMongoRepository<MyDocument, String> {
findByArg1AndArg2(arg1: String, arg2 : String) : Mono<MyDocument>
// there is maximum 1 document in the DB with following params
}
然后我有两个使用此方法的代码片段。第一个使用反应性上下文,第二个-首先尝试阻止。它们都在相同的数据库和相同的方法参数中使用相同的表。
第一:
myDocumentRepository.finByArg1AndArg2("arg1", "agr2").map{
log.debug("my document's field ${myDocument.field1}")
//the flow comes here, logs the content of my document and goes further
}
秒:
val myDocument = myDocumentRepository.finByArg1AndArg2("arg1", "arg2").block()
log.debug("my document $myDocument") // the flow never comes here and does not go further
但是在第一种情况下,在第二种情况下发现了对象,系统被卡住并(可能)陷入无限循环,因此什么也不返回。
在我上次进行测试时,它肯定已经在几周前工作了。从那时起,仅更改了Spring Boot Webflux版本。
它肯定适用于嵌入式mongo,因为测试仍然不会抱怨并且仍然会返回某些内容。
你知道会发生什么吗?