Skip to content

Fix/4222 sharepoint list item id collision - #4254

Open
falscherwiener1-svg wants to merge 4 commits into
elastic:mainfrom
falscherwiener1-svg:fix/4222-sharepoint-list-item-id-collision
Open

Fix/4222 sharepoint list item id collision#4254
falscherwiener1-svg wants to merge 4 commits into
elastic:mainfrom
falscherwiener1-svg:fix/4222-sharepoint-list-item-id-collision

Conversation

@falscherwiener1-svg

@falscherwiener1-svg falscherwiener1-svg commented Jul 22, 2026

Copy link
Copy Markdown

Closes https://github.com/elastic/connectors-py/issues/###

Checklists

Pre-Review Checklist

  • this PR does NOT contain credentials of any kind, such as API keys or username/passwords (double check config.yml.example)
  • this PR has a meaningful title
  • this PR links to all relevant github issues that it fixes or partially addresses
  • if there is no GH issue, please create it. Each PR should have a link to an issue
  • this PR has a thorough description
  • Covered the changes with automated tests
  • Tested the changes locally
  • Added a label for each target release version (example: v7.13.2, v7.14.0, v8.0.0)
  • For bugfixes: backport safely to all minor branches still receiving patch releases
  • Considered corresponding documentation changes
  • Contributed any configuration settings changes to the configuration reference
  • if you added or changed Rich Configurable Fields for a Native Connector, you made a corresponding PR in Kibana

Changes Requiring Extra Attention

  • Security-related changes (encryption, TLS, SSRF, etc)
  • New external service dependencies added.

Related Pull Requests

Release Note

Add per-item retry logic for transient HTTP status codes (429, 503)
in the bulk ingestion sink. Previously, individual items that failed
with transient errors inside a successful bulk response were sent
directly to the ErrorMonitor without retry, which could trigger a
premature TooManyErrors abort on a temporarily overloaded cluster.

Changes:
- Add TRANSIENT_STATUS_CODES constant (429, 503)
- Add _determine_action() helper to extract the bulk action key from a
  response item
- Add _extract_transient_failed_operations() to collect retryable
  items from a bulk response
- Add _retry_transient_item_failures() with exponential backoff that
  retries only the failed items
- Rewire _batch_bulk to call _retry_transient_item_failures before
  _process_bulk_response, so the ErrorMonitor only tracks failures
  after all retry attempts are exhausted
- Remove the now-unused retryable import and the dead _bulk_api_call
  function that was never invoked

Closes elastic#4002
…ns (elastic#4222)

SharePoint list GUIDs are only unique within a site collection.
When two site collections share a list GUID (e.g. via site templates
or migration), list_item documents from different sites collide on
the same _id and silently overwrite each other.

Include site_id in the _id construction to guarantee global uniqueness.
@artem-shelkovnikov

Copy link
Copy Markdown
Member

Please fill in the information in the PR body. Additionally, PR contains unrelated changes related to retrying bulk requests - they should not be here.

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.

2 participants