ReactiveCrudRespository永远不会从SaveAll返回

时间:2017-10-14 20:19:44

标签: spring mongodb spring-boot

启动时,我检查一些数据,如果没有,则尝试保存一些默认值(暂时用于测试)。

val subs = repo.findAll().toIterable()

if(subs.none()) {
    repo.saveAll(defaults.map { Source(it.link.hashCode().toLong(), it::class.java.canonicalName, arrayOf(it.link)) }).blockLast()
}

在第一次运行时,我们将到达saveAll()但从不取消阻止。数据保存在MongoDB中,我可以用Robo 3t确认。

实际存在数据的后续运行将导致第一个findAll永不解锁。

MongoDB中的分析似乎显示成功的查询。

Profile of findAll() query

我的资源库和实体如下:

interface SourceRepository : ReactiveCrudRepository<Source, Long> {
    //
}

data class Source(
        @Id val id: Long,
        val type: String,
        val params: Array<String>
) 

这是在Kotlin,针对Spring Boot 2.0.0.M4。我的目标是在docker中运行的MongoDB实例。如果我删除了这一点启动逻辑,我的其他ReactiveCrudRepository能够正常读/写,永不阻塞。

工作存储库的saveAll()调用也在blockLast()中结束,因为我发现如果没有这个,保存将永远不会发生。

0 个答案:

没有答案