unecessary invocation of exists and readData for each listener?
Opened this issue · 0 comments
wy96f commented
Could the code below:
private void fireDataChangedEvents(final String path, Set<IZkDataListener> listeners) {
for (final IZkDataListener listener : listeners) {
_eventThread.send(new ZkEvent("Data of " + path + " changed sent to " + listener) {
@Override
public void run() throws Exception {
// reinstall watch
exists(path, true);
try {
Object data = readData(path, null, true);
listener.handleDataChange(path, data);
} catch (ZkNoNodeException e) {
listener.handleDataDeleted(path);
}
}
});
}
}
modify as:
private void fireDataChangedEvents(final String path, Set<IZkDataListener> listeners) {
_eventThread.send(new ZkEvent("Data of " + path + " changed sent to " + listeners) {
@Override
public void run() throws Exception {
// reinstall watch
exists(path, true);
try {
Object data = readData(path, null, true);
for (final IZkDataListener listener : listeners) {
listener.handleDataChange(path, data);
}
} catch (ZkNoNodeException e) {
for (final IZkDataListener listener : listeners) {
listener.handleDataDeleted(path);
}
}
}
});
}