我正在使用java数据税驱动程序。我有一个ServletContextListener,它在通过调用Cluster.shutdown()销毁的上下文上关闭datastaxCluster对象。问题是它需要shutdown()几分钟才能返回。
簇shutdown()有一个覆盖,您可以在其中指定超时值。我似乎找不到任何关于不使用关闭值的文档,当我指定一毫秒的超时时间时,集群或多或少会立即关闭(正如预期的那样)。
因此,我的问题是,如果我只是在servlet关闭时关闭集群,那么我是否有理由等待返回?通过指定超时,它实际上是在调用异步关闭,这应该没问题,但我不想引入内存泄漏或任何不稳定性。
我对Cassandra/datastax很陌生,所以如果在某个地方详细说明了使用超时的信息,那么为我指明方向将是非常好的!
TIA、wbj
1条答案
按热度按时间p8h8hvxi1#
如果您确实指定了一个短超时,该方法将启动关机,但仅在关机完成后等待所需的时间。所以,是的,短暂的超时不会影响关机本身,关机将以异步方式继续。如果您不关心关闭何时完成(即所有资源都已正确关闭的确切时间),那么使用超时没有什么特别的缺点(您甚至可以使用0表示超时以明确其意图)。
我不会让驱动程序的2.x版本稍微更改关闭API,默认情况下使其异步,但在关闭完成时返回未来。希望这能让事情变得更清楚。