Skip to content

Conversation

@dentiny
Copy link
Owner

@dentiny dentiny commented Aug 29, 2025

Summary

Briefly explain what this PR does.

Related Issues

Closes # or links to related issues.

Changes

Checklist

  • Code builds correctly
  • Tests have been added or updated
  • Documentation updated if necessary
  • I have reviewed my own changes

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary of Changes

Hello @dentiny, 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 is focused on debugging and reproducing a specific issue within the data storage and compaction system. It introduces targeted diagnostic logging in key areas of the codebase and adds a detailed, self-contained integration test to simulate and verify complex data lifecycle operations, particularly concerning row deletions and the interaction between Mooncake and Iceberg snapshots.

Highlights

  • Debugging Output Added: Introduced several println! statements in compactor.rs and snapshot.rs to aid in debugging data compaction and Iceberg snapshot generation logic. These logs provide insights into row counts, filtered record batches, and snapshot parameters.
  • New Debugging Test Case: Added a comprehensive test_debug async function in tests.rs to reproduce and validate complex scenarios involving data appends, deletions, Mooncake snapshots, Iceberg snapshots, and data compaction. This test simulates specific file deletion states and verifies the final Iceberg snapshot content.
  • Test Utility Enhancements: A new utility function create_mooncake_snapshot_no_sync was added to table_operation_test_utils.rs for non-blocking snapshot creation in tests. Additionally, the visibility of sync_mooncake_snapshot_and_create_new_by_iceberg_payload was changed to pub(crate) for broader test utility.
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 in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

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 issue 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.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request appears to add a test case for reproducing a specific bug, likely related to concurrent data compaction and Iceberg snapshots. While the added test is valuable for regression, it includes several debugging print statements that should be removed from the production code. Additionally, the new test function should be given a more descriptive name to improve maintainability.

Comment on lines +221 to +227
if data_file_to_compact.file_id.file_id.0 == 10000000000014100 {
println!("10000000000014100 row num = {}, puffin deleted row number = {}", total_num_rows, deleted_rows_num);
}
if data_file_to_compact.file_id.file_id.0 == 10000000000014300 {
println!("10000000000014300 row num = {}, puffin deleted row number = {}", total_num_rows, deleted_rows_num);
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This block of println! statements appears to be for debugging. Please remove it before merging.

Comment on lines +237 to +247
if data_file_to_compact.file_id.file_id.0 == 10000000000014100 {
println!("10000000000014100 filtered record batch = {:?}", filtered_record_batch);
}
if data_file_to_compact.file_id.file_id.0 == 10000000000014300 {
println!("10000000000014300 filtered record batch = {:?}", filtered_record_batch);
}
if data_file_to_compact.file_id.file_id.0 == 10000000000059500 {
println!("10000000000059500 filtered record batch = {:?}", filtered_record_batch);
}


Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This block of println! statements also appears to be for debugging and should be removed.

}

#[tokio::test]
async fn test_debug() {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The test name test_debug is not descriptive. Please rename it to reflect the scenario being tested, for example, test_concurrent_compaction_and_iceberg_snapshot or something similar that captures the essence of this complex interaction test.

Suggested change
async fn test_debug() {
async fn test_concurrent_compaction_and_iceberg_snapshot() {

Comment on lines +582 to +588
println!("option = {:?}, flush by table write {}, flush lsn = {}, min ongoing {}",
opt.iceberg_snapshot_option,
flush_by_table_write,
flush_lsn,
task.min_ongoing_flush_lsn,
);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This println! statement appears to be for debugging. Please remove it before merging.

Comment on lines +603 to +605

println!("should have iceberg payload?");

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This println! statement also seems to be for debugging and should be removed.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants