Fa Ming created SOLR-15849:
------------------------------

             Summary: 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: 8.10.1, 7.5
            Reporter: Fa Ming


{*}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