-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Getting corrupted strings when using ElastiCache Redis 7.1.0 since library version 5 #2993
Copy link
Copy link
Closed
Description
I'm using Amazon ElastiCache running Redis 7.1.0 (I do realize this is unsupported version, but thought that this is worth reporting anyway).
When I'm running the following script:
import redis from 'redis'
async function main() {
const client = redis.createClient({
url: 'redis://my-elasticache-cluster:6379'
})
await client.connect()
console.log('Connected to Redis')
const value = Array.from({ length: 1000 }, (_) => 'ä').join('')
await client.set('test-key', value, {
EX: 5
})
const result = await client.get('test-key')
console.log('Value got from Redis:', result)
console.log('Has replacement character', result && result.includes('�'))
await client.disconnect()
}
main().catch((err) => {
console.error('Unhandled error:', err)
process.exit(1)
})I sometimes get the following output (about 50% of the time), scroll right to see the error:
Connected to Redis
Value got from Redis: äääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääää��ääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääää
Has replacement character true
If I install pnpm i redis@^4, this never happens. I could not replicate this with local redis (but did not test the same version, since I could not find 7.1 images easily).
Speculation - somewhere there is a mechanism where data is coming in as a separate byte chunks, and these incomplete byte chunks are being read as UTF-8 strings, even though they might be broken mid-codepoint and the conversion should wait until the bytes are retrieved in full?
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels