[ 
https://issues.apache.org/jira/browse/SOLR-15849?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jan Høydahl reassigned SOLR-15849:
----------------------------------

    Assignee: Jan Høydahl

> Incorrect use Zookeeper 4LW 
> ----------------------------
>
>                 Key: SOLR-15849
>                 URL: https://issues.apache.org/jira/browse/SOLR-15849
>             Project: Solr
>          Issue Type: Bug
>      Security Level: Public(Default Security Level. Issues are Public) 
>    Affects Versions: 7.5, 8.10.1
>            Reporter: Fa Ming
>            Assignee: Jan Høydahl
>            Priority: Blocker
>
> {*}Error code location{*}:
> org.apache.solr.handler.admin.ZookeeperStatusHandler
> {code:java}
> getZkRawResponse()
>      try (
>         Socket socket = new Socket(host, port);
>         Writer writer = new OutputStreamWriter(socket.getOutputStream(), 
> "utf-8");
>         PrintWriter out = new PrintWriter(writer, true);
>         BufferedReader in = new BufferedReader(new 
> InputStreamReader(socket.getInputStream(), "utf-8"));) {
>       out.println(fourLetterWordCommand);
>       List<String> response = in.lines().collect(Collectors.toList());
>       log.debug("Got response from ZK on host {} and port {}: {}", host, 
> port, response);
> {code}
>  
> Zookeeper only accepts 4LW, but solr socket sends 4LW with \n.
> After reading 4LW, ZooKeeper will call the close method to close the socket. 
> At this time, there will be \n unread in the cache, which will cause the 
> connection that should send FIN to release will be changed to RST, and the 
> solr socket client will throw it out in some cases. The exception 
> (java.net.SocketException: Connection reset) which causes the Solr Admin UI 
> interface zkStatus to be yellow.
>  
> {*}H{*}{*}ere is some amendments by myself:{*}
> {code:java}
>  getZkRawResponse()
>      try (
>         Socket socket = new Socket(host, port);
>         Writer writer = new OutputStreamWriter(socket.getOutputStream(), 
> "utf-8");
>         PrintWriter out = new PrintWriter(writer, true);
>         BufferedReader in = new BufferedReader(new 
> InputStreamReader(socket.getInputStream(), "utf-8"));) {
>       out.print(fourLetterWordCommand);
>       out.flush();
>       List<String> response = in.lines().collect(Collectors.toList());
>       log.debug("Got response from ZK on host {} and port {}: {}", host, 
> port, response);
> {code}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org

Reply via email to