frankgh commented on code in PR #208:
URL: https://github.com/apache/cassandra-sidecar/pull/208#discussion_r2002036554
##########
server/src/main/java/org/apache/cassandra/sidecar/modules/SchedulingModule.java:
##########
@@ -69,8 +73,24 @@ public PeriodicTaskExecutor periodicTaskExecutor(Vertx vertx,
@ProvidesIntoMap
@KeyClassMapKey(PeriodicTaskMapKeys.KeyStoreCheckPeriodicTaskKey.class)
- PeriodicTask keyStoreCheckPeriodicTask(Vertx vertx, Provider<Server>
server, SidecarConfiguration configuration)
+ PeriodicTask keyStoreCheckPeriodicTask(Vertx vertx, Provider<Server>
server, SidecarConfiguration configuration, WebClientOptions webClientOptions)
{
- return new KeyStoreCheckPeriodicTask(vertx, server, configuration);
+ Function<Long, Future<Boolean>> updateServerSSLOptionsFunction =
+ lastModifiedTime ->
server.get().updateSSLOptions(lastModifiedTime).compose(v ->
Future.succeededFuture(true));
+
+ return new KeyStoreCheckPeriodicTask(vertx,
configuration.sslConfiguration(), updateServerSSLOptionsFunction,
"ServerKeyStoreCheckPeriodicTask");
Review Comment:
is the plan to use the utility method here?
```suggestion
return KeyStoreCheckPeriodicTask.forServer(vertx,
configuration.sslConfiguration(), updateServerSSLOptionsFunction);
```
##########
server/src/main/java/org/apache/cassandra/sidecar/tasks/KeyStoreCheckPeriodicTask.java:
##########
@@ -41,25 +41,49 @@ public class KeyStoreCheckPeriodicTask implements
PeriodicTask
private static final Logger LOGGER =
LoggerFactory.getLogger(KeyStoreCheckPeriodicTask.class);
private final Vertx vertx;
- private final Provider<Server> server;
- private final SslConfiguration configuration;
+ private final SslConfiguration sslConfiguration;
+ private final Function<Long, Future<Boolean>> updateSSLOptionsFunction;
private long lastModifiedTime = 0; // records the last modified timestamp
+ private final String taskName;
- public KeyStoreCheckPeriodicTask(Vertx vertx, Provider<Server> server,
SidecarConfiguration configuration)
+ public KeyStoreCheckPeriodicTask(Vertx vertx,
Review Comment:
should we make this protected instead?
```suggestion
protected KeyStoreCheckPeriodicTask(Vertx vertx,
```
##########
server/src/main/java/org/apache/cassandra/sidecar/tasks/KeyStoreCheckPeriodicTask.java:
##########
@@ -145,7 +168,10 @@ protected void maybeRecordLastModifiedTime()
*/
private boolean shouldSkip()
{
- return !configuration.isKeystoreConfigured()
- || !configuration.keystore().reloadStore();
+ if (sslConfiguration == null)
+ return true;
+ KeyStoreConfiguration keyStoreConfiguration =
sslConfiguration.keystore();
+ return !keyStoreConfiguration.isConfigured()
+ || !keyStoreConfiguration.reloadStore();
Review Comment:
let's also revert this
##########
server/src/main/java/org/apache/cassandra/sidecar/tasks/KeyStoreCheckPeriodicTask.java:
##########
@@ -41,25 +41,49 @@ public class KeyStoreCheckPeriodicTask implements
PeriodicTask
private static final Logger LOGGER =
LoggerFactory.getLogger(KeyStoreCheckPeriodicTask.class);
private final Vertx vertx;
- private final Provider<Server> server;
- private final SslConfiguration configuration;
+ private final SslConfiguration sslConfiguration;
+ private final Function<Long, Future<Boolean>> updateSSLOptionsFunction;
private long lastModifiedTime = 0; // records the last modified timestamp
+ private final String taskName;
- public KeyStoreCheckPeriodicTask(Vertx vertx, Provider<Server> server,
SidecarConfiguration configuration)
+ public KeyStoreCheckPeriodicTask(Vertx vertx,
+ SslConfiguration sslConfiguration,
+ Function<Long, Future<Boolean>>
updateSSLOptionsFunction,
+ String taskName)
{
this.vertx = vertx;
- this.server = server;
- this.configuration = configuration.sslConfiguration();
+ this.sslConfiguration = sslConfiguration;
+ this.updateSSLOptionsFunction = updateSSLOptionsFunction;
+ this.taskName = taskName;
+ }
+
+ public static KeyStoreCheckPeriodicTask forServer(Vertx vertx,
+ SslConfiguration
sslConfiguration,
+ Function<Long,
Future<Boolean>> updateSSLOptionsFunction)
+ {
+ return new KeyStoreCheckPeriodicTask(vertx, sslConfiguration,
updateSSLOptionsFunction, "ServerKeyStoreCheckPeriodicTask");
+ }
+
+ public static KeyStoreCheckPeriodicTask forClient(Vertx vertx,
+ SslConfiguration
sslConfiguration,
+ Function<Long,
Future<Boolean>> updateSSLOptionsFunction)
+ {
+ return new KeyStoreCheckPeriodicTask(vertx, sslConfiguration,
updateSSLOptionsFunction, "ClientKeyStoreCheckPeriodicTask");
+ }
+
+ @Override
+ public String name()
+ {
+ return taskName;
}
@Override
public void deploy(Vertx vertx, PeriodicTaskExecutor executor)
{
- if (configuration != null
- && configuration.enabled()
- && configuration.keystore() != null
- && configuration.keystore().isConfigured()
- && configuration.keystore().reloadStore())
+ if (sslConfiguration != null &&
+ sslConfiguration.keystore() != null
+ && sslConfiguration.keystore().isConfigured()
+ && sslConfiguration.keystore().reloadStore())
Review Comment:
I think we should still check for the configuration being enabled here, any
reason to remove the check?
```suggestion
if (sslConfiguration != null
&& configuration.enabled()
&& sslConfiguration.keystore() != null
&& sslConfiguration.keystore().isConfigured()
&& sslConfiguration.keystore().reloadStore())
```
##########
server/src/main/java/org/apache/cassandra/sidecar/modules/SchedulingModule.java:
##########
@@ -69,8 +73,24 @@ public PeriodicTaskExecutor periodicTaskExecutor(Vertx vertx,
@ProvidesIntoMap
@KeyClassMapKey(PeriodicTaskMapKeys.KeyStoreCheckPeriodicTaskKey.class)
- PeriodicTask keyStoreCheckPeriodicTask(Vertx vertx, Provider<Server>
server, SidecarConfiguration configuration)
+ PeriodicTask keyStoreCheckPeriodicTask(Vertx vertx, Provider<Server>
server, SidecarConfiguration configuration, WebClientOptions webClientOptions)
Review Comment:
can we remove web client options here?
```suggestion
PeriodicTask keyStoreCheckPeriodicTask(Vertx vertx, Provider<Server>
server, SidecarConfiguration configuration)
```
##########
server/src/main/java/org/apache/cassandra/sidecar/modules/SchedulingModule.java:
##########
@@ -69,8 +73,24 @@ public PeriodicTaskExecutor periodicTaskExecutor(Vertx vertx,
@ProvidesIntoMap
@KeyClassMapKey(PeriodicTaskMapKeys.KeyStoreCheckPeriodicTaskKey.class)
- PeriodicTask keyStoreCheckPeriodicTask(Vertx vertx, Provider<Server>
server, SidecarConfiguration configuration)
+ PeriodicTask keyStoreCheckPeriodicTask(Vertx vertx, Provider<Server>
server, SidecarConfiguration configuration, WebClientOptions webClientOptions)
{
- return new KeyStoreCheckPeriodicTask(vertx, server, configuration);
+ Function<Long, Future<Boolean>> updateServerSSLOptionsFunction =
+ lastModifiedTime ->
server.get().updateSSLOptions(lastModifiedTime).compose(v ->
Future.succeededFuture(true));
+
+ return new KeyStoreCheckPeriodicTask(vertx,
configuration.sslConfiguration(), updateServerSSLOptionsFunction,
"ServerKeyStoreCheckPeriodicTask");
+ }
+
+ @ProvidesIntoMap
+
@KeyClassMapKey(PeriodicTaskMapKeys.ClientKeyStoreCheckPeriodicTaskKey.class)
+ PeriodicTask clientKeyStoreCheckPeriodicTask(Vertx vertx,
+ SidecarClientProvider
sidecarClientProvider,
+ WebClientOptions
webClientOptions,
+ SidecarConfiguration
configuration)
+ {
+ Function<Long, Future<Boolean>> updateClientSSLOptionsFunction =
+ lastModifiedTime ->
sidecarClientProvider.getHttpClient().updateSSLOptions(webClientOptions.getSslOptions()).compose(v
-> Future.succeededFuture(true));
+
+ return new KeyStoreCheckPeriodicTask(vertx,
configuration.sslConfiguration(), updateClientSSLOptionsFunction,
"ClientKeyStoreCheckPeriodicTask");
Review Comment:
should we use the utility method here?
```suggestion
return KeyStoreCheckPeriodicTask.forClient(vertx,
configuration.sslConfiguration(), updateClientSSLOptionsFunction);
```
##########
server/src/main/java/org/apache/cassandra/sidecar/tasks/KeyStoreCheckPeriodicTask.java:
##########
@@ -82,14 +106,14 @@ public ScheduleDecision scheduleDecision()
@Override
public DurationSpec delay()
{
- return configuration.keystore().checkInterval();
+ return sslConfiguration == null ? DEFAULT_DELAY :
sslConfiguration.keystore().checkInterval();
Review Comment:
this shouldn't be necessary, I wonder what's the change that requires this
change
##########
server/src/main/java/org/apache/cassandra/sidecar/utils/SidecarClientProvider.java:
##########
@@ -89,10 +104,16 @@ public void close()
}
}
+ // Exposing the used http client to be reused on periodic tasks
+ public HttpClient getHttpClient()
Review Comment:
let's not expose the http client here, instead let's just expose a method to
update ssl options.
```suggestion
public Future<Boolean> updateSSLOptions()
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]