Skip to content

Adds some extra logging to GCP Spanner Changestream Source - #36289

Closed
acrites wants to merge 8 commits into
apache:masterfrom
acrites:changestream-logs
Closed

Adds some extra logging to GCP Spanner Changestream Source#36289
acrites wants to merge 8 commits into
apache:masterfrom
acrites:changestream-logs

Conversation

@acrites

@acrites acrites commented Sep 25, 2025

Copy link
Copy Markdown
Contributor

Adds logging of creation as well as min watermark to changestream source to help debug potential watermark moving backwards.


Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

  • Mention the appropriate issue in your description (for example: addresses #123), if applicable. This will automatically add a link to the pull request in the issue. If you would like the issue to automatically close on merging the pull request, comment fixes #<ISSUE NUMBER> instead.
  • Update CHANGES.md with noteworthy changes.
  • If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.

To check the build health, please visit https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md

GitHub Actions Tests Status (on master branch)

Build python source distribution and wheels
Python tests
Java tests
Go tests

See CI.md for more information about GitHub Actions CI or the workflows README to see a list of phrases to trigger workflows.

…no guarantee on the order keys are returned. Also fixes a couple warnings from other FnApi tests.
… a missing FnApi state proto to get all of the entries of a multimap. This type of access is part of the state API (and supported by the non-portable harness), but was not present in the protos.
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @acrites, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly advances Apache Beam's stateful processing by fully enabling and implementing MultimapState support within the Fn API, allowing pipelines to efficiently manage and retrieve all entries from multimap user states. Alongside this major functional addition, a minor but important logging improvement has been integrated into the GCP Spanner Changestream Source to provide more detailed information for debugging potential watermark regressions.

Highlights

  • MultimapState Fn API Support: The pull request introduces full implementation for MultimapState within the Beam Fn API, enabling users to retrieve all entries from a multimap state. This involves adding a new MultimapEntriesUserState message in the beam_fn_api.proto and providing a concrete implementation for the bindMultimap method in FnApiStateAccessor.
  • MultimapState Entry Retrieval: The MultimapUserState class now supports fetching all key-value entries, enhancing the capabilities of stateful processing. Corresponding tests have been added to validate this new functionality.
  • Typo Correction: A consistent typo from runnerCapabilites to runnerCapabilities has been corrected across the Fn API state accessor, improving code consistency and readability.
  • Spanner Changestream Logging Enhancement: Logging for the GCP Spanner Changestream Source has been enhanced to include partition creation time and output timestamp. This additional detail will aid in debugging potential watermark issues.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@acrites acrites closed this Sep 25, 2025
@codecov

codecov Bot commented Sep 26, 2025

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 56.80%. Comparing base (d26dbac) to head (60c258e).
⚠️ Report is 57 commits behind head on master.

Additional details and impacted files
@@             Coverage Diff              @@
##             master   #36289      +/-   ##
============================================
+ Coverage     54.93%   56.80%   +1.87%     
- Complexity     1617     3387    +1770     
============================================
  Files          1057     1220     +163     
  Lines        164425   185691   +21266     
  Branches       1165     3523    +2358     
============================================
+ Hits          90320   105476   +15156     
- Misses        71955    76881    +4926     
- Partials       2150     3334    +1184     
Flag Coverage Δ
java 70.41% <100.00%> (+2.04%) ⬆️
python 80.91% <ø> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@acrites
acrites deleted the changestream-logs branch April 13, 2026 17:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant