Uploaded image for project: 'Debezium'
  1. Debezium
  2. DBZ-2295

Snapshot jmx mbeans name collision on 2nd parallel snapshot

    Details

    • Type: Bug
    • Status: Open (View Workflow)
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 1.2.0.Final
    • Fix Version/s: None
    • Component/s: mysql-connector
    • Labels:
      None
    • Steps to Reproduce:
      Hide
      1. Start the tutorial docker-compose.yml 
      2. Create a minimal connector with inventory.addresses whitelisted and snapshot.new.tables set to "parallel".
      3. Update the connector by adding inventory.customers to the whitelist
      4. Alter records in mysql so that the parallel readers fully reconcile and we have transitioned from the reconcilingBinlogReader to the binlog reader
      5. Update the connector by adding inventory.products to the whitelist and observe the JMX snapshot mbeans.
      Show
      Start the tutorial docker-compose.yml  Create a minimal connector with inventory.addresses  whitelisted and snapshot.new.tables  set to "parallel". Update the connector by adding inventory.customers  to the whitelist Alter records in mysql so that the parallel readers fully reconcile and we have transitioned from the reconcilingBinlogReader to the binlog reader Update the connector by adding inventory.products  to the whitelist and observe the JMX snapshot mbeans.

      Description

      I've noticed that snapshot JMX Mbeans cannot be re-registered for tracking progress of a second successive parallel snapshot. This means for a second update to the table-whitelist, there is no way to view its progress as the JMX metrics continue to show the previous parallel snapshot.

       

       WARN   MySQL|test|task  Error while register the MBean 'debezium.mysql:type=connector-metrics,context=oldBinlog,server=test': debezium.mysql:type=connector-metrics,context=oldBinlog,server=test   [io.debezium.connector.mysql.BinlogReader]
      WARN   MySQL|test|task  Error while register the MBean 'debezium.mysql:type=connector-metrics,context=snapshot,server=test': debezium.mysql:type=connector-metrics,context=snapshot,server=test   [io.debezium.connector.mysql.SnapshotReader]
      WARN   MySQL|test|task  Error while register the MBean 'debezium.mysql:type=connector-metrics,context=newBinlog,server=test': debezium.mysql:type=connector-metrics,context=newBinlog,server=test   [io.debezium.connector.mysql.BinlogReader]

       

       

      DBZ-640 made the move to not unregister the snapshot MBeans immediately after completion (which definitely makes sense), however I'm not sure then how I can force the mbeans to be unregistered before my second parallel snapshot short of restarting the entire connect instance.

       

      Restarting the connector and/or its tasks before updating the table-whitelist again does not seem to unregister the Mbeans since the ChainedReader's destroy() method  only propagates to current and/or remaining readers so I don't see a feasible way of  reaching a completed SnapshotReader's destroy() method which would unregister the Mbeans, so I could re-parallel snapshot without name collisions. 

        Gliffy Diagrams

          Attachments

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                chrislee93 Chris Lee
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated: