Uploaded image for project: 'MariaDB MaxScale'
  1. MariaDB MaxScale
  2. MXS-1203

Batch inserts through Maxscale with C/J stall

    XMLWordPrintable

    Details

    • Sprint:
      2017-31, 2017-32

      Description

      User had reported this issue in MXS-1047 against 2.0.2 - They are still seeing it in 2.0.3, 2.0.4 and 2.1.1

      getting period EOF errors when executing select

      1.5.5 driver
      2.1.1 max scale
      10.1.19-MariaDB-enterprise

      there are no errors on the proxy or on any of the nodes.

      Caused by: java.io.EOFException: unexpected end of stream, read 0 bytes from 4

      at org.mariadb.jdbc.internal.packet.read.ReadPacketFetcher.getReusableBuffer(ReadPacketFetcher.java:178)
      at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.getResult(AbstractQueryProtocol.java:1055)
      Update Issue Reply Reply as Note Assign Issue To Myself Mark as Duplicate Close Issue
      Signup as Authorized Replier Change Status To >

      Test case:

      public class BatchInsert {
       
          static final String ADDRESS = "127.0.0.1";
          static final String PORT = "4006";
          static final String USER = "maxuser";
          static final String PASSWORD = "maxpwd";
          static final String DB = "test";
       
          public static void main(String[] args) {
              try (Connection connection = DriverManager.getConnection("jdbc:mariadb://"
                      + ADDRESS + ":" + PORT + "/" + DB + "?user=" + USER + "&password="
                      + PASSWORD + "&useBatchMultiSendNumber=500")) {
                  Statement stmt = connection.createStatement();
                  stmt.execute("DROP TABLE IF EXISTS tt");
                  stmt.execute("CREATE TABLE tt (d int)ENGINE=BLACKHOLE");
                  for (int i = 0; i < 300; i++) {
                      stmt.addBatch("INSERT INTO tt(d) VALUES (1)");
                      if (i % 3 == 0) {
                          stmt.addBatch("SET @test2='aaa'");
                      }
                  }
                  stmt.executeBatch();
                  System.out.println("finished");
              } catch (Exception e) {
                  System.out.println("Error: " + e.getMessage());
              }
          }
      }
      

      The backend protocol module discarded extra data after a response to session command was received. The router also didn't write data to the master if it was already executing something.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              markus makela markus makela
              Reporter:
              kjoiner Kyle Joiner
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: