code: @Override
      public void registerService(ServiceInstance<T> service) throws Exception
      {
          Entry<T> newEntry = new Entry<T>(service);
          Entry<T> oldEntry = services.putIfAbsent(service.getId(), newEntry);
          Entry<T> useEntry = (oldEntry != null) ? oldEntry : newEntry;
          synchronized(useEntry)
          {
              if ( useEntry == newEntry ) // i.e. is new
              {
                  useEntry.cache = makeNodeCache(service);
              }
              internalRegisterService(service);
          }
      }
docs: Register/re-register/update a group instance
  
  @param service group to add
  @throws Exception errors