File tree Expand file tree Collapse file tree 2 files changed +17
-1
lines changed Expand file tree Collapse file tree 2 files changed +17
-1
lines changed Original file line number Diff line number Diff line change @@ -115,10 +115,14 @@ export function createAdapter(
115
115
) {
116
116
opts . uid = opts . uid || randomId ( ) ;
117
117
118
+ let isClosed = false ;
118
119
let adapters = new Map < string , MongoAdapter > ( ) ;
119
120
let changeStream : any ;
120
121
121
122
const initChangeStream = ( ) => {
123
+ if ( isClosed ) {
124
+ return ;
125
+ }
122
126
if ( changeStream ) {
123
127
changeStream . removeAllListeners ( "change" ) ;
124
128
changeStream . removeAllListeners ( "close" ) ;
@@ -134,7 +138,11 @@ export function createAdapter(
134
138
] ) ;
135
139
136
140
changeStream . on ( "change" , ( event : any ) => {
137
- adapters . get ( event . fullDocument . nsp ) ?. onEvent ( event ) ;
141
+ adapters . get ( event . fullDocument ?. nsp ) ?. onEvent ( event ) ;
142
+ } ) ;
143
+
144
+ changeStream . on ( "error" , ( err : Error ) => {
145
+ debug ( "change stream encountered an error: %s" , err . message ) ;
138
146
} ) ;
139
147
140
148
changeStream . on ( "close" , ( ) => {
@@ -147,6 +155,7 @@ export function createAdapter(
147
155
148
156
return function ( nsp : any ) {
149
157
if ( ! changeStream ) {
158
+ isClosed = false ;
150
159
initChangeStream ( ) ;
151
160
}
152
161
@@ -163,6 +172,7 @@ export function createAdapter(
163
172
changeStream . removeAllListeners ( "close" ) ;
164
173
changeStream . close ( ) ;
165
174
changeStream = null ;
175
+ isClosed = true ;
166
176
}
167
177
168
178
defaultClose . call ( adapter ) ;
Original file line number Diff line number Diff line change @@ -434,4 +434,10 @@ describe("@socket.io/mongodb-adapter", () => {
434
434
} ) ;
435
435
} ) ;
436
436
} ) ;
437
+
438
+ it ( "should not throw when receiving a drop event" , async ( ) => {
439
+ await mongoClient . db ( "test" ) . dropCollection ( "events" ) ;
440
+
441
+ await sleep ( 100 ) ;
442
+ } ) ;
437
443
} ) ;
You can’t perform that action at this time.
0 commit comments