code: public void startRegistrationProcess() {
      // don't advertise that the remote (node) is bound to all IPv4 interfaces (default behavior)
      if (registrationRequest.getConfiguration().host.equals("0.0.0.0")) {
        // remove the value and call fixUpHost to determine the address of a public (non-loopback) IPv4 interface
        registrationRequest.getConfiguration().host = null;
        registrationRequest.getConfiguration().fixUpHost();
      }
      fixUpId();
      LOG.fine("Using the json request : " + new Json().toJson(registrationRequest));
  
      Boolean register = registrationRequest.getConfiguration().register;
      if (register == null) {
        register = false;
      }
  
      if (!register) {
        LOG.info("No registration sent ( register = false )");
      } else {
        final int
            registerCycleInterval =
            registrationRequest.getConfiguration().registerCycle != null ?
            registrationRequest.getConfiguration().registerCycle : 0;
        if (registerCycleInterval > 0) {
          new Thread(new Runnable() { // Thread safety reviewed
  
            @Override
            public void run() {
              boolean first = true;
              LOG.info("Starting auto registration thread. Will try to register every "
                       + registerCycleInterval + " ms.");
              while (true) {
                try {
                  boolean checkForPresence = true;
                  if (first) {
                    first = false;
                    checkForPresence = false;
                  }
                  registerToHub(checkForPresence);
                } catch (GridException e) {
                  LOG.info("Couldn't register this node: " + e.getMessage());
                }
                try {
                  Thread.sleep(registerCycleInterval);
                } catch (InterruptedException e) {
                  e.printStackTrace();
                }
                // While we wait for someone to rewrite server logging.
                LoggingManager.perSessionLogHandler().clearThreadTempLogs();
              }
            }
          }).start();
        } else {
          registerToHub(false);
        }
      }
      LoggingManager.perSessionLogHandler().clearThreadTempLogs();
    }
docs: register the hub following the configuration :
  <p>
  - check if the proxy is already registered before sending a reg request.
  <p>
  - register again every X ms is specified in the config of the node.