File tree 2 files changed +19
-1
lines changed
2 files changed +19
-1
lines changed Original file line number Diff line number Diff line change @@ -60,7 +60,17 @@ class ConnectionPool extends BaseConnectionPool {
60
60
const { id } = connection
61
61
debug ( `Marking as 'dead' connection '${ id } '` )
62
62
if ( this . dead . indexOf ( id ) === - 1 ) {
63
- this . dead . push ( id )
63
+ // It might happen that `markDead` is called jsut after
64
+ // a pool update, and in such case we will add to the dead
65
+ // list a node that no longer exist. The following check verify
66
+ // that the connection is still part of the pool before
67
+ // marking it as dead.
68
+ for ( var i = 0 ; i < this . size ; i ++ ) {
69
+ if ( this . connections [ i ] . id === id ) {
70
+ this . dead . push ( id )
71
+ break
72
+ }
73
+ }
64
74
}
65
75
connection . status = Connection . statuses . DEAD
66
76
connection . deadCount ++
Original file line number Diff line number Diff line change @@ -74,6 +74,14 @@ test('API', t => {
74
74
} , 10 )
75
75
} )
76
76
77
+ t . test ( 'markDead should ignore connections that no longer exists' , t => {
78
+ const pool = new ConnectionPool ( { Connection, sniffEnabled : true } )
79
+ pool . addConnection ( 'http://localhost:9200/' )
80
+ pool . markDead ( { id : 'foo-bar' } )
81
+ t . deepEqual ( pool . dead , [ ] )
82
+ t . end ( )
83
+ } )
84
+
77
85
t . test ( 'markAlive' , t => {
78
86
const pool = new ConnectionPool ( { Connection, sniffEnabled : true } )
79
87
const href = 'http://localhost:9200/'
You can’t perform that action at this time.
0 commit comments