code: private void addInstanceTags() {
      List<String> tags = ConfigUtils.getStringList(this.config, GobblinClusterConfigurationKeys.HELIX_INSTANCE_TAGS_KEY);
      HelixManager receiverManager = getReceiverManager();
      if (receiverManager.isConnected()) {
        if (!tags.isEmpty()) {
          logger.info("Adding tags binding " + tags);
          tags.forEach(tag -> receiverManager.getClusterManagmentTool()
              .addInstanceTag(this.clusterName, this.helixInstanceName, tag));
          logger.info("Actual tags binding " + receiverManager.getClusterManagmentTool()
              .getInstanceConfig(this.clusterName, this.helixInstanceName).getTags());
        }
      }
    }
docs: Helix participant cannot pre-configure tags before it connects to ZK. So this method can only be invoked after
  {@link HelixManager#connect()}. However this will still work because tagged jobs won't be sent to a non-tagged instance. Hence
  the job with EXAMPLE_INSTANCE_TAG will remain in the ZK until an instance with EXAMPLE_INSTANCE_TAG was found.