From 05126fa110354ac6d0bd4d50eafc3bf6996e6108 Mon Sep 17 00:00:00 2001 From: Samuel Pua Date: Sun, 2 Oct 2022 00:19:58 +0800 Subject: [PATCH] Feat(booking-job): Auto timeout close browser --- .../internal/ktmtrainbot/backgroundbookingjob.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/backend/internal/ktmtrainbot/backgroundbookingjob.go b/backend/internal/ktmtrainbot/backgroundbookingjob.go index bd4ffa0..701ed9a 100644 --- a/backend/internal/ktmtrainbot/backgroundbookingjob.go +++ b/backend/internal/ktmtrainbot/backgroundbookingjob.go @@ -169,6 +169,19 @@ func (env *Env) startBooking(job *Booking, username string, password string, cre defaultDevice.UserAgent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36" browser := rod.New().ControlURL(u).MustConnect().DefaultDevice(defaultDevice) + // Close browser when context is done + go func() { + defer func() { + if r := recover(); r != nil { + log.Println("Recovering from browser panic...") + } + }() + + <-timerCtx.Done() + log.Println("Timed out. Closing browser.") + browser.MustClose() + }() + // Defer closing browser defer browser.MustClose()