Skip to content

Conversation

ypeckstadt
Copy link
Contributor

@ypeckstadt ypeckstadt commented Oct 14, 2025

Description

This PR re-adds 3 CLI arguments that have been renamed during the data loader code migration from the standalone repository to the main ScalarDB repository and are causing backwards compatibility issues.

Those 3 CLI arguments being:

  • --threads
  • --start-exclusive
  • --end-exclusive

This PR makes sure the backwards compatibility is restored by re-adding them back as deprecated CLI arguments that do not show up in--help but are still there and working.

Related issues and/or PRs

Issue showing up after reviewing the data-loader documentation

Changes made

  • Re-added the 3 arguments
  • Added validation util method to check for duplicated arguments
  • Added validation for the deprecated arguments to make sure the user does not provide both at the same time
  • Added unit tests to cover the scenario where users pass in both deprecated and new arguments at the same time as well as tests for only passing in deprecated arguments

Checklist

The following is a best-effort checklist. If any items in this checklist are not applicable to this PR or are dependent on other, unmerged PRs, please still mark the checkboxes after you have read and understood each item.

  • I have commented my code, particularly in hard-to-understand areas.
  • I have updated the documentation to reflect the changes.
  • I have considered whether similar issues could occur in other products, components, or modules if this PR is for bug fixes.
  • Any remaining open issues linked to this PR are documented and up-to-date (Jira, GitHub, etc.).
  • Tests (unit, integration, etc.) have been added for the changes.
  • My changes generate no new warnings.
  • Any dependent changes in other PRs have been merged and published.

Additional notes (optional)

This would need to be updated in ScalarDB 3.16.0 and 3.16.1 release to really fix it. I suggest this one time I can just overwrite the jar file in the release for each version if allowed instead of doing a patch version.

Release notes

NA

@Copilot Copilot AI review requested due to automatic review settings October 14, 2025 03:50
@ypeckstadt ypeckstadt self-assigned this Oct 14, 2025
Copy link
Contributor

Summary of Changes

Hello @ypeckstadt, 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 focuses on enhancing the usability and stability of the data loader by reintroducing specific command-line arguments that were previously removed. The primary objective is to ensure that existing scripts and workflows relying on these arguments continue to function seamlessly, thereby preventing disruptions for users. Additionally, the changes include robust validation mechanisms to guide users toward the correct argument usage and prevent conflicts between old and new options.

Highlights

  • Backward Compatibility: Re-added three previously removed CLI arguments (--threads, --start-exclusive, --end-exclusive) to restore backward compatibility for the data loader.
  • Argument Validation: Implemented validation to prevent users from simultaneously specifying both the deprecated CLI arguments and their newer, preferred counterparts, ensuring clear usage.
  • Hidden Deprecated Options: The re-added deprecated arguments are marked as hidden, meaning they will not appear in the --help output, guiding users towards the current options while still supporting older configurations.
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.

Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR restores backward compatibility for the ScalarDB data loader CLI by re-adding three deprecated CLI arguments (--threads, --start-exclusive, and --end-exclusive) that were renamed during code migration. The deprecated options are hidden from help but remain functional, with validation to prevent users from specifying both old and new options simultaneously.

  • Adds deprecated CLI options with hidden visibility to maintain backward compatibility
  • Implements validation logic to prevent conflicting deprecated and new option usage
  • Adds comprehensive test coverage for the validation scenarios

Reviewed Changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
DataLoaderError.java Adds new error code for deprecated/new option conflict validation
ImportCommandOptions.java Adds deprecated --threads option and logic to apply deprecated values
ImportCommand.java Implements validation and application of deprecated thread option
ExportCommandOptions.java Adds deprecated --start-exclusive and --end-exclusive options with application logic
ExportCommand.java Implements validation for deprecated start/end exclusive options
ImportCommandTest.java Adds test coverage for deprecated thread option validation
ExportCommandTest.java Adds test coverage for deprecated start/end exclusive option validation

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Copy link
Contributor

@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 re-adds deprecated CLI arguments to maintain backward compatibility, which is a good improvement. The implementation is solid, including validation to prevent conflicts between old and new arguments, and tests to cover these new validations. I've provided a couple of suggestions to refactor duplicated code in both the main logic and the tests, which will improve the maintainability of the code.

@ypeckstadt ypeckstadt changed the title Re-add deprecated CLI arguments Re-add deprecated dataloader CLI arguments Oct 14, 2025
@ypeckstadt ypeckstadt changed the title Re-add deprecated dataloader CLI arguments Re-add deprecated Data Loader CLI arguments Oct 14, 2025
@ypeckstadt ypeckstadt changed the title Re-add deprecated Data Loader CLI arguments Add deprecated Data Loader CLI arguments Oct 14, 2025
…ataLoaderError.java

Co-authored-by: Mitsunori Komatsu <komamitsu@gmail.com>
@ypeckstadt ypeckstadt requested a review from komamitsu October 15, 2025 01:27
Copy link
Contributor

@komamitsu komamitsu left a comment

Choose a reason for hiding this comment

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

LGTM! 👍

Copy link
Collaborator

@brfrn169 brfrn169 left a comment

Choose a reason for hiding this comment

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

LGTM! Thank you!

Copy link
Contributor

@KodaiD KodaiD left a comment

Choose a reason for hiding this comment

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

LGTM. Thank you!

@ypeckstadt
Copy link
Contributor Author

@brfrn169 Is it ok for me to update the Data Loader JAR files on the release page for 3.16.0 and 3.16.1 once this PR is merged into the 3.16 branch? Or it is better to handle this in a different way?

@brfrn169
Copy link
Collaborator

Is it ok for me to update the Data Loader JAR files on the release page for 3.16.0 and 3.16.1 once this PR is merged into the 3.16 branch? Or it is better to handle this in a different way?

@ypeckstadt We can leave the existing JARs as they are and release the bug fix in the next patch version, 3.16.2.

Copy link
Contributor

@feeblefakie feeblefakie left a comment

Choose a reason for hiding this comment

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

LGTM! But, I left a question. PTAL!

@CommandLine.Option(
names = {DEPRECATED_THREADS_OPTION},
paramLabel = "<THREADS>",
description = "Deprecated: Use --max-threads instead",
Copy link
Contributor

@feeblefakie feeblefakie Oct 17, 2025

Choose a reason for hiding this comment

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

Just a question, but why threads are renamed to max-threads?
It creates threads dynamically within the max, so that the number could be lower than the max depending on workloads?

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants