Skip to content

GA Alternator Streams #16367

@nyh

Description

@nyh

Three years ago, we added (#6694) support for the DynamoDB Streams feature (#5065). It is based on CDC, which was experimental at the time, so Alternator Streams was also deemed an experimental feature. Later, when CDC became GA (commit 78649c2), we decided to leave the Alternator Streams experimental, and a special option, '--experimental-features=alternator-streams, was added to enable it.

The purpose of this issue is to call for finally GA'ing (i.e. removing the need for an "experimental-features" option) Alternator Streams, and to outline what needs to be done (if anything) before that.

Here is a list of Alternator Streams issues that we either need to fix before GA, or make a decision that a GA can happen despite these issues not being solved (GA doesn't need to mean perfect and usable with every use case - it can have known, documented, problems and limitations).

UPDATE 7/7/25: We held a meeting to decide which of the issues we'll need to solve for GA, and which can be done later. This is the decision:

Necessary for GA:

Nice to have but not strictly necessary:

To be done later, after the GA:

When all the issues that we decide need to be solved for GA are finally solved, "doing the GA" will mean:

  1. Making the alternator-streams experimental feature UNUSED (in db/config.cc) and remove all checks for it.
  2. Update docs/alternator/compatibility.md about the status of that feature.
  3. Remove the adding of this experimental feature from test/alternator/run and test/alternator/suite.yaml - and proably also dtest and SCT.
  4. However, in test/alternator/run add this feature back when running old versions with the "--release" option: After calling run.run_precompiled_scylla_cmd to set run_scylla_cmd, we need to modify the cmd depending on the release - similar to how run_precompiled_scylla_cmd() (test/cqlpy/run.py) modifies the cmd depending on version for the CQL features it needs. Something like the following in test/alternator/run (untested):
def run_precompiled_alternator_cmd(exe, pid, dir):
    (cmd, env) = run.run_precompiled_scylla_cmd(exe, pid, dir)
    version = os.path.basename(os.path.dirname(exe)).split('~')[0].split('.')
    major = [int(version[0]), int(version[1])]
    if major < [2025, 4]:   # replace by version where Alternator Streams was GAed and experimental option disappeared
       cmd += ['--experimental-features=alternator-streams']
    
if len(sys.argv) > 1 and sys.argv[1] == '--release':
    release = sys.argv[2]
    exe = run.download_precompiled_scylla(release)
    run_scylla_cmd = lambda pid, dir: run_precompiled_alternator_cmd(exe, pid, dir)
    ...

Sub-issues

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions