in src/main/java/com/microsoft/azure/spark/tools/job/YarnContainerLogFetcher.java [187:216]
private Observable<URI> convertToPublicLogUri(final URI internalLogUri) {
if (logConversionMode.isInitialized()) {
return logConversionMode.observable()
.first()
.map(conversionMode -> conversionMode.toPublic(internalLogUri));
}
while (this.logConversionProbingModes.hasNext()) {
// Try next mode
final LogConversionMode probeMode = this.logConversionProbingModes.next();
final URI uriProbe = probeMode.toPublic(internalLogUri);
if (isUriValid(uriProbe).toBlocking().firstOrDefault(false)) {
// Find usable one
log().debug("The Yarn log URL conversion mode is "
+ probeMode.name
+ " with pattern "
+ probeMode.publicPathTemplate);
logConversionMode.set(probeMode);
return Observable.just(uriProbe);
}
}
// All modes were probed and all failed
log().warn("Can't find conversion mode of Yarn " + getYarnNMConnectUri());
return Observable.error(new NoContainerPublicUriConversionException(
"Can't find conversion mode of Yarn " + getYarnNMConnectUri()));
}