LENS-1465: Sync queries blocking threads
Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/f4fdab01 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/f4fdab01 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/f4fdab01 Branch: refs/heads/master Commit: f4fdab01395357159b2c641c8e6aa88223551838 Parents: 806703e Author: Rajat Khandelwal <pro...@apache.org> Authored: Wed Aug 30 16:10:13 2017 +0530 Committer: Rajat Khandelwal <rajatgupt...@gmail.com> Committed: Wed Aug 30 16:10:13 2017 +0530 ---------------------------------------------------------------------- .../org/apache/lens/server/api/query/QueryContext.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lens/blob/f4fdab01/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryContext.java ---------------------------------------------------------------------- diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryContext.java b/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryContext.java index 466fb25..8176f03 100644 --- a/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryContext.java +++ b/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryContext.java @@ -198,7 +198,7 @@ public class QueryContext extends AbstractQueryContext implements FailureContext @Getter @Setter private transient Future queryLauncher; - transient List<QueryDriverStatusUpdateListener> driverStatusUpdateListeners = Lists.newArrayList(); + transient List<QueryDriverStatusUpdateListener> driverStatusUpdateListeners = Lists.newCopyOnWriteArrayList(); @Getter @Setter List<FailedAttempt> failedAttempts = Lists.newArrayList(); @@ -572,10 +572,9 @@ public class QueryContext extends AbstractQueryContext implements FailureContext getDriverStatus().setStatusMessage("Query " + getQueryHandleString() + " " + state.name().toLowerCase()); } getDriverStatus().setState(state); - synchronized (this) { - for (QueryDriverStatusUpdateListener listener : this.driverStatusUpdateListeners) { - listener.onDriverStatusUpdated(getQueryHandle(), getDriverStatus()); - } + + for (QueryDriverStatusUpdateListener listener : this.driverStatusUpdateListeners) { + listener.onDriverStatusUpdated(getQueryHandle(), getDriverStatus()); } } @@ -588,7 +587,7 @@ public class QueryContext extends AbstractQueryContext implements FailureContext } - public synchronized void registerStatusUpdateListener(QueryDriverStatusUpdateListener driverStatusUpdateListener) { + public void registerStatusUpdateListener(QueryDriverStatusUpdateListener driverStatusUpdateListener) { this.driverStatusUpdateListeners.add(driverStatusUpdateListener); }