docs: public void write(String path, String value) throws InterruptedException, KeeperException {
  
          int retries = 0;
          while (true) {
  
              try {
  
                  Stat stat = zk.exists(path, false);
  
                  if (stat == null) {
  
                      zk.create(path, value.getBytes(CHARSET), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
  
                  } else {
  
                      zk.setData(path, value.getBytes(CHARSET), stat.getVersion());
                  }
  
                  break;
  
              } catch (KeeperException.SessionExpiredException e) {
  
                  throw e;
  
              } catch (KeeperException e) {
  
                  LOGGER.warn("write connect lost... will retry " + retries + "\t" + e.toString());
  
                  if (retries++ == MAX_RETRIES) {
                      throw e;
                  }
                  // sleep then retry
                  int sec = RETRY_PERIOD_SECONDS * retries;
                  LOGGER.warn("sleep " + sec);
                  TimeUnit.SECONDS.sleep(sec);
              }
          }
      }