Uploaded image for project: 'Kafka'
  1. Kafka
  2. KAFKA-14760

Move ThroughputThrottler, break connect-runtime dependency on tools



    • Task
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 3.6.0
    • connect, tools
    • None


      Currently there is only one dependency on the `tools` module, `connect-runtime`.
      This dependency is only for one class, the ThroughputThrottler. This class is used by:

      1. tools main ProducerPerformance
      2. tools main VerifiableProducer
      3. runtime main SchemaSourceConnector
      4. runtime main VerifiableSourceConnector
      5. runtime test MonitorableSourceConnector

      For KAFKA-14627, I want to be able to have `tools` (test) depend on `connect-runtime` (test). This is because we are adding a connect-specific command-line utility, and wish to re-use some of the existing connect test infrastructure to unit test the new command-line utility. Unfortunately naively adding this new dependency to tools causes a circular dependency that prevents the project from building.

      Instead of refactoring the connect-specific test utilities out to a new package that both runtime and tools can depend on, it appears to make more sense to move the more generic `ThroughputThrottler` class into some common package.

      This common package could be:
      1. clients
      2. server common
      3. some other existing package which would be a new dependency for tools
      4. a new package consisting of just the `ThroughputThrottler` class

      I'm not sure which one of these makes the most sense, and would appreciate guidance on what would make the most sense for ownership and maintenance.


        Issue Links



              gharris1727 Greg Harris
              gharris1727 Greg Harris
              Ismael Juma Ismael Juma
              0 Vote for this issue
              1 Start watching this issue