-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Open
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?
xfournet
Metadata
Metadata
Assignees
Labels
No labels