improve logging of happy eyeball

This commit is contained in:
genofire 2020-02-09 12:19:00 +01:00
parent 0e32326d22
commit 1bac752e30
No known key found for this signature in database
GPG Key ID: 9D7D3C6BFF600C6A
1 changed files with 16 additions and 9 deletions

View File

@ -136,14 +136,12 @@ public class Resolver {
threads[2].interrupt();
synchronized (results) {
Collections.sort(results);
Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": " + results.toString());
return happyEyeball(results);
}
} else {
threads[2].join();
synchronized (fallbackResults) {
Collections.sort(fallbackResults);
Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": " + fallbackResults.toString());
return happyEyeball(fallbackResults);
}
}
@ -262,6 +260,8 @@ public class Resolver {
}
private static Result happyEyeball(List<Result> r) {
String logID = Long.toHexString(Double.doubleToLongBits(Math.random()));
Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": happy eyeball (" + logID + ") with " + r.toString());
if (r.size() == 0) return null;
Result result;
@ -280,22 +280,22 @@ public class Resolver {
while (true) {
try {
if (executor.awaitTermination(5, TimeUnit.SECONDS)) break;
Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": happy eyeball wait for cleanup ...");
Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": happy eyeball (" + logID + ") wait for cleanup ...");
} catch (InterruptedException e) {}
}
Log.i(Config.LOGTAG, Resolver.class.getSimpleName() + ": happy eyeball cleanup");
Log.i(Config.LOGTAG, Resolver.class.getSimpleName() + ": happy eyeball (" + logID + ") cleanup");
for (Result re : r) {
if(!re.equals(result)) re.disconnect();
if(!re.equals(result)) re.disconnect(logID);
}
});
disconnector.start();
Log.i(Config.LOGTAG, Resolver.class.getSimpleName() + ": happy eyeball used: " + result.toString());
Log.i(Config.LOGTAG, Resolver.class.getSimpleName() + ": happy eyeball (" + logID + ") used: " + result.toString());
return result;
} catch (InterruptedException e) {
Log.e(Config.LOGTAG, Resolver.class.getSimpleName() + ": happy eyeball failed: ", e);
Log.e(Config.LOGTAG, Resolver.class.getSimpleName() + ": happy eyeball (" + logID + ") failed: ", e);
return null;
} catch (ExecutionException e) {
Log.i(Config.LOGTAG, Resolver.class.getSimpleName() + ": happy eyeball unable to connect to one address");
Log.i(Config.LOGTAG, Resolver.class.getSimpleName() + ": happy eyeball (" + logID + ") unable to connect to one address");
return null;
}
}
@ -408,10 +408,17 @@ public class Resolver {
}
public void disconnect() {
this.disconnect("");
}
public void disconnect(String logID) {
if (this.socket != null ) {
FileBackend.close(this.socket);
this.socket = null;
Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": Result disconnect: " + toString());
if (!logID.isEmpty()) {
Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": Result (" + logID + ") disconnect: " + toString());
} else {
Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": Result disconnect: " + toString());
}
}
}