Skip to content

Feature/issue650 replace deprecated redis commands #651

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
May 19, 2025
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
2 changes: 1 addition & 1 deletion gateleen-cache/src/main/resources/cache_request.lua
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ local expireMillis = tonumber(ARGV[4])
local resourceKey = cachePrefix..resourceName

redis.call('sadd', cachedSet, resourceName)
redis.call('psetex', resourceKey, expireMillis, resourceValue)
redis.call('set', resourceKey, resourceValue, 'px', expireMillis)

return "OK"

Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
*/
public class DeltaHandler implements RuleProvider.RuleChangesObserver {

private Logger log = LoggerFactory.getLogger(DeltaHandler.class);
private final Logger log = LoggerFactory.getLogger(DeltaHandler.class);

private static final String DELTA_PARAM = "delta";
private static final String LIMIT_PARAM = "limit";
Expand All @@ -54,12 +54,12 @@ public class DeltaHandler implements RuleProvider.RuleChangesObserver {
private static final String RESOURCE_KEY_PREFIX = "delta:resources";
private static final String ETAG_KEY_PREFIX = "delta:etags";

private HttpClient httpClient;
private RedisProvider redisProvider;
private final HttpClient httpClient;
private final RedisProvider redisProvider;

private boolean rejectLimitOffsetRequests;
private final boolean rejectLimitOffsetRequests;

private RuleProvider ruleProvider;
private final RuleProvider ruleProvider;

private final Vertx vertx;
private final LoggingResourceManager loggingResourceManager;
Expand Down Expand Up @@ -109,7 +109,7 @@ private boolean isDeltaGETRequest(HttpServerRequest request) {
!isBackendDelta(request.uri())) {
return true;
}
// remove the delta backend header, its only a marker
// remove the delta backend header, it's only a marker
if (request.headers().contains(DELTA_BACKEND_HEADER)) {
request.headers().remove(DELTA_BACKEND_HEADER);
}
Expand Down Expand Up @@ -156,7 +156,7 @@ private void handleResourcePUT(final HttpServerRequest request, final Router rou
// save to storage
saveDelta(resourceKey, updateId, expireAfter, event -> {
if (event.failed()) {
log.error("setex command for redisKey {} failed with cause: {}", resourceKey, logCause(event));
log.error("set command for redisKey {} failed with cause: {}", resourceKey, logCause(event));
handleError(request, "error saving delta information");
request.resume();
} else {
Expand Down Expand Up @@ -225,19 +225,19 @@ private void saveOrUpdateDeltaEtag(final String etagResourceKey, final HttpServe
Long expireAfter = getExpireAfterValue(request, log);
saveDelta(etagResourceKey, requestEtag, expireAfter, event -> {
if (event.failed()) {
log.error("setex command for redisKey {} failed with cause: {}", etagResourceKey, logCause(event));
log.error("set command for redisKey {} failed with cause: {}", etagResourceKey, logCause(event));
}
updateCallback.handle(Boolean.TRUE);
});
}

private void saveDelta(String deltaKey, String deltaValue, Long expireAfter, Handler<AsyncResult<Object>> handler) {
redisProvider.redis().onSuccess(redisAPI -> {
if (expireAfter == null) {
redisAPI.set(Arrays.asList(deltaKey, deltaValue), (Handler) handler);
} else {
redisAPI.setex(deltaKey, String.valueOf(expireAfter), deltaValue, (Handler) handler);
List<String> options = new ArrayList<>(List.of(deltaKey, deltaValue));
if(expireAfter != null) {
options.addAll(List.of("EX", expireAfter.toString()));
}
redisAPI.set(options, (Handler) handler);
}).onFailure(throwable -> handler.handle(new FailedAsyncResult<>(throwable)));
}

Expand Down Expand Up @@ -461,7 +461,7 @@ private Long getExpireAfterValue(HttpServerRequest request, Logger log) {
try {
long value = Long.parseLong(expireAfterHeaderValue);

// redis returns an error if setex is called with negativ values
// redis returns an error if set is called with negative values
if (value < 0) {
log.warn("Setting NO expiry on delta key because because defined value for header {} is a negative number: {}",
EXPIRE_AFTER_HEADER, expireAfterHeaderValue);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,6 @@ public void testDeltaNoExpiry() {
deltaHandler.handle(request, router);

verify(redisAPI, times(1)).set(eq(Arrays.asList("delta:resources:a:b:c", "555")), any());
verify(redisAPI, never()).setex(any(), any(), any(), any());
}

@Test
Expand All @@ -171,8 +170,7 @@ public void testDeltaWithExpiry() {
DeltaHandler deltaHandler = new DeltaHandler(vertx, redisProvider, null, ruleProvider, loggingResourceManager, logAppenderRepository);
deltaHandler.handle(request, router);

verify(redisAPI, times(1)).setex(eq("delta:resources:a:b:c"), eq("123"), eq("555"), any());
verify(redisAPI, never()).set(any(), any());
verify(redisAPI, times(1)).set(eq(Arrays.asList("delta:resources:a:b:c", "555", "EX", "123")), any());
}

@Test
Expand Down