Merge pull request #1399 from open-keychain/thread-cleanup

Kill search threads that have not returned
This commit is contained in:
Dominik Schürmann
2015-07-02 00:52:12 +02:00

View File

@@ -45,6 +45,7 @@ public class CloudSearch {
} }
final ImportKeysList results = new ImportKeysList(servers.size()); final ImportKeysList results = new ImportKeysList(servers.size());
ArrayList<Thread> searchThreads = new ArrayList<>();
for (final Keyserver keyserver : servers) { for (final Keyserver keyserver : servers) {
Runnable r = new Runnable() { Runnable r = new Runnable() {
@Override @Override
@@ -57,13 +58,19 @@ public class CloudSearch {
results.finishedAdding(); // notifies if all searchers done results.finishedAdding(); // notifies if all searchers done
} }
}; };
new Thread(r).start(); Thread searchThread = new Thread(r);
searchThreads.add(searchThread);
searchThread.start();
} }
// wait for either all the searches to come back, or 10 seconds // wait for either all the searches to come back, or 10 seconds
synchronized (results) { synchronized (results) {
try { try {
results.wait(10 * SECONDS); results.wait(10 * SECONDS);
for (Thread thread : searchThreads) {
// kill threads that haven't returned yet
thread.interrupt();
}
} catch (InterruptedException e) { } catch (InterruptedException e) {
} }
} }