public void update(String path, T data, Stat stat) {
String parentPath = HelixUtil.getZkParentPath(path);
String childName = HelixUtil.getZkName(path);
addToParentChildSet(parentPath, childName);
ZNode znode = _cache.get(path);
if (znode == null) {
_cache.put(path, new ZNode(path, data, stat));
fireEvents(path, EventType.NodeCreated);
} else {
Stat oldStat = znode.getStat();
znode.setData(data);
znode.setStat(stat);
// System.out.println("\t\t--setData. path: " + path + ", data: " + data);
if (oldStat.getCzxid() != stat.getCzxid()) {
fireEvents(path, EventType.NodeDeleted);
fireEvents(path, EventType.NodeCreated);