You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@solr.apache.org by "Jan Høydahl (Jira)" <ji...@apache.org> on 2021/12/14 14:45:00 UTC

[jira] [Updated] (SOLR-15849) Incorrect use Zookeeper 4LW

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

Jan Høydahl updated SOLR-15849:
-------------------------------
    Component/s: Admin UI

> 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) 
>          Components: Admin UI
>    Affects Versions: 7.5, 8.10.1
>            Reporter: Fa Ming
>            Assignee: Jan Høydahl
>            Priority: Minor
>
> {*}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-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org