在群集关闭时使用超时的分歧?

时间:2013-10-16 19:43:48

标签: datastax-java-driver

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

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

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

我对Cassandra / datastax很陌生,所以如果在某个地方拼出有关使用超时的信息,那么指点我会很棒!

TIA, WBJ

1 个答案:

答案 0 :(得分:1)

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

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