[ https://issues.apache.org/jira/browse/YARN-9076?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16781743#comment-16781743 ]
BELUGA BEHR commented on YARN-9076: ----------------------------------- [~giovanni.fumarola] Hello. Thank you for your review. I see what you mean. I'm not sure what the purpose of this 4K buffer is... maybe to protect from a bad client that sends an unlimited stream of data? I don't really know. However, I have provided a new patch that again caps the read at max 4K. Also, using {{available()}} is almost never the correct thing to do. It's return value can be very funky. Every {{InputStream}} implementation does it differently. > ContainerShellWebSocket Render Process Output > --------------------------------------------- > > Key: YARN-9076 > URL: https://issues.apache.org/jira/browse/YARN-9076 > Project: Hadoop YARN > Issue Type: Improvement > Components: webapp > Affects Versions: 3.3.0 > Reporter: BELUGA BEHR > Assignee: BELUGA BEHR > Priority: Minor > Attachments: YARN-9076.1.patch, YARN-9076.2.patch > > > {code:java|title=ContainerShellWebSocket.java} > // Render process output > int no = pair.in.available(); > pair.in.read(buffer, 0, Math.min(no, buffer.length)); > String formatted = new String(buffer, Charset.forName("UTF-8")) > .replaceAll("\n", "\r\n"); > session.getRemote().sendString(formatted); > } > {code} > This code strikes me as a bit odd. First of it, it is using {{available{}}} > which is known as a being unreliable and inaccurate (i.e., for sockets) . > Second, it will only read a max of 4000 characters and that's it. Anything > else is truncated. > Change this code to read the entire data stream. -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: yarn-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: yarn-issues-h...@hadoop.apache.org