Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion runner-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,9 @@ runner:
commandLatencyMonitoring: true # Enables Lettuce internal command latency monitoring
connectionMonitoring: true # Enables Additional metrics for connection inactive time. Note supported with GA build of lettuce, and required custom Lettuce client build. See README.md for instruction ho to enable them
autoReconnect: true
supportMaintenanceEvents: false
maintenanceEventsConfig:
enabled: true
movingEndpointAddressType: PUBLIC_IP
#reconnectOptions:
# fixedDelay: PT1S # 1s Configures constant delay between re-connection attempts
#pingBeforeActivate: false
Expand Down
21 changes: 18 additions & 3 deletions src/main/java/io/lettuce/test/WorkloadRunnerBase.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import io.lettuce.core.AbstractRedisClient;
import io.lettuce.core.ClientOptions;
import io.lettuce.core.MaintenanceEventsOptions;
import io.lettuce.core.MaintenanceEventsOptions.AddressType;
import io.lettuce.core.RedisURI;
import io.lettuce.core.SocketOptions;
import io.lettuce.core.TimeoutOptions;
Expand All @@ -19,6 +21,7 @@
import io.lettuce.core.resource.Delay;
import io.lettuce.test.config.WorkloadRunnerConfig;
import io.lettuce.test.config.WorkloadRunnerConfig.ClientOptionsConfig;
import io.lettuce.test.config.WorkloadRunnerConfig.MaintenanceEventsConfig;
import io.lettuce.test.config.WorkloadRunnerConfig.SocketOptionsConfig;
import io.lettuce.test.config.WorkloadRunnerConfig.TcpUserTimeoutOptionsConfig;
import io.lettuce.test.config.WorkloadRunnerConfig.TimeoutOptionsConfig;
Expand Down Expand Up @@ -313,8 +316,20 @@ protected ClientOptions createClientOptions(ClientOptionsConfig config) {
builder.autoReconnect(config.getAutoReconnect());
}

if (config.getSupportMaintenanceEvents() != null) {
OptionalClientOptions.applySupportMaintenanceEventsOption(builder, config.getSupportMaintenanceEvents());
if (config.getMaintenanceEventsConfig() != null) {
MaintenanceEventsConfig maintEventsCfg = config.getMaintenanceEventsConfig();
if (maintEventsCfg.isEnabled()) {
MaintenanceEventsOptions options;
if (maintEventsCfg.getMovingEndpointAddressType() != null) {
AddressType addrType = AddressType.valueOf(maintEventsCfg.getMovingEndpointAddressType());
options = MaintenanceEventsOptions.enabled(addrType);
log.info("Enabling supportMaintenanceEvents with address type: {}", addrType);
} else {
options = MaintenanceEventsOptions.enabled();
log.info("Enabling supportMaintenanceEvents with default (auto resolve) address type.");
}
builder.supportMaintenanceEvents(options);
}
}

if (config.getPingBeforeActivate() != null) {
Expand Down Expand Up @@ -404,7 +419,7 @@ private void applyKeepAliveOptions(SocketOptions.KeepAliveOptions.Builder builde

static class OptionalClientOptions {

static public void applySupportMaintenanceEventsOption(ClientOptions.Builder builder, boolean value) {
static public void applySupportMaintenanceEventsOption(ClientOptions.Builder builder, MaintenanceEventsConfig value) {
try {
Method method = builder.getClass().getMethod("supportMaintenanceEvents", boolean.class);
method.invoke(builder, value);
Expand Down
36 changes: 30 additions & 6 deletions src/main/java/io/lettuce/test/config/WorkloadRunnerConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -363,7 +363,7 @@ public static class ClientOptionsConfig {

private Boolean autoReconnect;

private Boolean supportMaintenanceEvents;
private MaintenanceEventsConfig maintenanceEventsConfig;

private Boolean pingBeforeActivate;

Expand All @@ -388,12 +388,12 @@ public void setAutoReconnect(Boolean autoReconnect) {
this.autoReconnect = autoReconnect;
}

public Boolean getSupportMaintenanceEvents() {
return supportMaintenanceEvents;
public MaintenanceEventsConfig getMaintenanceEventsConfig() {
return maintenanceEventsConfig;
}

public void setSupportMaintenanceEvents(Boolean supportMaintenanceEvents) {
this.supportMaintenanceEvents = supportMaintenanceEvents;
public void setMaintenanceEventsConfig(MaintenanceEventsConfig supportMaintenanceEvents) {
this.maintenanceEventsConfig = supportMaintenanceEvents;
}

public Boolean getPingBeforeActivate() {
Expand Down Expand Up @@ -446,7 +446,7 @@ public void setReconnectOptions(ReconnectOptionsConfig reconnectOptions) {

@Override
public String toString() {
return "ClientOptionsConfig{" + "autoReconnect=" + autoReconnect + ", proactiveRebind=" + supportMaintenanceEvents
return "ClientOptionsConfig{" + "autoReconnect=" + autoReconnect + ", proactiveRebind=" + maintenanceEventsConfig
+ ", pingBeforeActivate=" + pingBeforeActivate + ", requestQueueSize=" + requestQueueSize
+ ", timeoutOptions=" + timeoutOptions + ", socketOptions=" + socketOptions + ", disconnectedBehavior='"
+ disconnectedBehavior + '\'' + ", reconnectOptions=" + reconnectOptions + '}';
Expand Down Expand Up @@ -648,4 +648,28 @@ public String toString() {

}

public static class MaintenanceEventsConfig {

boolean enabled;

String movingEndpointAddressType;

public boolean isEnabled() {
return enabled;
}

public void setEnabled(boolean enabled) {
this.enabled = enabled;
}

public String getMovingEndpointAddressType() {
return movingEndpointAddressType;
}

public void setMovingEndpointAddressType(String movingEndpointAddressType) {
this.movingEndpointAddressType = movingEndpointAddressType;
}

}

}