Skip to content

[Umbrella] Kafka Protocols Compatibility - Basic Produce #4185

Description

@gyang94

Search before asking

  • I searched in the issues and found nothing similar.

Motivation

Apache Fluss needs a first Kafka protocol compatibility milestone that allows standard Kafka producers to discover Fluss tables and write records without changing the Kafka client.

The target workflow is DDL-first: users create and manage tables and schemas through Fluss DDL, then produce JSON records through the Kafka protocol. Schema-aware conversion maps records into the pre-defined table schema and existing Fluss storage format. Kafka CreateTopics, DeleteTopics, and automatic table creation are not part of this milestone.

This umbrella is issue-driven: define a focused child issue, link its implementation PR, review it, and then move to the next capability. The foundation and Basic Produce tasks below follow dependency order. The previous four-PR approach has been retired and is not part of the current dependency chain.

Sub-tasks

Only scoped child issues are listed here. Each issue owns its scope, acceptance criteria, dependencies, and implementation PR. An issue is complete after the reviewed implementation meets those criteria and is merged, not merely after a PR is opened.

Foundation

Review and dependency order: #4264 → #4265 → #4275 → #4266.

Basic Produce

Core changes (independent review and merge)

Planned follow-ups

Create additional child issues progressively after the scoped foundation and Basic Produce tasks. These are directions for later issue scoping, not a commitment to reuse the closed implementation PRs.

Capability

  • SASL/PLAIN authentication: handshake, per-connection authentication state, and credential validation.
  • Schema-aware JSON Produce: table-metadata-based record mapping, JSON decoding, validation, and conversion to Fluss rows.

Delivery

  • End-to-end validation of DDL → Metadata → Kafka producer → Fluss readback, including schema handling, acknowledgements, authentication, and failure cases.
  • Configuration and compatibility documentation, supported API/version boundaries, DDL/JSON examples, and Fluss RPC/server regression coverage.

Future Work

Outside this Basic Produce milestone:

  • Idempotent and transactional Produce.
  • Bounded Produce admission and flow control.
  • Kafka consumer and Fetch compatibility.
  • Further authoritative ISR propagation and publisher/cache hardening beyond Metadata discovery.

Review workflow

  1. Create a child issue with a bounded scope, acceptance criteria, and explicit dependencies.
  2. Link a focused implementation PR to that child issue; do not close the umbrella from an individual PR.
  3. Review Kafka feature issues in dependency order. Keep dependent PRs as drafts and use incremental comparisons while prerequisites are unmerged.
  4. As prerequisites merge, rebase dependent branches onto the updated main and validate again. Record completion through the child issues, then scope the next unit.

Willingness to contribute

  • I'm willing to submit a PR!

Activity

  1. added theissue type on Sep 1, 2026
  2. changed the title [-]Kafka Protocols Compatibility - Basic Produce[/-] [+][Umbrella] Kafka Protocols Compatibility - Basic Produce[/+] on Sep 1, 2026
  3. dstolis commented on Sep 29, 2026

    @dstolis

    Hi @gyang94 , I'd like to help with Kafka compatibility, starting with the Produce path. Is there a child issue I could pick up, and could I help with testing as the PRs land?

  4. gyang94 commented on Oct 4, 2026

    @gyang94
    ContributorAuthor

    @dstolis Thanks for your interest in this topic and sorry for the late reply. Currently I have implemented the necessary code for the basic produce path and do some performance testing. There is a brief introduction about the progress in the last community call(in September 24th, doc: https://docs.google.com/document/d/1Fgj_ER50RhDRS6cAOggSHT2EPs3fGzsjz3EnW2ndJYU/edit?tab=t.0)

    But it is not done. I believe there must be many places could be improved, and I am happy to work with you on any issue, testing and optimizing. One consideration is that, in the current status, the child issue you asked for, its feature implementation will be based on my "not yet merged" code instead of the main branch, which is not good since my code may change a lot after review. I'd suggest that, after merging existing code to the main, which means we settle down the fundamental necessary kafka compatibility codebase or framework, then we can work together to play around the code, do testing, and open issues to keep improving and optimizing it.

    What do you think?

    btw, I have put my whole implemented code in my forked repo, if you are interest you can take a look: https://github.com/gyang94/fluss/tree/kafka-compatibility-test-1

  5. dstolis commented on Oct 6, 2026

    @dstolis

    @dstolis Thanks for your interest in this topic and sorry for the late reply. Currently I have implemented the necessary code for the basic produce path and do some performance testing. There is a brief introduction about the progress in the last community call(in September 24th, doc: https://docs.google.com/document/d/1Fgj_ER50RhDRS6cAOggSHT2EPs3fGzsjz3EnW2ndJYU/edit?tab=t.0)

    But it is not done. I believe there must be many places could be improved, and I am happy to work with you on any issue, testing and optimizing. One consideration is that, in the current status, the child issue you asked for, its feature implementation will be based on my "not yet merged" code instead of the main branch, which is not good since my code may change a lot after review. I'd suggest that, after merging existing code to the main, which means we settle down the fundamental necessary kafka compatibility codebase or framework, then we can work together to play around the code, do testing, and open issues to keep improving and optimizing it.

    What do you think?

    btw, I have put my whole implemented code in my forked repo, if you are interest you can take a look: https://github.com/gyang94/fluss/tree/kafka-compatibility-test-1

    Hi @gyang94, thanks for the update. That plan makes sense. I opened a small PR against your fork with my initial findings. Feel free to cherry-pick what's useful and happy to support you further.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions