Skip to content

Commit 11c4b31

Browse files
authored
Merge pull request #651 from swisspost/feature/issue650_replace_setex
Feature/issue650 replace deprecated redis commands
2 parents 378e45a + 0f078f5 commit 11c4b31

File tree

3 files changed

+15
-17
lines changed

3 files changed

+15
-17
lines changed

gateleen-cache/src/main/resources/cache_request.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ local expireMillis = tonumber(ARGV[4])
77
local resourceKey = cachePrefix..resourceName
88

99
redis.call('sadd', cachedSet, resourceName)
10-
redis.call('psetex', resourceKey, expireMillis, resourceValue)
10+
redis.call('set', resourceKey, resourceValue, 'px', expireMillis)
1111

1212
return "OK"
1313

gateleen-delta/src/main/java/org/swisspush/gateleen/delta/DeltaHandler.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
*/
3838
public class DeltaHandler implements RuleProvider.RuleChangesObserver {
3939

40-
private Logger log = LoggerFactory.getLogger(DeltaHandler.class);
40+
private final Logger log = LoggerFactory.getLogger(DeltaHandler.class);
4141

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

57-
private HttpClient httpClient;
58-
private RedisProvider redisProvider;
57+
private final HttpClient httpClient;
58+
private final RedisProvider redisProvider;
5959

60-
private boolean rejectLimitOffsetRequests;
60+
private final boolean rejectLimitOffsetRequests;
6161

62-
private RuleProvider ruleProvider;
62+
private final RuleProvider ruleProvider;
6363

6464
private final Vertx vertx;
6565
private final LoggingResourceManager loggingResourceManager;
@@ -109,7 +109,7 @@ private boolean isDeltaGETRequest(HttpServerRequest request) {
109109
!isBackendDelta(request.uri())) {
110110
return true;
111111
}
112-
// remove the delta backend header, its only a marker
112+
// remove the delta backend header, it's only a marker
113113
if (request.headers().contains(DELTA_BACKEND_HEADER)) {
114114
request.headers().remove(DELTA_BACKEND_HEADER);
115115
}
@@ -156,7 +156,7 @@ private void handleResourcePUT(final HttpServerRequest request, final Router rou
156156
// save to storage
157157
saveDelta(resourceKey, updateId, expireAfter, event -> {
158158
if (event.failed()) {
159-
log.error("setex command for redisKey {} failed with cause: {}", resourceKey, logCause(event));
159+
log.error("set command for redisKey {} failed with cause: {}", resourceKey, logCause(event));
160160
handleError(request, "error saving delta information");
161161
request.resume();
162162
} else {
@@ -225,19 +225,19 @@ private void saveOrUpdateDeltaEtag(final String etagResourceKey, final HttpServe
225225
Long expireAfter = getExpireAfterValue(request, log);
226226
saveDelta(etagResourceKey, requestEtag, expireAfter, event -> {
227227
if (event.failed()) {
228-
log.error("setex command for redisKey {} failed with cause: {}", etagResourceKey, logCause(event));
228+
log.error("set command for redisKey {} failed with cause: {}", etagResourceKey, logCause(event));
229229
}
230230
updateCallback.handle(Boolean.TRUE);
231231
});
232232
}
233233

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

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

464-
// redis returns an error if setex is called with negativ values
464+
// redis returns an error if set is called with negative values
465465
if (value < 0) {
466466
log.warn("Setting NO expiry on delta key because because defined value for header {} is a negative number: {}",
467467
EXPIRE_AFTER_HEADER, expireAfterHeaderValue);

gateleen-delta/src/test/java/org/swisspush/gateleen/delta/DeltaHandlerTest.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,6 @@ public void testDeltaNoExpiry() {
161161
deltaHandler.handle(request, router);
162162

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

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

174-
verify(redisAPI, times(1)).setex(eq("delta:resources:a:b:c"), eq("123"), eq("555"), any());
175-
verify(redisAPI, never()).set(any(), any());
173+
verify(redisAPI, times(1)).set(eq(Arrays.asList("delta:resources:a:b:c", "555", "EX", "123")), any());
176174
}
177175

178176
@Test

0 commit comments

Comments
 (0)