@@ -104,8 +104,12 @@ func newServer() (*server, error) {
104104 }
105105 }
106106
107+ workerLanguages , err := parseWorkerLanguages (os .Getenv ("WORKER_LANGUAGES" ))
108+ if err != nil {
109+ return nil , err
110+ }
107111 workersMap := map [workertypes.WorkerLanguage ]* Workers {}
108- for _ , lang := range workertypes . SUPPORTED_LANGUAGES {
112+ for _ , lang := range workerLanguages {
109113 workersMap [lang ], err = newWorkers (lang , workerCount , k8ClientSet , amqpChannel )
110114 if err != nil {
111115 return nil , fmt .Errorf ("could not create new %s workers: %w" , lang , err )
@@ -186,6 +190,10 @@ func (s *server) handleRun(c *echo.Context) error {
186190 if ! req .Language .IsValid () {
187191 return respondError (c , http .StatusBadRequest , requestID , testID , logBuffer , "could not recognize language" )
188192 }
193+ workers , enabled := s .workers [req .Language ]
194+ if ! enabled {
195+ return respondError (c , http .StatusBadRequest , requestID , testID , logBuffer , "language is not enabled" )
196+ }
189197
190198 logger .Printf ("Validating turnstile" )
191199 if err := ValidateTurnstile (c .Request ().Context (), req .Token , getTurnstileIP (c ), os .Getenv ("TURNSTILE_SECRET_KEY" )); err != nil {
@@ -197,7 +205,7 @@ func (s *server) handleRun(c *echo.Context) error {
197205 logger .Printf ("Obtaining worker" )
198206 var worker * Worker
199207 select {
200- case worker = <- s . workers [ req . Language ] .GetCh ():
208+ case worker = <- workers .GetCh ():
201209 case <- time .After (WORKER_TIMEOUT * time .Second ):
202210 logger .Println ("Got Worker timeout, was not able to get a worker!" )
203211 return respondError (c , http .StatusServiceUnavailable , requestID , testID , logBuffer , "Timeout in getting a worker!" )
@@ -238,7 +246,7 @@ func (s *server) handleRun(c *echo.Context) error {
238246 logger .Println ("Finished worker cleanup" )
239247
240248 logger .Println ("Adding new worker" )
241- if err := s . workers [ req . Language ] .AddWorkers (1 ); err != nil {
249+ if err := workers .AddWorkers (1 ); err != nil {
242250 logger .Printf ("could not create new worker: %v" , err )
243251 return
244252 }
0 commit comments