You've already forked node-redis
mirror of
https://github.com/redis/node-redis.git
synced 2025-08-06 02:15:48 +03:00
Fixed parser not being reset in case the redis connection
closed ASAP for overcoming of output buffer limits. Fixes #1190
This commit is contained in:
@@ -5,6 +5,7 @@ Changelog
|
|||||||
|
|
||||||
Bugfixes
|
Bugfixes
|
||||||
|
|
||||||
|
- Fixed parser not being reset in case the redis connection closed ASAP for overcoming of output buffer limits
|
||||||
- Fixed parser reset if (p)message_buffer listener is attached
|
- Fixed parser reset if (p)message_buffer listener is attached
|
||||||
|
|
||||||
## v.2.6.4 - 12 Jan, 2017
|
## v.2.6.4 - 12 Jan, 2017
|
||||||
|
5
index.js
5
index.js
@@ -156,8 +156,6 @@ function RedisClient (options, stream) {
|
|||||||
this.buffers = options.return_buffers || options.detect_buffers;
|
this.buffers = options.return_buffers || options.detect_buffers;
|
||||||
this.options = options;
|
this.options = options;
|
||||||
this.reply = 'ON'; // Returning replies is the default
|
this.reply = 'ON'; // Returning replies is the default
|
||||||
// Init parser
|
|
||||||
this.reply_parser = create_parser(this);
|
|
||||||
this.create_stream();
|
this.create_stream();
|
||||||
// The listeners will not be attached right away, so let's print the deprecation message while the listener is attached
|
// The listeners will not be attached right away, so let's print the deprecation message while the listener is attached
|
||||||
this.on('newListener', function (event) {
|
this.on('newListener', function (event) {
|
||||||
@@ -230,6 +228,9 @@ function create_parser (self) {
|
|||||||
RedisClient.prototype.create_stream = function () {
|
RedisClient.prototype.create_stream = function () {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
|
// Init parser
|
||||||
|
this.reply_parser = create_parser(this);
|
||||||
|
|
||||||
if (this.options.stream) {
|
if (this.options.stream) {
|
||||||
// Only add the listeners once in case of a reconnect try (that won't work)
|
// Only add the listeners once in case of a reconnect try (that won't work)
|
||||||
if (this.stream) {
|
if (this.stream) {
|
||||||
|
@@ -38,6 +38,24 @@ describe('The node_redis client', function () {
|
|||||||
client.quit(done);
|
client.quit(done);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('reset the parser while reconnecting', function (done) {
|
||||||
|
var client = redis.createClient({
|
||||||
|
retryStrategy: function () {
|
||||||
|
return 5;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
client.once('reconnecting', function () {
|
||||||
|
process.nextTick(function () {
|
||||||
|
assert.strictEqual(client.reply_parser.buffer, null);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
var partialInput = new Buffer('$100\r\nabcdef');
|
||||||
|
client.reply_parser.execute(partialInput);
|
||||||
|
assert.strictEqual(client.reply_parser.buffer.inspect(), partialInput.inspect());
|
||||||
|
client.stream.destroy();
|
||||||
|
});
|
||||||
|
|
||||||
helper.allTests(function (parser, ip, args) {
|
helper.allTests(function (parser, ip, args) {
|
||||||
|
|
||||||
describe('using ' + parser + ' and ' + ip, function () {
|
describe('using ' + parser + ' and ' + ip, function () {
|
||||||
|
Reference in New Issue
Block a user