[ 
https://issues.apache.org/jira/browse/FLINK-2125?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15089426#comment-15089426
 ] 

ASF GitHub Bot commented on FLINK-2125:
---------------------------------------

Github user tillrohrmann commented on a diff in the pull request:

    https://github.com/apache/flink/pull/1491#discussion_r49204456
  
    --- Diff: 
flink-streaming-java/src/main/java/org/apache/flink/streaming/api/functions/source/SocketTextStreamFunction.java
 ---
    @@ -84,25 +84,25 @@ public SocketTextStreamFunction(String hostname, int 
port, char delimiter, long
        public void run(SourceContext<String> ctx) throws Exception {
                final StringBuilder buffer = new StringBuilder();
                long attempt = 0;
    -           
    +
                while (isRunning) {
    -                   
    +
                        try (Socket socket = new Socket()) {
                                currentSocket = socket;
    -                           
    +
                                LOG.info("Connecting to server socket " + 
hostname + ':' + port);
                                socket.connect(new InetSocketAddress(hostname, 
port), CONNECTION_TIMEOUT_TIME);
                                BufferedReader reader = new BufferedReader(new 
InputStreamReader(socket.getInputStream()));
     
    -                           int data;
    -                           while (isRunning && (data = reader.read()) != 
-1) {
    -                                   // check if the string is complete
    -                                   if (data != delimiter) {
    -                                           buffer.append((char) data);
    -                                   }
    -                                   else {
    -                                           // truncate trailing carriage 
return
    -                                           if (delimiter == '\n' && 
buffer.length() > 0 && buffer.charAt(buffer.length() - 1) == '\r') {
    +                           char[] charBuffer = new 
char[Math.max(8192,delimiter.length()*2)];
    +                           int bytesRead;
    +                           while (isRunning && (bytesRead = 
reader.read(charBuffer)) != -1) {
    +                                   String input = new String(charBuffer, 
0, bytesRead);
    +                                   int start = 0,pos;
    +                                   while ((pos = input.indexOf(delimiter, 
start)) > -1) {
    --- End diff --
    
    What happens if `input` does not contain `delimiter`? And what happens with 
the input part after the last delimiter?


> String delimiter for SocketTextStream
> -------------------------------------
>
>                 Key: FLINK-2125
>                 URL: https://issues.apache.org/jira/browse/FLINK-2125
>             Project: Flink
>          Issue Type: Improvement
>          Components: Streaming
>    Affects Versions: 0.9
>            Reporter: Márton Balassi
>            Priority: Minor
>              Labels: starter
>
> The SocketTextStreamFunction uses a character delimiter, despite other parts 
> of the API using String delimiter.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to