@@ -27,7 +27,7 @@ import (
2727// All the tasks workers process are registered against the server
2828type Server struct {
2929 config * config.Config
30- registeredTasks map [ string ] interface {}
30+ registeredTasks * sync. Map
3131 broker brokersiface.Broker
3232 backend backendsiface.Backend
3333 lock lockiface.Lock
@@ -39,7 +39,7 @@ type Server struct {
3939func NewServer (cnf * config.Config , brokerServer brokersiface.Broker , backendServer backendsiface.Backend , lock lockiface.Lock ) * Server {
4040 srv := & Server {
4141 config : cnf ,
42- registeredTasks : make ( map [ string ] interface {} ),
42+ registeredTasks : new (sync. Map ),
4343 broker : brokerServer ,
4444 backend : backendServer ,
4545 lock : lock ,
@@ -56,7 +56,7 @@ func NewServer(cnf *config.Config, brokerServer brokersiface.Broker, backendServ
5656func NewServerWithBrokerBackendLock (cnf * config.Config , brokerServer brokersiface.Broker , backendServer backendsiface.Backend , lock lockiface.Lock ) * Server {
5757 srv := & Server {
5858 config : cnf ,
59- registeredTasks : map [ string ] interface {}{} ,
59+ registeredTasks : new (sync. Map ) ,
6060 broker : brokerServer ,
6161 backend : backendServer ,
6262 lock : lock ,
@@ -131,7 +131,9 @@ func (server *Server) RegisterTasks(namedTaskFuncs map[string]interface{}) error
131131 return err
132132 }
133133 }
134- server .registeredTasks = namedTaskFuncs
134+ for k , v := range namedTaskFuncs {
135+ server .registeredTasks .Store (k , v )
136+ }
135137 server .broker .SetRegisteredTaskNames (server .GetRegisteredTaskNames ())
136138 return nil
137139}
@@ -141,20 +143,20 @@ func (server *Server) RegisterTask(name string, taskFunc interface{}) error {
141143 if err := tasks .ValidateTask (taskFunc ); err != nil {
142144 return err
143145 }
144- server .registeredTasks [ name ] = taskFunc
146+ server .registeredTasks . Store ( name , taskFunc )
145147 server .broker .SetRegisteredTaskNames (server .GetRegisteredTaskNames ())
146148 return nil
147149}
148150
149151// IsTaskRegistered returns true if the task name is registered with this broker
150152func (server * Server ) IsTaskRegistered (name string ) bool {
151- _ , ok := server .registeredTasks [ name ]
153+ _ , ok := server .registeredTasks . Load ( name )
152154 return ok
153155}
154156
155157// GetRegisteredTask returns registered task by name
156158func (server * Server ) GetRegisteredTask (name string ) (interface {}, error ) {
157- taskFunc , ok := server .registeredTasks [ name ]
159+ taskFunc , ok := server .registeredTasks . Load ( name )
158160 if ! ok {
159161 return nil , fmt .Errorf ("Task not registered error: %s" , name )
160162 }
@@ -328,12 +330,12 @@ func (server *Server) SendChord(chord *tasks.Chord, sendConcurrency int) (*resul
328330
329331// GetRegisteredTaskNames returns slice of registered task names
330332func (server * Server ) GetRegisteredTaskNames () []string {
331- taskNames := make ([]string , len ( server . registeredTasks ) )
332- var i = 0
333- for name := range server .registeredTasks {
334- taskNames [ i ] = name
335- i ++
336- }
333+ taskNames := make ([]string , 0 )
334+
335+ server .registeredTasks . Range ( func ( key , value interface {}) bool {
336+ taskNames = append ( taskNames , key .( string ))
337+ return true
338+ })
337339 return taskNames
338340}
339341
0 commit comments