1

我正在使用 java datastax 驱动程序。我有一个 ServletContextListener,它在通过调用 Cluster.shutdown() 销毁的上下文中关闭 datastax Cluster 对象。问题是它需要 shutdown() 几分钟才能返回。

Cluster.shutdown() 有一个覆盖,您可以在其中指定超时值。我似乎找不到任何关于不使用关闭值的文档,并且当我指定一毫秒的超时时间时,集群或多或少会立即关闭(如预期的那样)。

所以,我的问题是,如果我只是在 servlet 关闭时才关闭集群,我是否有理由等待返回?似乎通过指定超时,它本质上是在调用异步关闭,这应该是可以的,但我不想引入内存泄漏或任何不稳定。

我对 Cassandra/datastax 还是很陌生,所以如果在某处说明了有关使用超时的信息,那么将我指向那个方向会很棒!

TIA, wbj

4

1 回答 1

1

如果您确实指定了一个短暂的超时,该方法将启动关闭,但只等待关闭完成,只要要求。所以是的,短暂的超时不会干扰关闭本身,它将异步继续。如果您不关心关闭何时完成(即所有资源都已正确关闭),那么使用超时没有特别的缺点(您甚至可以使用 0 超时来明确意图)。

我不会认为 2.x 版驱动程序会稍微更改关闭 API,使其默认为异步,但在关闭完成时返回未来。希望这可以更清楚地说明会发生什么。

于 2013-10-23T07:10:14.357 回答