Skip to content

fix: prevent bulk import retry loop for duplicate external IDs - #1334

Open
bcbogdan wants to merge 1 commit into
masterfrom
fix/bulk-import
Open

fix: prevent bulk import retry loop for duplicate external IDs#1334
bcbogdan wants to merge 1 commit into
masterfrom
fix/bulk-import

Conversation

@bcbogdan

Copy link
Copy Markdown
Contributor

Detect existing external ID mappings before insertion so permanent conflicts are reported as E031 instead of remaining in PROCESSING.

Summary

Bulk imports could remain in PROCESSING indefinitely when an imported user reused an existing external user ID.

The existing mapping was missed during validation, causing PostgreSQL to reject the insert. The worker classified that database error as transient and repeatedly retried it instead of marking the import as failed.

This ensures existing external ID mappings are detected before insertion, allowing the import to fail with E031 as expected.

Test Plan

(Write your test plan here. If you changed any code, please provide us with clear instructions on how you verified your
changes work. Bonus points for screenshots and videos!)

Documentation changes

(If relevant, please create a PR in our docs repo, or create a checklist here
highlighting the necessary changes)

Checklist for important updates

  • Changelog has been updated
    • If there are any db schema changes, mention those changes clearly
  • coreDriverInterfaceSupported.json file has been updated (if needed)
  • pluginInterfaceSupported.json file has been updated (if needed)
  • Changes to the version if needed
    • In build.gradle
  • If added a new paid feature, edit the getPaidFeatureStats function in FeatureFlag.java file
  • Had installed and ran the pre-commit hook
  • If there are new dependencies that have been added in build.gradle, please make sure to add them
    in implementationDependencies.json.
  • Update function getValidFields in io/supertokens/config/CoreConfig.java if new aliases were added for any core
    config (similar to the access_token_signing_key_update_interval config alias).
  • Issue this PR against the latest non released version branch.
    • To know which one it is, run find the latest released tag (git tag) in the format vX.Y.Z, and then find the
      latest branch (git branch --all) whose X.Y is greater than the latest released tag.
    • If no such branch exists, then create one from the latest released branch.
  • If added a foreign key constraint on app_id_to_user_id table, make sure to delete from this table when deleting
    the user as well if deleteUserIdMappingToo is false.
  • If added a new recipe, then make sure to update the bulk import API to include the new recipe.

Remaining TODOs for this PR

  • Item1
  • Item2

Detect existing external ID mappings before insertion so permanent
conflicts are reported as E031 instead of remaining in PROCESSING.
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.

1 participant