diff --git a/base/src/com/google/idea/blaze/base/qsync/QuerySyncAsyncFileListener.java b/base/src/com/google/idea/blaze/base/qsync/QuerySyncAsyncFileListener.java index dd23f2880d8..ad67384d257 100644 --- a/base/src/com/google/idea/blaze/base/qsync/QuerySyncAsyncFileListener.java +++ b/base/src/com/google/idea/blaze/base/qsync/QuerySyncAsyncFileListener.java @@ -173,7 +173,6 @@ public interface SyncRequester { private static class QueueingSyncRequester implements SyncRequester { private final Project project; - private final AtomicBoolean changePending = new AtomicBoolean(false); private final ConcurrentLinkedQueue unprocessedChanges = new ConcurrentLinkedQueue<>(); public QueueingSyncRequester(Project project) { @@ -192,9 +191,7 @@ public void afterQuerySync(Project project, BlazeContext context) { if (!requester.project.equals(project)) { return; } - if (requester.changePending.get()) { - requester.requestSyncInternal(ImmutableList.of()); - } + requester.requestSync(ImmutableList.of()); } }, parentDisposable); @@ -206,8 +203,9 @@ public void requestSync(@NotNull Collection files) { logger.info(String.format("Putting %d files into sync queue", files.size())); ImmutableList changesToProcess = ImmutableList.of(); synchronized (unprocessedChanges) { + // TODO aggregate multiple events into one sync request unprocessedChanges.addAll(files); - if (changePending.compareAndSet(false, true)) { + if (!unprocessedChanges.isEmpty()) { if (!BlazeSyncStatus.getInstance(project).syncInProgress()) { changesToProcess = ImmutableList.copyOf(unprocessedChanges); unprocessedChanges.clear(); @@ -220,12 +218,11 @@ public void requestSync(@NotNull Collection files) { } private void requestSyncInternal(ImmutableCollection files) { - logger.info(String.format("Requesting sync of %d files", files.size())); + logger.info(String.format("Requesting sync of files: %s", files)); QuerySyncManager.getInstance(project) .deltaSync( QuerySyncActionStatsScope.createForFiles(QuerySyncAsyncFileListener.class, null, files), TaskOrigin.AUTOMATIC); - changePending.set(false); } }