在运行时更改 DataStax java 驱动程序用户和密码

问题描述

我正在使用 DataStax Java 驱动程序版本 3.3.0 运行 Java 应用程序,并且我试图在运行时更改 Cassandra 用户密码。根据 this issue 通过在此对象中调用 setUsersetPassword,它应该将其重用于以后对数据库调用,所以我在代码中做了类似

PlainTextAuthProvider authProvider = (PlainTextAuthProvider) cluster.getConfiguration().getProtocolOptions().getAuthProvider();

authProvider.setUsername(user);
authProvider.setPassword(pwd);

但即使在此更改之后,我发现它仍然使用我在启动时设置的用户/密码

This docu 表示在版本 > 4.x 中,您可以在运行时强制重新加载配置。

所以我的问题是,有没有办法强制所有对 Cassandra 的新调用开始使用 3.x 版中通过 PlainTextAuthProvider 提供的新用户和通行证?

额外:我这样做是为了尝试在 Vault 密码过期时轮换它们并相应地更新驱动程序。类似于此 post for relational DB accessed by Spring Boot but on Cassandra

中描述的内容

解决方法

这个问题也在 https://community.datastax.com/questions/11846/ 上被问到,我在这里重新发布我的回答:

我不熟悉此 API,但我认为凭据仅用于设置凭据后发起的新连接。我怀疑它不适用于继续使用旧凭据的现有连接。

我将联系 DataStax 的驱动程序开发人员,要么让他们直接回复,要么更新我的答案。干杯!