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/13cbc811 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/13cbc811 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/13cbc811 Branch: refs/heads/current-release-line Commit: 13cbc811342378d8fb39f4d03be08145fbc4f986 Parents: 1d66797 Author: Rajat Khandelwal <pro...@apache.org> Authored: Wed Aug 30 16:10:13 2017 +0530 Committer: rajub <raju.bairishe...@lazada.com> Committed: Thu Oct 5 11:13:09 2017 +0800 ---------------------------------------------------------------------- .../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/13cbc811/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); }