Scala Akka超时资源泄漏

Scala Akka超时资源泄漏,scala,timeout,akka,Scala,Timeout,Akka,我有一个关于Akka暂停的问题 例如,我有一个Supervisor actor,它向DBActor发送一条消息,开始读取数据库。主管将超时设置为5秒 DBActor开始读取数据库;它获取结果集,然后进入循环以迭代结果集行并生成返回值 然后,主管遇到超时异常,并从.recover块返回一个值 我的问题是,;DBActor是否在TimeoutException之后继续在ResultSet中循环?因为这会导致资源泄漏。DBActor独立于主管,将继续处理记录,直到记录完成或被告知停止。主管放弃当前请求

我有一个关于Akka暂停的问题

例如,我有一个Supervisor actor,它向DBActor发送一条消息,开始读取数据库。主管将超时设置为5秒

DBActor开始读取数据库;它获取结果集,然后进入循环以迭代结果集行并生成返回值

然后,主管遇到超时异常,并从.recover块返回一个值


我的问题是,;DBActor是否在TimeoutException之后继续在ResultSet中循环?因为这会导致资源泄漏。

DBActor独立于主管,将继续处理记录,直到记录完成或被告知停止。主管放弃当前请求并不重要,因为DBActor不知道这一点。如果希望进程提前停止,主管必须向DBActor发送另一条消息,告知其中止操作。主管还必须处理超时后结果到达的情况


还要注意,Scala不能泄漏资源,因为它实现了垃圾收集。如果资源在某处积累,那是因为对象持有对该资源的引用。

您是否已经创建了一个小样本?一年前,我创造了一个演员,他在超时后仍在工作。参与者的接收不是资源安全。可能我错了,smth已经更改。除非您以消息的形式显式发送超时,否则不会自动通知DBActor主管中的超时。如果需要取消下游操作,您可能应该使用其他一些并发机制,例如Java的Cancelable futures或类似的机制。