ReactiveRepository卡在阻塞上

时间:2019-11-21 12:05:10

标签: mongodb kotlin project-reactor spring-repositories

我遇到了一个奇怪的情况。

我正在使用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,因为测试仍然不会抱怨并且仍然会返回某些内容。

你知道会发生什么吗?

0 个答案:

没有答案