【发布时间】:2019-03-06 14:01:39
【问题描述】:
我们有一个与 MariaDB 数据库交互的风暴拓扑。我们的 Bolts 实现了IRichBolt 接口并覆盖了生命周期方法。我们在prepare 方法中打开一个数据库连接,并在cleanup 方法中关闭它。
cleanup 方法文档说:
当 IBolt 将要关闭时调用。没有保证会调用清理,因为主管杀死了集群上 -9 的工作进程。 保证调用 cleanup 的一种情况是在本地模式下运行 Storm 时终止拓扑
kill -9 命令会在不清理任何资源的情况下终止进程。所以我们得出这样的结论,在杀死拓扑时,不需要调用cleanup 方法并关闭数据库连接。
所以继续我的问题,我们有一个用于拓扑部署的 shell 脚本,它在执行时会以 0 的超时时间终止当前拓扑并部署一个新的拓扑。我们在数据库级别面临一个问题,即打开了许多连接,这提示我们以前的连接没有关闭。 (在上一个拓扑中打开的那个)。
我们的假设正确吗?增加超时时间会清理所有资源吗?
【问题讨论】:
标签: apache-storm apache-storm-topology