diff options
author | Janak Ramakrishnan <janakr@google.com> | 2017-02-13 10:09:40 +0000 |
---|---|---|
committer | Dmitry Lomov <dslomov@google.com> | 2017-02-13 11:34:44 +0000 |
commit | 309a43ba7b4b2f50ea582e79763022e663c77715 (patch) | |
tree | 9673ac602f7d95a64ed37e6c634b5f7caea46f64 /src/main/java/com/google/devtools/build/lib/skyframe/PackageProgressReceiver.java | |
parent | 381275aae86e14ce68f772dd5f0d2cd6cf0c39c3 (diff) |
Fix PackageProgressReceiver to not call contains on a list.
--
PiperOrigin-RevId: 147323591
MOS_MIGRATED_REVID=147323591
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/PackageProgressReceiver.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/PackageProgressReceiver.java | 38 |
1 files changed, 16 insertions, 22 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageProgressReceiver.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageProgressReceiver.java index 3a394d0cd9..65214c8bd5 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageProgressReceiver.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageProgressReceiver.java @@ -13,12 +13,10 @@ // limitations under the License. package com.google.devtools.build.lib.skyframe; +import com.google.common.collect.Iterables; import com.google.devtools.build.lib.cmdline.PackageIdentifier; - import com.google.devtools.build.lib.util.Pair; - -import java.util.ArrayDeque; -import java.util.Deque; +import java.util.LinkedHashSet; /** * A class that, when beeing told about start and end of a package @@ -28,23 +26,17 @@ import java.util.Deque; public class PackageProgressReceiver { private int packagesCompleted; - private Deque<PackageIdentifier> pending = new ArrayDeque<>(); + private LinkedHashSet<PackageIdentifier> pendingSet = new LinkedHashSet<>(); - /** - * Register that loading a package has started. - */ - public synchronized void startReadPackage(PackageIdentifier packageId) { - if (!pending.contains(packageId)) { - pending.addLast(packageId); - } + /** Register that loading a package has started. */ + synchronized void startReadPackage(PackageIdentifier packageId) { + pendingSet.add(packageId); } - /** - * Register that loding a package has completed. - */ - public synchronized void doneReadPackage(PackageIdentifier packageId) { + /** Register that loding a package has completed. */ + synchronized void doneReadPackage(PackageIdentifier packageId) { packagesCompleted++; - pending.remove(packageId); + pendingSet.remove(packageId); } /** @@ -53,7 +45,7 @@ public class PackageProgressReceiver { */ public synchronized void reset() { packagesCompleted = 0; - pending = new ArrayDeque<>(); + pendingSet = new LinkedHashSet<>(); } /** @@ -64,10 +56,12 @@ public class PackageProgressReceiver { public synchronized Pair<String, String> progressState() { String progress = "" + packagesCompleted + " packages loaded"; StringBuffer activity = new StringBuffer(); - if (pending.size() > 0) { - activity.append("currently loading: ").append(pending.peekFirst().toString()); - if (pending.size() > 1) { - activity.append(" ... (" + pending.size() + " packages)"); + if (pendingSet.size() > 0) { + activity + .append("currently loading: ") + .append(Iterables.getFirst(pendingSet, null).toString()); + if (pendingSet.size() > 1) { + activity.append(" ... (" + pendingSet.size() + " packages)"); } } return new Pair<String, String>(progress, activity.toString()); |