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

bugzillaId-670: Tee filter: statement router loses statements when other router gets enough ahead

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 1.0.2
    • Fix Version/s: 1.1.0
    • Component/s: Plugin, tee
    • Labels:
      None
    • Environment:
      Linux

      Description

      This is import of bugzilla item http://bugs.mariadb.com/show_bug.cgi?id=670
      The fix version in Bugzilla is release-1.0GA in commit 9b52f5e6bab629149ca584c510fd4e805085a1e9

      Description Vilho Raatikka 2014-12-30 11:54:52 UTC
      Statement router (readwritesplit) loses pending statement if the other router executes statements faster than it. Statement router assumes that client doesn't send next statement before previous has replied. The only supported exception is session command which doesn't need to reply before client may send the next statement.

      What happens in practice, is, that when 'next' statement arrives router's routeQuery it finds previous, still pending statement. In Debug build process traps. In Release build the pending command is overwritten.

       
      (gdb) bt
      #0  0x00007f050fa56065 in raise () from /lib64/libc.so.6
      #1  0x00007f050fa574e8 in abort () from /lib64/libc.so.6
      #2  0x00007f050fa4ef72 in __assert_fail_base () from /lib64/libc.so.6
      #3  0x00007f050fa4f022 in __assert_fail () from /lib64/libc.so.6
      #4  0x00007f050c06ddbb in route_single_stmt (inst=0x25ea750, rses=0x7f04d4002350, querybuf=0x7f04d400f130)
          at /home/raatikka/src/git/MaxScale/server/modules/routing/readwritesplit/readwritesplit.c:2372
      #5  0x00007f050c06c2ef in routeQuery (instance=0x25ea750, router_session=0x7f04d4002350, querybuf=0x7f04d400f130)
          at /home/raatikka/src/git/MaxScale/server/modules/routing/readwritesplit/readwritesplit.c:1895
      #6  0x00007f04f03ca573 in routeQuery (instance=0x7f04d4001f20, session=0x7f04d4002050, queue=0x7f04d400f130)
          at /home/raatikka/src/git/MaxScale/server/modules/filter/tee.c:597
      #7  0x00007f04f8df700a in gw_read_client_event (dcb=0x7f04cc0009c0)
          at /home/raatikka/src/git/MaxScale/server/modules/protocol/mysql_client.c:867
      #8  0x000000000058b351 in process_pollq (thread_id=4) at /home/raatikka/src/git/MaxScale/server/core/poll.c:858
      #9  0x000000000058a9eb in poll_waitevents (arg=0x4) at /home/raatikka/src/git/MaxScale/server/core/poll.c:608
      #10 0x00007f0511223e0f in start_thread () from /lib64/libpthread.so.0
      #11 0x00007f050fb0a0dd in clone () from /lib64/libc.so.6
      (gdb)

        Attachments

          Activity

            People

            • Assignee:
              markus makela markus makela
              Reporter:
              timofey.turenko timofey.turenko
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated: