In what version(s) of Spring Integration are you seeing this issue?
Between 6.4.9 and 6.5.6
Describe the bug
While releasing a lock, it tried to execute UNLINK_UNLOCK_REDIS_SCRIPT, but it timed out. For that reason, it fallback to execute DELETE_UNLOCK_REDIS_SCRIPT, but looking at that script it seems that a bug was introduced on the PUBLISH, so we are getting the following error:
Caused by: io.lettuce.core.RedisCommandExecutionException: ERR Lua redis lib command arguments must be strings or integers script: 4d7192f70618a620282e427698f9cde890151e58, on @user_script:3.
We believe this is happening because that call is being done like redis.call('PUBLISH', KEYS[2], KEYS[1]), while it should be like redis.call('PUBLISH', ARGV[2], KEYS[1]) (as it is done on UNLINK_UNLOCK_SCRIPT).
Since a failure to call unlink will mark unlinkAvailable = false, all subsequent unlocks will immediately try the DEL and fail on the publish.
We understand that this is fixed on the 7.x baseline (since that fallback got removed), but would be important to release a fix for this bug on the 6.x baseline, as many of us won't be able to bump to Spring Boot 4 in a near future.
To Reproduce
Hard to reproduce, needs to force unlink to fail. Perhaps reducing read timeout drastically?
Expected behavior
Publish would work as expected and application would continue to run normally using the delete.
In what version(s) of Spring Integration are you seeing this issue?
Between 6.4.9 and 6.5.6
Describe the bug
While releasing a lock, it tried to execute
UNLINK_UNLOCK_REDIS_SCRIPT, but it timed out. For that reason, it fallback to executeDELETE_UNLOCK_REDIS_SCRIPT, but looking at that script it seems that a bug was introduced on thePUBLISH, so we are getting the following error:We believe this is happening because that call is being done like
redis.call('PUBLISH', KEYS[2], KEYS[1]), while it should be likeredis.call('PUBLISH', ARGV[2], KEYS[1])(as it is done onUNLINK_UNLOCK_SCRIPT).Since a failure to call unlink will mark
unlinkAvailable = false, all subsequent unlocks will immediately try theDELand fail on the publish.We understand that this is fixed on the
7.xbaseline (since that fallback got removed), but would be important to release a fix for this bug on the6.xbaseline, as many of us won't be able to bump toSpring Boot 4in a near future.To Reproduce
Hard to reproduce, needs to force unlink to fail. Perhaps reducing read timeout drastically?
Expected behavior
Publish would work as expected and application would continue to run normally using the delete.