YARN-5199. Close LogReader in in AHSWebServices#getStreamingOutput and
FileInputStream in NMWebServices#getLogs. Contributed by Xuan Gong
(cherry picked from commit 58be55b6e0
)
This commit is contained in:
parent
6a9f38ebaf
commit
10f0c0475e
|
@ -40,7 +40,6 @@ import javax.ws.rs.core.Response;
|
|||
import javax.ws.rs.core.StreamingOutput;
|
||||
import javax.ws.rs.core.Response.ResponseBuilder;
|
||||
import javax.ws.rs.core.Response.Status;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Public;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.conf.Configuration;
|
||||
|
@ -363,8 +362,9 @@ public class AHSWebServices extends WebServices {
|
|||
if ((nodeId == null || nodeName.contains(LogAggregationUtils
|
||||
.getNodeString(nodeId))) && !nodeName.endsWith(
|
||||
LogAggregationUtils.TMP_FILE_SUFFIX)) {
|
||||
AggregatedLogFormat.LogReader reader =
|
||||
new AggregatedLogFormat.LogReader(conf,
|
||||
AggregatedLogFormat.LogReader reader = null;
|
||||
try {
|
||||
reader = new AggregatedLogFormat.LogReader(conf,
|
||||
thisNodeFile.getPath());
|
||||
DataInputStream valueStream;
|
||||
LogKey key = new LogKey();
|
||||
|
@ -392,7 +392,8 @@ public class AHSWebServices extends WebServices {
|
|||
sb.append("LogLength:");
|
||||
sb.append(fileLengthStr + "\n");
|
||||
sb.append("Log Contents:\n");
|
||||
byte[] b = sb.toString().getBytes(Charset.forName("UTF-8"));
|
||||
byte[] b = sb.toString().getBytes(
|
||||
Charset.forName("UTF-8"));
|
||||
os.write(b, 0, b.length);
|
||||
|
||||
long toSkip = 0;
|
||||
|
@ -437,7 +438,8 @@ public class AHSWebServices extends WebServices {
|
|||
long totalSkipped = 0;
|
||||
long currSkipped = 0;
|
||||
while (currSkipped != -1 && totalSkipped < fileLength) {
|
||||
currSkipped = valueStream.skip(fileLength - totalSkipped);
|
||||
currSkipped = valueStream.skip(
|
||||
fileLength - totalSkipped);
|
||||
totalSkipped += currSkipped;
|
||||
}
|
||||
}
|
||||
|
@ -445,6 +447,11 @@ public class AHSWebServices extends WebServices {
|
|||
break;
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
if (reader != null) {
|
||||
reader.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
os.flush();
|
||||
|
|
|
@ -37,7 +37,7 @@ import javax.ws.rs.core.Response.ResponseBuilder;
|
|||
import javax.ws.rs.core.Response.Status;
|
||||
import javax.ws.rs.core.StreamingOutput;
|
||||
import javax.ws.rs.core.UriInfo;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Public;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.api.records.ApplicationId;
|
||||
|
@ -236,7 +236,6 @@ public class NMWebServices {
|
|||
}
|
||||
boolean downloadFile = parseBooleanParam(download);
|
||||
final long bytes = parseLongParam(size);
|
||||
|
||||
try {
|
||||
final FileInputStream fis = ContainerLogsUtils.openLogFileForRead(
|
||||
containerIdStr, logFile, nmContext);
|
||||
|
@ -246,6 +245,7 @@ public class NMWebServices {
|
|||
@Override
|
||||
public void write(OutputStream os) throws IOException,
|
||||
WebApplicationException {
|
||||
try {
|
||||
int bufferSize = 65536;
|
||||
byte[] buf = new byte[bufferSize];
|
||||
long toSkip = 0;
|
||||
|
@ -282,6 +282,9 @@ public class NMWebServices {
|
|||
len = fis.read(buf, 0, toRead);
|
||||
}
|
||||
os.flush();
|
||||
} finally {
|
||||
IOUtils.closeQuietly(fis);
|
||||
}
|
||||
}
|
||||
};
|
||||
ResponseBuilder resp = Response.ok(stream);
|
||||
|
|
Loading…
Reference in New Issue