private void startCache(DistributedSystem system) throws IOException {
    InternalCache internalCache = GemFireCacheImpl.getInstance();
    if (internalCache == null) {
      logger.info("Creating cache for locator.");
      this.internalCache = new InternalCacheBuilder(system.getProperties())
          .create((InternalDistributedSystem) system);
      internalCache = this.internalCache;
    } else {
      logger.info("Using existing cache for locator.");
      ((InternalDistributedSystem) system).handleResourceEvent(ResourceEvent.LOCATOR_START, this);
    }
    startJmxManagerLocationService(internalCache);

    startClusterManagementService();
  }
add this locator to the locators list if not already in, note the locator's
hostname is used, but if it resoves to be the same as what's already in the
list, what's specified by the user is preserved

@param existingLocators the existing configured locators
@param thisLocator this locator's address
@param port this locator's port
@return the comma separated list of locators with this locator added
        if this locator is not already in the list
geode-core/src/main/java/org/apache/geode/distributed/internal/InternalLocator.java