You've already forked node-redis
mirror of
https://github.com/redis/node-redis.git
synced 2025-08-04 15:02:09 +03:00
Execute empty MULTI (#2423)
* Fix multi.exec with empty queue and previous watch When calling exec on a multi instance which you did not use, no command is sent currently. This is a problem for watched keys, because no EXEC means no unwatch, which might cause hard-to-debug problems. Proposed Fix: Sending UNWATCH * execute empty multi command (instead of skipping) * Update index.ts * Update index.ts * Update multi-command.ts * Update multi-command.ts * Update multi-command.ts * Update multi-command.ts * short circuit empty pipelines * Update index.ts --------- Co-authored-by: Leibale <me@leibale.com>
This commit is contained in:
@@ -46,24 +46,23 @@ describe('Multi Command', () => {
|
||||
});
|
||||
|
||||
describe('exec', () => {
|
||||
it('undefined', () => {
|
||||
assert.equal(
|
||||
new RedisMultiCommand().exec(),
|
||||
undefined
|
||||
it('without commands', () => {
|
||||
assert.deepEqual(
|
||||
new RedisMultiCommand().queue,
|
||||
[]
|
||||
);
|
||||
});
|
||||
|
||||
it('Array', () => {
|
||||
it('with commands', () => {
|
||||
const multi = new RedisMultiCommand();
|
||||
multi.addCommand(['PING']);
|
||||
|
||||
assert.deepEqual(
|
||||
multi.exec(),
|
||||
[
|
||||
{ args: ['MULTI'] },
|
||||
{ args: ['PING'], transformReply: undefined },
|
||||
{ args: ['EXEC'] }
|
||||
]
|
||||
multi.queue,
|
||||
[{
|
||||
args: ['PING'],
|
||||
transformReply: undefined
|
||||
}]
|
||||
);
|
||||
});
|
||||
});
|
||||
|
Reference in New Issue
Block a user