@Override
    public Boolean call() {
      try {
        ZKPropertyStore<ZNRecord> store =
            new ZKPropertyStore<ZNRecord>(
                new ZkClient(ZK_ADDR), new PropertyJsonSerializer<ZNRecord>(ZNRecord.class), _root);
        PropertyJsonComparator<ZNRecord> comparator =
            new PropertyJsonComparator<ZNRecord>(ZNRecord.class);
        long id = Thread.currentThread().getId();

        store.setProperty("key1", _record);

        boolean success;
        do {
          ZNRecord current = store.getProperty("key1");
          ZNRecord update = new ZNRecord(current);
          update.setSimpleField("thread_" + id, "simpleValue");

          success = store.compareAndSet("key1", current, update, comparator);
        } while (!success);

        return Boolean.TRUE;
      } catch (Exception e) {
        LOG.error(e);
        return Boolean.FALSE;
      }
    }
    @Override
    public Boolean call() {
      try {
        ZKPropertyStore<ZNRecord> store =
            new ZKPropertyStore<ZNRecord>(
                new ZkClient(ZK_ADDR), new PropertyJsonSerializer<ZNRecord>(ZNRecord.class), _root);

        store.setProperty("key2", _record);
        store.updatePropertyUntilSucceed("key2", new TestUpdater());

        return Boolean.TRUE;
      } catch (Exception e) {
        LOG.error(e);
        return Boolean.FALSE;
      }
    }