@@ -189,7 +189,14 @@ class QuestionStreamingService {
189189 message : 'Saving question to database...'
190190 } ) ;
191191
192- savedQuestion = await newQuestion . save ( ) ;
192+ // Add timeout for database save operation
193+ const DB_SAVE_TIMEOUT = 30000 ; // 30 seconds
194+ const savePromise = newQuestion . save ( ) ;
195+ const timeoutPromise = new Promise ( ( _ , reject ) =>
196+ setTimeout ( ( ) => reject ( new Error ( 'Database save timeout after 30s' ) ) , DB_SAVE_TIMEOUT )
197+ ) ;
198+
199+ savedQuestion = await Promise . race ( [ savePromise , timeoutPromise ] ) ;
193200 console . log ( `[${ questionId } ] Question saved: ${ savedQuestion . _id } ` ) ;
194201 sseService . streamQuestionProgress ( sessionId , questionId , {
195202 status : 'db-saved' ,
@@ -210,7 +217,13 @@ class QuestionStreamingService {
210217 message : 'Adding question to quiz...'
211218 } ) ;
212219
213- await quiz . addQuestion ( savedQuestion . _id ) ;
220+ // Add timeout for addQuestion operation
221+ const addPromise = quiz . addQuestion ( savedQuestion . _id ) ;
222+ const addTimeoutPromise = new Promise ( ( _ , reject ) =>
223+ setTimeout ( ( ) => reject ( new Error ( 'Add to quiz timeout after 30s' ) ) , DB_SAVE_TIMEOUT )
224+ ) ;
225+
226+ await Promise . race ( [ addPromise , addTimeoutPromise ] ) ;
214227 console . log ( `[${ questionId } ] Question added to quiz successfully` ) ;
215228 sseService . streamQuestionProgress ( sessionId , questionId , {
216229 status : 'added-to-quiz' ,
0 commit comments