@@ -145,30 +145,38 @@ func (s *Manager) SubServerStatus(_ context.Context,
145145
146146// RegisterSubServer will create a new sub-server entry for the Manager to
147147// keep track of.
148- func (s * Manager ) RegisterSubServer (name string , opts ... SubServerOption ) {
148+ func (s * Manager ) RegisterSubServer (name string ,
149+ opts ... SubServerOption ) error {
150+
149151 s .mu .RLock ()
150152 defer s .mu .RUnlock ()
151153
152- s .registerSubServerUnsafe (name , true , opts ... )
154+ return s .registerSubServerUnsafe (name , true , opts ... )
153155}
154156
155157// RegisterAndEnableSubServer will create a new sub-server entry for the
156158// Manager to keep track of and will set it as enabled.
157159func (s * Manager ) RegisterAndEnableSubServer (name string ,
158- opts ... SubServerOption ) {
160+ opts ... SubServerOption ) error {
159161
160162 s .mu .RLock ()
161163 defer s .mu .RUnlock ()
162164
163- s .registerSubServerUnsafe (name , false , opts ... )
165+ return s .registerSubServerUnsafe (name , false , opts ... )
164166}
165167
166168func (s * Manager ) registerSubServerUnsafe (name string , disabled bool ,
167- opts ... SubServerOption ) {
169+ opts ... SubServerOption ) error {
170+
171+ _ , ok := s .subServers [name ]
172+ if ok {
173+ return fmt .Errorf ("a subserver with name %s has already " +
174+ "been registered with the status manager" , name )
175+ }
168176
169- ss : = newSubServer (disabled , opts ... )
177+ s . subServers [ name ] = newSubServer (disabled , opts ... )
170178
171- s . subServers [ name ] = ss
179+ return nil
172180}
173181
174182// SetCustomStatus updates the custom status of the given sub-server to the
0 commit comments